<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>CIOを目指しつつの8makiのアレ &#187; Javascript</title>
	<atom:link href="http://blog.8maki.jp/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.8maki.jp</link>
	<description>俺と周りの変態リタラシーを埋める</description>
	<lastBuildDate>Sat, 28 Jan 2012 04:05:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.8maki.jp/tag/javascript/feed" />
		<item>
		<title>グラフだけじゃない、Data Visualizationフレームワーク集</title>
		<link>http://blog.8maki.jp/2010/01/javascript-data-visualization-library-not-only-for-charts.html</link>
		<comments>http://blog.8maki.jp/2010/01/javascript-data-visualization-library-not-only-for-charts.html#comments</comments>
		<pubDate>Mon, 18 Jan 2010 23:56:01 +0000</pubDate>
		<dc:creator>8maki</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[proposal]]></category>
		<category><![CDATA[survey]]></category>
		<category><![CDATA[テクノロジー]]></category>
		<category><![CDATA[デザイン]]></category>
		<category><![CDATA[Data Visualization]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Information Presentation]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://blog.8maki.jp/?p=585</guid>
		<description><![CDATA[
			
				
			
		
(8 free Data Visualization frameworks not only for charts [en])
相変わらずData Visualization関係で調査・開発を行っているのですが、その中でJavascriptのライブラリ・フレームワークを探す時間も多いです。
» 20 Fresh JavaScript Data Visualization Libraries
上記記事のようにまとめ記事が結構あって助かるのですが、ほとんどがCharts（グラフ）のライブラリなんですよね。Chartsも線グラフか、棒グラフか、円グラフか、、、みたいにライブラリ化される主要なグラフは8種類くらいしかなく、面白くない。
適切なデータに対して適切なVisualを関連付けるわけですから、もっと多くのVisualが考えられてもいいはず！
そこでChartsに限らない、もっと根本的にData Visualizationを扱っている有名どころのフレームワークをリストアップしてみました。
SIMILE Widgets Exhibit

MITのメディアラボがリリースしているFaceted Search用フレームワークです。HTMLを拡張したテンプレート言語を用いて、簡単にFaceted Searchと、検索結果のリッチなVisualizeを可能にしています。現在、リスト、テーブル、地図、Timeline、TimeplotといったVisualに対応しています。タブなどでVisualを切り替えられるので、ユーザーの目的にマッチした検索機能を提供することができます。
SIMILE Widgetsでは、他にもTimelineや、Timeplot、Runway(Coverflow)などのVisualもAPIとして個別に提供しています。
» SIMILE Widgets Exhibit &#8211; US President Search DEMO
ProtoVis

ProtoVisはStanfordのVisualizationフレームワークです。これは巷のライブラリと違い、グラフや地図、といった単位を1つの単位として扱わず、線や面、点といったもっと細かい部品単位でVisualを作成しています。どちらかというとProcessing.jsに近いかも。たくさんのDEMOが載っているので、それらを参考にかなり自由度の高いVisualを作成することができます。
» ProtoVis DEMO
Prefuse Flare (Flash)

Prefuse FlareもData Visualizationのフレームワークとして有名です。Prefuseは、Javaのフレームワークでしたが、今回Flashに対応しました。こちらも豊富なVisualを用意しており、SIMILE同様データ構造をしっかり設計しているので柔軟性が高く、Visualの切り替えや様々なVisualを拡張することができるようになっています。
また、Flashならでわの気持ちのいいインタラクションも高評価です。
» Flare DEMO
Style Chart

こちらは、javascriptでVisualのリクエストを投げるとサーバー側で画像を生成し、それを表示するというフレームワークです。Galleryを見る限りかなり豊富なVisualを扱えるようです。画像だからってアニメーションやアクションが行えないわけではなく、そこにもちゃんと対応しています。扱っているライブラリが少ない、レーダーチャート（スパイダーチャート）も用意している点がいいです。
» Style Chart Editor(DEMO)
» Style Chart Gallery
CanViz

有名なVisualizationフレームワークであるGraphvizのJavascript版です。主にグラフ構造のデータを描画するのに適しています。ただ、DEMOを見る限り、アニメーションやイベントの設定ができないようで、本当にVisualizeのためだけのフレームワークのようです。
» CanViz DEMO
Axiis (Flex)

こちらはAdobe FlexのVisualizationフレームワークです。インタラクティブなアクションがかなりリッチに作りこまれています。下記のBrowser Statisticsは一部で話題になりましたね。かなり自由度の高いフレームワークのようです。
» Axiis &#8211; Browser Statistics DEMO
Infovis

こちらもグラフ構造のデータ描画ライブラリとして有名です。フレームワークではないので個別のVisualを利用する形になります。グラフ構造しか扱えないのですが、この手のライブラリとしては珍しく、Weighted Graph（ノード間のパスに重みが付いている）/Directed Graph（パスに方向がある）、の描画にも対応しています。現時点で5種類のグラフ系、ツリー系のVisualがありますが、どれもよくできています。
» Infovis DEMO
RGraph
番外ですが、HTML5用のグラフ生成ライブラリも登場しています。HTML5なのでまだまだ本格導入は難しいかもしれませんが、相当クオリティ高く仕上がっており、今後が楽しみなライブラリです。
» RGraph DEMO
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.8maki.jp%2F2010%2F01%2Fjavascript-data-visualization-library-not-only-for-charts.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.8maki.jp%2F2010%2F01%2Fjavascript-data-visualization-library-not-only-for-charts.html&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>(<a href="http://analyst.8maki.jp/2010/01/20/data-visualization-frameworks-not-only-for-charts/" target="_blank">8 free Data Visualization frameworks not only for charts</a> [en])</p>
<p>相変わらずData Visualization関係で調査・開発を行っているのですが、その中でJavascriptのライブラリ・フレームワークを探す時間も多いです。</p>
<p>» <a href="http://sixrevisions.com/javascript/20-fresh-javascript-data-visualization-libraries/" target="_blank">20 Fresh JavaScript Data Visualization Libraries</a></p>
<p>上記記事のようにまとめ記事が結構あって助かるのですが、ほとんどがCharts（グラフ）のライブラリなんですよね。Chartsも線グラフか、棒グラフか、円グラフか、、、みたいにライブラリ化される主要なグラフは8種類くらいしかなく、面白くない。<br />
適切なデータに対して適切なVisualを関連付けるわけですから、もっと多くのVisualが考えられてもいいはず！</p>
<p>そこでChartsに限らない、もっと根本的にData Visualizationを扱っている有名どころのフレームワークをリストアップしてみました。</p>
<h4><a href="http://www.simile-widgets.org/" target="_blank">SIMILE Widgets Exhibit</a></h4>
<p><img class="aligncenter size-full wp-image-589" title="dv-js-library-simile" src="http://blog.8maki.jp/wp-content/uploads/2010/01/dv-js-library-simile.png" alt="dv-js-library-simile" width="550" height="260" /></p>
<p>MITのメディアラボがリリースしているFaceted Search用フレームワークです。HTMLを拡張したテンプレート言語を用いて、簡単にFaceted Searchと、検索結果のリッチなVisualizeを可能にしています。現在、リスト、テーブル、地図、Timeline、TimeplotといったVisualに対応しています。タブなどでVisualを切り替えられるので、ユーザーの目的にマッチした検索機能を提供することができます。</p>
<p>SIMILE Widgetsでは、他にも<a href="http://www.simile-widgets.org/timeline/" target="_blank">Timeline</a>や、<a href="http://www.simile-widgets.org/timeplot/" target="_blank">Timeplot</a>、<a href="http://www.simile-widgets.org/runway/" target="_blank">Runway(Coverflow)</a>などのVisualもAPIとして個別に提供しています。</p>
<p>» <a href="http://www.simile-widgets.org/exhibit/examples/presidents/presidents.html" target="_blank">SIMILE Widgets Exhibit &#8211; US President Search DEMO</a></p>
<h4><a href="http://vis.stanford.edu/protovis/" target="_blank">ProtoVis</a></h4>
<p><img class="aligncenter size-full wp-image-588" title="dv-js-library-protovis" src="http://blog.8maki.jp/wp-content/uploads/2010/01/dv-js-library-protovis.png" alt="dv-js-library-protovis" width="550" height="260" /></p>
<p>ProtoVisはStanfordのVisualizationフレームワークです。これは巷のライブラリと違い、グラフや地図、といった単位を1つの単位として扱わず、線や面、点といったもっと細かい部品単位でVisualを作成しています。どちらかというと<a href="http://processingjs.org/" target="_blank">Processing.js</a>に近いかも。たくさんのDEMOが載っているので、それらを参考にかなり自由度の高いVisualを作成することができます。</p>
<p>» <a href="http://vis.stanford.edu/protovis/ex/" target="_blank">ProtoVis DEMO</a></p>
<h4><a href="http://flare.prefuse.org/" target="_blank">Prefuse Flare (Flash)</a></h4>
<p><img class="aligncenter size-full wp-image-591" title="dv-js-library-prefuse" src="http://blog.8maki.jp/wp-content/uploads/2010/01/dv-js-library-prefuse.png" alt="dv-js-library-prefuse" width="550" height="261" /></p>
<p><a href="http://flare.prefuse.org/" target="_blank">Prefuse Flare</a>もData Visualizationのフレームワークとして有名です。<a href="http://prefuse.org/" target="_blank">Prefuse</a>は、Javaのフレームワークでしたが、今回Flashに対応しました。こちらも豊富なVisualを用意しており、SIMILE同様データ構造をしっかり設計しているので柔軟性が高く、Visualの切り替えや様々なVisualを拡張することができるようになっています。</p>
<p>また、Flashならでわの気持ちのいいインタラクションも高評価です。</p>
<p>» <a href="http://flare.prefuse.org/demo" target="_blank">Flare DEMO</a></p>
<h4><a href="hhttp://chart.inetsoft.com/" target="_blank">Style Chart</a></h4>
<p><img style="display: block; margin-left: auto; margin-right: auto; border: 0px initial initial;" title="dv-js-library-style-charts" src="http://blog.8maki.jp/wp-content/uploads/2010/01/dv-js-library-style-charts.png" alt="dv-js-library-style-charts" width="550" height="260" /></p>
<p>こちらは、javascriptでVisualのリクエストを投げるとサーバー側で画像を生成し、それを表示するというフレームワークです。Galleryを見る限りかなり豊富なVisualを扱えるようです。画像だからってアニメーションやアクションが行えないわけではなく、そこにもちゃんと対応しています。扱っているライブラリが少ない、<a href="http://chart.inetsoft.com/gallery/leSHhADy.png" target="_blank">レーダーチャート（スパイダーチャート）</a>も用意している点がいいです。</p>
<p>» <a href="http://chart.inetsoft.com/editor.html" target="_blank">Style Chart Editor(DEMO)</a><br />
» <a href="http://chart.inetsoft.com/gallery.html" target="_blank">Style Chart Gallery</a></p>
<h4><a href="http://code.google.com/p/canviz/" target="_blank">CanViz</a></h4>
<p><img class="aligncenter size-full wp-image-590" title="dv-js-library-canviz" src="http://blog.8maki.jp/wp-content/uploads/2010/01/dv-js-library-canviz.png" alt="dv-js-library-canviz" width="550" height="260" /></p>
<p>有名なVisualizationフレームワークである<a href="http://www.graphviz.org/" target="_blank">Graphviz</a>のJavascript版です。主にグラフ構造のデータを描画するのに適しています。ただ、DEMOを見る限り、アニメーションやイベントの設定ができないようで、本当にVisualizeのためだけのフレームワークのようです。</p>
<p>» <a href="http://www.ryandesign.com/canviz/" target="_blank">CanViz DEMO</a></p>
<h4><a href="http://www.axiis.org/index.html" target="_blank">Axiis (Flex)</a></h4>
<p><img class="aligncenter size-full wp-image-599" title="dv-js-library-axiis" src="http://blog.8maki.jp/wp-content/uploads/2010/01/dv-js-library-axiis.png" alt="dv-js-library-axiis" width="550" height="260" /></p>
<p>こちらはAdobe FlexのVisualizationフレームワークです。インタラクティブなアクションがかなりリッチに作りこまれています。下記のBrowser Statisticsは一部で話題になりましたね。かなり自由度の高いフレームワークのようです。</p>
<p>» <a href="http://www.axiis.org/examples.html" target="_blank">Axiis &#8211; Browser Statistics DEMO</a></p>
<h4><a href="http://thejit.org/" target="_blank">Infovis</a></h4>
<p><img class="aligncenter size-full wp-image-592" title="dv-js-library-infovis" src="http://blog.8maki.jp/wp-content/uploads/2010/01/dv-js-library-infovis.png" alt="dv-js-library-infovis" width="550" height="260" /></p>
<p>こちらもグラフ構造のデータ描画ライブラリとして有名です。フレームワークではないので個別のVisualを利用する形になります。グラフ構造しか扱えないのですが、この手のライブラリとしては珍しく、Weighted Graph（ノード間のパスに重みが付いている）/Directed Graph（パスに方向がある）、の描画にも対応しています。現時点で5種類のグラフ系、ツリー系のVisualがありますが、どれもよくできています。</p>
<p>» <a href="http://thejit.org/demos/" target="_blank">Infovis DEMO</a></p>
<h4><a href="http://www.rgraph.net/" target="_blank">RGraph</a></h4>
<p>番外ですが、HTML5用のグラフ生成ライブラリも登場しています。HTML5なのでまだまだ本格導入は難しいかもしれませんが、相当クオリティ高く仕上がっており、今後が楽しみなライブラリです。</p>
<p>» <a href="http://www.rgraph.net/examples/index.html" target="_blank">RGraph DEMO</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.8maki.jp/2010/01/javascript-data-visualization-library-not-only-for-charts.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.8maki.jp/2010/01/javascript-data-visualization-library-not-only-for-charts.html" />
	</item>
		<item>
		<title>FirefoxやChromeのPlugin開発に便利なnixysa</title>
		<link>http://blog.8maki.jp/2009/10/nixysa-npapi-gluecode-genereator.html</link>
		<comments>http://blog.8maki.jp/2009/10/nixysa-npapi-gluecode-genereator.html#comments</comments>
		<pubDate>Thu, 08 Oct 2009 16:42:49 +0000</pubDate>
		<dc:creator>8maki</dc:creator>
				<category><![CDATA[survey]]></category>
		<category><![CDATA[テクノロジー]]></category>
		<category><![CDATA[browser plugin]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[nixysa]]></category>
		<category><![CDATA[NPAPI]]></category>

		<guid isPermaLink="false">http://blog.8maki.jp/?p=523</guid>
		<description><![CDATA[
			
				
			
		
今日はかなりマニアックなネタです。FirefoxやGoogle Chromeのエクステンションを開発する際に、Native Codeにアクセスする必要がある人用のエントリですｗ
※エクステンションとプラグインという言葉は明示的に分けます。前者はFirefox-AddonやChrome-extensionといった拡張機能、後者はFlash Player PluginやAcrobat Reader Plugin等のNative Codeとして実行されるPluginを指します。
エクステンションからNative Codeを扱う場合、javascriptを用いてNPAPI経由でプラグイン(C++クラス)にアクセスする方法があります。NPAPIはMozillaがメインで進めている、ブラウザがプラグインを実行する際に使うAPIです。
ただ、レファレンスを見ていただけるとわかるのですが、とても面倒くさそうｗ C++の時点でWeb系Developerには障壁が高いのに、Windowの制御やGUI表現等数多くのAPIを抑えないといけないのが非常に厄介。
そこで登場したのが、nixysa。これは純粋なC++コードからNPAPIに準拠するコード、ブラウザから利用するプラグインを生成してくれる便利なGeneratorです。これを用いればNPAPIコードの部分を無視してプラグインの開発が行えます。
説明よりもソースをお見せした方が早いです。helloworld.ccのような純粋なC++コードからプラグインを生成し、helloworld.html内のjavascriptから呼べるようになります。
helloworld.h

#include &#60;string&#62;

class HelloWorld {
public:
HelloWorld() {}
std::string GetHw();
};
#endif  // HELLOWORLD_H

helloworld.cc

#include &#60;string&#62;
#include &#34;helloworld.h&#34;

std::string HelloWorld::GetHw() {
std::string hw;
hw = &#34;Hellow World&#34;;
return hw;
}

#ifndef HELLOWORLD_H
#define HELLOWORLD_H

↑「Hello World」を返すGetHwメソッドを持つHelloWorldクラスです。
helloworld.html

&#60;html&#62;
&#60;head&#62;
&#60;script type=&#34;text/javascript&#34;&#62;

function init() {
  var plugin = document.getElementById(&#34;plugin&#34;);
  var hw = plugin.HelloWorld();
  if (!hw) {
    alert(&#34;no plugin&#34;);
  }

  [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.8maki.jp%2F2009%2F10%2Fnixysa-npapi-gluecode-genereator.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.8maki.jp%2F2009%2F10%2Fnixysa-npapi-gluecode-genereator.html&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>今日はかなりマニアックなネタです。FirefoxやGoogle Chromeのエクステンションを開発する際に、Native Codeにアクセスする必要がある人用のエントリですｗ<br />
※エクステンションとプラグインという言葉は明示的に分けます。前者はFirefox-AddonやChrome-extensionといった拡張機能、後者はFlash Player PluginやAcrobat Reader Plugin等のNative Codeとして実行されるPluginを指します。</p>
<p>エクステンションからNative Codeを扱う場合、javascriptを用いて<a href="https://developer.mozilla.org/ja/Plugins" target="_blank">NPAPI</a>経由でプラグイン(C++クラス)にアクセスする方法があります。NPAPIはMozillaがメインで進めている、ブラウザがプラグインを実行する際に使うAPIです。</p>
<p>ただ、<a href="https://developer.mozilla.org/ja/Gecko_Plugin_API_Reference" target="_blank">レファレンス</a>を見ていただけるとわかるのですが、とても面倒くさそうｗ C++の時点でWeb系Developerには障壁が高いのに、Windowの制御やGUI表現等数多くのAPIを抑えないといけないのが非常に厄介。</p>
<p>そこで登場したのが、<a href="http://code.google.com/p/nixysa/wiki/NixysaIntro" target="_blank">nixysa</a>。これは純粋なC++コードからNPAPIに準拠するコード、ブラウザから利用するプラグインを生成してくれる便利なGeneratorです。これを用いればNPAPIコードの部分を無視してプラグインの開発が行えます。</p>
<p>説明よりもソースをお見せした方が早いです。helloworld.ccのような純粋なC++コードからプラグインを生成し、helloworld.html内のjavascriptから呼べるようになります。</p>
<p>helloworld.h</p>
<pre class="brush: cpp;">
#include &lt;string&gt;

class HelloWorld {
public:
HelloWorld() {}
std::string GetHw();
};
#endif  // HELLOWORLD_H
</pre>
<p>helloworld.cc</p>
<pre class="brush: cpp;">
#include &lt;string&gt;
#include &quot;helloworld.h&quot;

std::string HelloWorld::GetHw() {
std::string hw;
hw = &quot;Hellow World&quot;;
return hw;
}

#ifndef HELLOWORLD_H
#define HELLOWORLD_H
</pre>
<p>↑「Hello World」を返すGetHwメソッドを持つHelloWorldクラスです。</p>
<p>helloworld.html</p>
<pre class="brush: xml;">
&lt;html&gt;
&lt;head&gt;
&lt;script type=&quot;text/javascript&quot;&gt;

function init() {
  var plugin = document.getElementById(&quot;plugin&quot;);
  var hw = plugin.HelloWorld();
  if (!hw) {
    alert(&quot;no plugin&quot;);
  }

  alert(hw.getHw());
}
&lt;/script&gt;
&lt;/head&gt;

&lt;body onload=&quot;init()&quot;&gt;
&lt;object type=&quot;application/HelloWorld&quot; id=&quot;plugin&quot; width=&quot;0&quot; height=&quot;0&quot;&gt; &lt;/object&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>↑C++で書かれたHelloWorldクラスのgetHwメソッドの返り値をalertしています。&lt;object&gt;タグでHelloWorldプラグインの利用を明示しています。</p>
<p>本来ならNPAPIを使ったかなり長めのC++コードを書かないといけないのですが、こんな単純なC++コードだけでプラグインが開発できちゃうなんて、すばらしい！NPAPIのレファレンスをうんうん眺めなくても作れるというのが気楽。</p>
<p>なお、nixysaでプラグインを生成する際、PythonとSConsというMakeのようなコンパイラが必要です。SConsをapt-getでインストールする際、Python2.6だとエラーが出たので、Python2.5に戻すとインストールできました。実行環境はVMware Player上のUbuntu8.0.4です。sconsを指定のフォルダで実行するとlibhelloworld.soが生成され、これをブラウザのプラグインフォルダに追加するとプラグインとして使えるようになります。Windowsだとhelloworld.dllができるのかな？</p>
<pre class="brush: bash;">
sudo apt-get install scons
cd [PROJECT_HOME]/examples/helloworld
scons
</pre>
<p>プラグインを生成する際には、上記のC++コードに加え、SConsのMakefileにあたるSConstructファイルとC++クラスのIDLを用意する必要があります。そこが面倒くさいのですが、nixysaのパッケージに入っているサンプルプロジェクトの該当ファイルからパクればなんとかなりますｗ</p>
<p>今はSubversionで公開されているので、試してみたい方は下記のレポジトリから。</p>
<pre class="brush: bash;">
svn checkout http://nixysa.googlecode.com/svn/trunk/ nixysa-read-only
</pre>
<p>とは言え、まだまだ開発途上のプロジェクトなので、色々とバグがあったり、ドキュメントがほとんど無かったりしますので、ご注意を。</p>
<p>参考：<br />
» <a href="http://journal.mycom.co.jp/news/2009/04/03/039/index.html" target="_blank">Google Chrome/Firefoxプラグイン開発ツールNixysa登場</a><br />
» <a href="http://code.google.com/chrome/extensions/npapi.html" target="_blank"> NPAPI Plugins // Google Chrome Extensions: Developer Documentation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.8maki.jp/2009/10/nixysa-npapi-gluecode-genereator.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.8maki.jp/2009/10/nixysa-npapi-gluecode-genereator.html" />
	</item>
		<item>
		<title>AjaxフレームワークのYUI2.8.0がHTML5ライクなクライアントストレージに対応</title>
		<link>http://blog.8maki.jp/2009/09/yui2-8-0_html5_like_localstorage.html</link>
		<comments>http://blog.8maki.jp/2009/09/yui2-8-0_html5_like_localstorage.html#comments</comments>
		<pubDate>Thu, 24 Sep 2009 00:21:51 +0000</pubDate>
		<dc:creator>8maki</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[survey]]></category>
		<category><![CDATA[テクノロジー]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Web Storage]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://blog.8maki.jp/?p=487</guid>
		<description><![CDATA[
			
				
			
		
Ajax JavaScriptフレームワークのYUI (Yahoo! User Interface Library) が、最新版の2.8.0でHTML5ライクなクライアントストレージに対応していました。
YUI 2.8.0における注目の新機能は次のとおり。

HTML5スタイルのローカルセッションストレージを提供するクライアントストレージメタコンポーネントStorage Utility (Matt Sinder氏提供)の導入。HTML5ストレージ、Google Gears、Flash共有オブジェクトをサポート
さまざまな用途に適用できるプログレスバーコンポーネント ProgressBar (Daniel Barreiro氏提供)の導入
接続マネージャにおけるクロスドメインサポートの実現
イベントデリゲーションサポートの実現
カルーセルウィジェットにギャラリーモードを追加
チャートにおける複数軸表示のサポート

» Yahoo! UI最新版登場、クライアントストレージ &#124; エンタープライズ &#124; マイコミジャーナル
細かく見ると色々と便利な機能がついていますが、個人的にクライアントストレージが時代に沿っているというか、HTML5が注目されだしている昨今、非常にタイムリーで目を引きました。
とその前に、ざっとHTML5のおさらい（といっても理解が不十分だったのでこれを機に調べたのですがf^^;）。
HTML5 まとめ
HTML5の注目点は、新しいマークアップ（タグの整理）と新しいAPIの対応です。
■ 新しいマークアップ

 検索インデックスされやすいように構造化
より構造的な文を生成できるように&#60;nav&#62;や、&#60;section&#62;といったタグが追加されました。

マルチメディア対応
&#60;audio&#62;や&#60;movie&#62;といったマルチメディアタグにより、javascriptやFlashを使わなくても音声・動画の再生ができるようになりました。

Flashのような自由な2D表現
&#60;canvas&#62;タグで簡単にJava Appletのような豊かな2D表現ができるようになりました。


■ 新しいAPI

ドラッグ＆ドロップ
戻るボタン
O3D
ブラウザのプラグインとして提供されているO3Dをjavascriptから制御できるようになります。例えばGoogle Earthがこれを使ってブラウザ上で3D表現を可能にしていまいす。

Geolocation
1，2カ月程前に話題になりましたが、Firefox3.5でGoogle Mapを開くと現在地を表示できます。これはGeolocation APIを使っていて、javascriptから位置情報にアクセスできるからこそできる機能です。モバイルのブラウザのエンジンとして標準化しだしているWebkitでも実装が進んでいて、モバイル分野でかなり使われそうなAPIです。

Web Storage
javascriptでクライアントにデータを保存することができるAPIです。このときデータベースのようにSQLを用いてデータを保存することもできるようです。こちらにサンプルコードが記載されています。

Web Workers
バックグラウンドでjavascriptを動かせるようになります。いわばjavascriptスレッドです。繊細なUI処理に影響させることなく、重い処理を裏で行うことができるようになります。

Web Sockets
サーバサイドプロセスと双方向に通信することを可能にするAPIです。


HTML5のより詳しい記述はこちらへ↓
»  グーグルが賭けるHTML 5の未来 － ＠IT
» HTML 5 ― HTML 4 からの変更点 W3C 草案 (Working Draft)
YUI2.8.0 Storage Utility
さて、今回のYUI2.8.0のStorage Utilityですが、HTML5のWeb Storage (FireFox 3, Safari 4, IE [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.8maki.jp%2F2009%2F09%2Fyui2-8-0_html5_like_localstorage.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.8maki.jp%2F2009%2F09%2Fyui2-8-0_html5_like_localstorage.html&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Ajax JavaScriptフレームワークの<a href="http://developer.yahoo.com/yui/" target="_blank">YUI (Yahoo! User Interface Library) </a>が、最新版の2.8.0でHTML5ライクなクライアントストレージに対応していました。</p>
<blockquote><p>YUI 2.8.0における注目の新機能は次のとおり。</p>
<ul>
<li>HTML5スタイルのローカルセッションストレージを提供するクライアントストレージメタコンポーネントStorage Utility (Matt Sinder氏提供)の導入。HTML5ストレージ、Google Gears、Flash共有オブジェクトをサポート</li>
<li>さまざまな用途に適用できるプログレスバーコンポーネント ProgressBar (Daniel Barreiro氏提供)の導入</li>
<li>接続マネージャにおけるクロスドメインサポートの実現</li>
<li>イベントデリゲーションサポートの実現</li>
<li>カルーセルウィジェットにギャラリーモードを追加</li>
<li>チャートにおける複数軸表示のサポート</li>
</ul>
<p>» <a href="http://journal.mycom.co.jp/news/2009/09/18/037/index.html" target="_blank">Yahoo! UI最新版登場、クライアントストレージ | エンタープライズ | マイコミジャーナル</a></p></blockquote>
<p>細かく見ると色々と便利な機能がついていますが、個人的にクライアントストレージが時代に沿っているというか、HTML5が注目されだしている昨今、非常にタイムリーで目を引きました。</p>
<p>とその前に、ざっとHTML5のおさらい（といっても理解が不十分だったのでこれを機に調べたのですがf^^;）。</p>
<h4>HTML5 まとめ</h4>
<p>HTML5の注目点は、新しいマークアップ（タグの整理）と新しいAPIの対応です。</p>
<p style="margin-bottom:0;">■ 新しいマークアップ</p>
<ul>
<li> 検索インデックスされやすいように構造化
<p style="margin-left: 15px; margin-bottom: 2px;">より構造的な文を生成できるように&lt;nav&gt;や、&lt;section&gt;といったタグが追加されました。</p>
</li>
<li>マルチメディア対応
<p style="margin-left: 15px; margin-bottom: 2px;">&lt;audio&gt;や&lt;movie&gt;といったマルチメディアタグにより、javascriptやFlashを使わなくても音声・動画の再生ができるようになりました。</p>
</li>
<li>Flashのような自由な2D表現
<p style="margin-left: 15px; margin-bottom: 2px;">&lt;canvas&gt;タグで簡単にJava Appletのような豊かな2D表現ができるようになりました。</p>
</li>
</ul>
<p style="margin-bottom:0;">■ 新しいAPI</p>
<ul>
<li>ドラッグ＆ドロップ</li>
<li>戻るボタン</li>
<li>O3D
<p style="margin-left: 15px; margin-bottom: 2px;">ブラウザのプラグインとして提供されているO3Dをjavascriptから制御できるようになります。例えばGoogle Earthがこれを使ってブラウザ上で3D表現を可能にしていまいす。</p>
</li>
<li>Geolocation
<p style="margin-left: 15px; margin-bottom: 2px;">1，2カ月程前に話題になりましたが、Firefox3.5でGoogle Mapを開くと現在地を表示できます。これはGeolocation APIを使っていて、javascriptから位置情報にアクセスできるからこそできる機能です。モバイルのブラウザのエンジンとして標準化しだしているWebkitでも実装が進んでいて、モバイル分野でかなり使われそうなAPIです。</p>
</li>
<li>Web Storage
<p style="margin-left: 15px; margin-bottom: 2px;">javascriptでクライアントにデータを保存することができるAPIです。このときデータベースのようにSQLを用いてデータを保存することもできるようです。<a href="http://journal.mycom.co.jp/articles/2009/06/15/gdd1/001.html" target="_blank">こちら</a>にサンプルコードが記載されています。</p>
</li>
<li>Web Workers
<p style="margin-left: 15px; margin-bottom: 2px;">バックグラウンドでjavascriptを動かせるようになります。いわばjavascriptスレッドです。繊細なUI処理に影響させることなく、重い処理を裏で行うことができるようになります。</p>
</li>
<li>Web Sockets
<p style="margin-left: 15px; margin-bottom: 2px;">サーバサイドプロセスと双方向に通信することを可能にするAPIです。</p>
</li>
</ul>
<p>HTML5のより詳しい記述はこちらへ↓<br />
» <a href="http://www.atmarkit.co.jp/news/200905/28/html5.html" target="_blank"> グーグルが賭けるHTML 5の未来 － ＠IT</a><br />
» <a href="http://standards.mitsue.co.jp/resources/w3c/TR/html5-diff/" target="_blank">HTML 5 ― HTML 4 からの変更点 W3C 草案 (Working Draft)</a></p>
<h4>YUI2.8.0 Storage Utility</h4>
<p>さて、今回のYUI2.8.0の<a href="http://developer.yahoo.com/yui/storage/">Storage Utility</a>ですが、HTML5のWeb Storage (FireFox 3, Safari 4, IE 8以上必要) に対応しているだけでなく、HTML5未対応のブラウザのためにGoogle GearsやSWFファイル(Flash Player 9.0.115以上必要)を使って本機能を実装しています。もちろんセッションでの保存にも対応しています。</p>
<p>YUIのサンプルで動いているのを確認しました。ウィンドウを閉じても文章が保存されていて感動。<br />
» <a href="http://developer.yahoo.com/yui/examples/storage/storage-simple_clean.html" target="_blank"> Simple Storage Example — Saving In-Progress Text Entry</a></p>
<p>コードもstorageEngineオブジェクトを用意してゲッター/セッターで入れるだけというシンプルさ。色々な場面で使う機会が出てきそうです。</p>
<pre class="brush: jscript;">
var storageEngine = YAHOO.util.StorageManager.get(
  YAHOO.util.StorageEngineGears.ENGINE_NAME,
  YAHOO.util.StorageManager.LOCATION_LOCAL,
  {
    order: [
      YAHOO.util.StorageEngineGears,
      YAHOO.util.StorageEngineSWF,
      YAHOO.util.StorageEngineHTML5
    ],
  force: false
}
);
～中略～
storageEngine.getItem(&quot;simple-storage-textentry&quot;);
storageEngine.setItem(&quot;simple-storage-textentry&quot;, YAHOO.util.Dom.get(&quot;textentry&quot;).value);
</pre>
<p>なお、容量としてHTML5は5～10MB、Google GearsはSQLiteを使用していて最大2GB、SWFは100KBまで利用できるようです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.8maki.jp/2009/09/yui2-8-0_html5_like_localstorage.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.8maki.jp/2009/09/yui2-8-0_html5_like_localstorage.html" />
	</item>
		<item>
		<title>最新ブラウザに見る昨今のJavascript事情</title>
		<link>http://blog.8maki.jp/2009/02/newbrowser_and_javascript.html</link>
		<comments>http://blog.8maki.jp/2009/02/newbrowser_and_javascript.html#comments</comments>
		<pubDate>Tue, 17 Feb 2009 03:38:20 +0000</pubDate>
		<dc:creator>8maki</dc:creator>
				<category><![CDATA[survey]]></category>
		<category><![CDATA[テクノロジー]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[googleTechTalk]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://blog.8maki.jp/?p=307</guid>
		<description><![CDATA[
			
				
			
		
先日、会社で勉強会を行いました。  私がモデレーターを仰せつかったので、最近ひたすら実装に使っているJavascriptについて調査。
下記の動画を元に、各ブラウザの新バージョンの比較と、昨今のJavascrip事情についてシェアしました。

前半では、各ブラウザの新バージョンについて比較しています。簡単に表にまとめてみます。↓



 
リリース
新機能


Firefox 3.1
2009年春


パフォーマンスの向上
ビデオ/オーディオタグの追加
プライベートモードの追加




Safari 4
OS X 10.6 に合わせて


パフォーマンスの向上
デスクトップアプリケーションとしての機能向上
ACID3にパス
Revampled dev tools の追加




Internet Explorer 8
2009年初旬


バックグラウンドでの処理
Web Clips機能の追加
タブごとにプロセスが動作




Opera 10
2009年予定


ACID3にパス
ビデオ/オーディオタグの追加




Google Chrome
2008年11月に1.0リリース


プライベートモード（シークレットモード）
タブごとにプロセスが動作





注目すべきは、IE8 もタブごとのプロセス動作になる、ということでしょうか。  加えてFF3.1 とOpeara10で、ビデオ/オーディオタグがサポートされます。そうするとFlashで動画を見る必要もなくなるかもしれませんね。
Firefox 3.1では、オープンソースのオーディオコーデック「Ogg Vorbis」およびビデオコーデック「Ogg Theora」に対するネイティブサポートが追加される見通しだ。また、新版ではこのほかに「HTML5」がサポートされるもようで、これによりFirefox 3.1では音声および動画のhtmlタグが機能するようになる。
» 「Firefox 3.1」ベータ版リリースは8月19日を目標に&#8211;「HTML5」をサポート:ニュース &#8211; CNET Japan
 注目の速さに関しては、以下のようなグラフで説明されていました。ちなみに3種類のツールで出した結果のひとつです。（見にくいですが、Chrome b1 &#62; Safari 4.0 &#62; Firefox 3.1 &#62; Firefox 3.0.1 &#62; Safari 3.1.2 &#62; Opeara 9.5.2 &#62; IE 8b2 &#62; IE 7 となっています）

また、動画の後半では、新しく導入されるJavascriptの新機能（新関数）の紹介がされています。



 
特徴
対応ブラウザ


postMessage
別のiframeに対してメッセージを送れる。
全ブラウザ


Cross-Domain XHR
クロスドメインでも扱えるXMLHttpRequest
FF3.1/IE8


Class Name
getElementByClassNameによるエレメントの取得
Safari3.1/FF3.0/Opera9.6


Selector API
document.querySelectorAll(&#8221;div p&#8221;)のようにエレメント取得を簡易化
IE8/Safari4/FF3/Opera10


Traversal [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.8maki.jp%2F2009%2F02%2Fnewbrowser_and_javascript.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.8maki.jp%2F2009%2F02%2Fnewbrowser_and_javascript.html&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>先日、会社で勉強会を行いました。  私がモデレーターを仰せつかったので、最近ひたすら実装に使っているJavascriptについて調査。</p>
<p><a href="http://www.youtube.com/watch?v=bsad6dr8Kzo&amp;eurl=http://blog.8maki.jp/" target="_blank">下記の動画</a>を元に、各ブラウザの新バージョンの比較と、昨今のJavascrip事情についてシェアしました。</p>
<p align="center"><object width="425" height="344" data="http://www.youtube.com/v/bsad6dr8Kzo&amp;hl=ja&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/bsad6dr8Kzo&amp;hl=ja&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p>前半では、各ブラウザの新バージョンについて比較しています。簡単に表にまとめてみます。↓</p>
<table border="0">
<tbody>
<tr>
<td> </td>
<td>リリース</td>
<td>新機能</td>
</tr>
<tr>
<td>Firefox 3.1</td>
<td>2009年春</td>
<td>
<ul>
<li>パフォーマンスの向上</li>
<li><span style="color: #ff0000;">ビデオ/オーディオタグの追加</span></li>
<li>プライベートモードの追加</li>
</ul>
</td>
</tr>
<tr>
<td>Safari 4</td>
<td>OS X 10.6 に合わせて</td>
<td>
<ul>
<li>パフォーマンスの向上</li>
<li>デスクトップアプリケーションとしての機能向上</li>
<li><a href="http://ja.wikipedia.org/wiki/Acid3" target="_blank">ACID3</a>にパス</li>
<li>Revampled dev tools の追加</li>
</ul>
</td>
</tr>
<tr>
<td>Internet Explorer 8</td>
<td>2009年初旬</td>
<td>
<ul>
<li>バックグラウンドでの処理</li>
<li>Web Clips機能の追加</li>
<li><span style="color: #ff0000;">タブごとにプロセスが動作</span></li>
</ul>
</td>
</tr>
<tr>
<td>Opera 10</td>
<td>2009年予定</td>
<td>
<ul>
<li>ACID3にパス</li>
<li><span style="color: #ff0000;">ビデオ/オーディオタグの追加</span></li>
</ul>
</td>
</tr>
<tr>
<td>Google Chrome</td>
<td>2008年11月に1.0リリース</td>
<td>
<ul>
<li>プライベートモード（シークレットモード）</li>
<li><span style="color: #ff0000;">タブごとにプロセスが動作</span></li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>注目すべきは、IE8 もタブごとのプロセス動作になる、ということでしょうか。  加えてFF3.1 とOpeara10で、ビデオ/オーディオタグがサポートされます。そうするとFlashで動画を見る必要もなくなるかもしれませんね。</p>
<blockquote><p>Firefox 3.1では、オープンソースのオーディオコーデック「Ogg Vorbis」およびビデオコーデック「Ogg Theora」に対するネイティブサポートが追加される見通しだ。また、新版ではこのほかに「HTML5」がサポートされるもようで、これによりFirefox 3.1では音声および動画のhtmlタグが機能するようになる。</p>
<p>»<a href="http://japan.cnet.com/news/media/story/0,2000056023,20378488,00.htm" target="_blank"> 「Firefox 3.1」ベータ版リリースは8月19日を目標に&#8211;「HTML5」をサポート:ニュース &#8211; CNET Japan</a></p></blockquote>
<p> 注目の速さに関しては、以下のようなグラフで説明されていました。ちなみに3種類のツールで出した結果のひとつです。（見にくいですが、Chrome b1 &gt; Safari 4.0 &gt; Firefox 3.1 &gt; Firefox 3.0.1 &gt; Safari 3.1.2 &gt; Opeara 9.5.2 &gt; IE 8b2 &gt; IE 7 となっています）</p>
<p><img class="aligncenter size-full wp-image-314" title="browser_speed" src="http://blog.8maki.jp/wp-content/uploads/2009/02/browser_speed.png" alt="browser_speed" width="357" height="310" /></p>
<p>また、動画の後半では、新しく導入されるJavascriptの新機能（新関数）の紹介がされています。</p>
<table border="0">
<tbody>
<tr>
<td> </td>
<td>特徴</td>
<td>対応ブラウザ</td>
</tr>
<tr>
<td>postMessage</td>
<td>別のiframeに対してメッセージを送れる。</td>
<td>全ブラウザ</td>
</tr>
<tr>
<td>Cross-Domain XHR</td>
<td>クロスドメインでも扱えるXMLHttpRequest</td>
<td>FF3.1/IE8</td>
</tr>
<tr>
<td>Class Name</td>
<td>getElementByClassNameによるエレメントの取得</td>
<td>Safari3.1/FF3.0/Opera9.6</td>
</tr>
<tr>
<td>Selector API</td>
<td>document.querySelectorAll(&#8221;div p&#8221;)のようにエレメント取得を簡易化</td>
<td>IE8/Safari4/FF3/Opera10</td>
</tr>
<tr>
<td>Traversal API</td>
<td>エレメント間の移動の簡易化（.nextElementSiblingなど）</td>
<td>全ブラウザ</td>
</tr>
<tr>
<td>HTML5 Dragging</td>
<td>HTML5のドラッグ＆ドロップイベントをサポート</td>
<td>FF3.1</td>
</tr>
<tr>
<td>Bounding</td>
<td>getBoundingClinetRectメソッドにより、エレメントの絶対位置を取得</td>
<td>IE</td>
</tr>
<tr>
<td>Javascript Threads</td>
<td>Javascriptのスレッド化</td>
<td> </td>
</tr>
</tbody>
</table>
<p>特筆すべきはやはりJavascriptのスレッド化ですが、うちの社長いわく、「Javascriptをスレッド化したらDOMの処理とかめんどくさそうだよね」とのこと。ロックでもかけたりするのでしょうか。本動画の例でも、３D画像の描画を使っていて、DOMの扱いは触れられていませんでした。（もしかしたら口頭でしゃべってたかも）</p>
<p>とはいえ、Javascriptも日々進化しており、本格的にJavascriptを中心としたブラウザの開発が進んでいることが実感される動画でした。</p>
<p>ちなみに、スピーカーの<a href="http://ejohn.org/" target="_blank">John Resig</a>さんはｊQueryの作者としても有名みたいです。Mozilla でJavascriptのエバンジェリストとして働かれているようで、Javascriptのプロですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.8maki.jp/2009/02/newbrowser_and_javascript.html/feed</wfw:commentRss>
		<slash:comments>708</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.8maki.jp/2009/02/newbrowser_and_javascript.html" />
	</item>
	</channel>
</rss>

