どうやら、ウィジェットというジャンルが成立しようとしているようだ。
ウィジェットとは、ウインドウとガジェットを合わせた造語で、最初に使われたのはUNIXのX Window Systemを構成する GUI部品のことだと思うが、今回取り上げるのは、それではない。
大ざっぱにくくれば、Webとの連携を前提にしている、単機能の小アプリケーションのことで。具体的には、Yahoo! Widget(Konfabulator)やDashboardという環境で動くもの。
小さなアプリケーションと言う意味では、JAVAアプレットやAppleScriptアプレット等のアプレットと似たものだが、ウィジェットはグラフィック側面が大きい。
ただし、技術的なものとしては、きわめて近い位置にあるものと言え、アプレットをウィジェット的に作る事も、その逆も可能だ。
KonfabulatorもDashboardも、その記述言語にJavaScript(ECMAScript)を採用している。
JavaScriptはそもそもがHTMLを補完する形で成立した言語である。そのためGUI制御のための仕組みが組み込まれているし、Webとの連携も前提のものとなっている。
逆に言えば、perl等の多くのスクリプト言語には、スクリプト作りの主流ではないもののGUI構築の仕組みがあるし、Web機能もJavaScriptよりも充実している面もある。
つまり、スクリプト言語は全てウィジェット的なものが作れると言う事である。
ここで本稿におけるウィジェットを、きちんと定義しておこう。
Web連携機能があるが、ブラウザとは独立している、OSより上の実行環境で動く、小アプリケーションを「ウィジェット」と言う。
では、ざっくりと歴史を辿ってみよう。
まずアプリケーションのフロントエンドとして、HTMLが使われるようになった。
CGIによる掲示板で、いまでもよく目にする。
HTMLを間に置く事によって、様々なプラットフォームに対応できるし、ネットワークを介しているのでインタフェースのアップデートやメンテナンスも容易、データは集中的に管理できる。など、メリットが多く普及したが、ハードな使用には特にキーボードによるインタフェースが貧弱である等の問題もあった。
つぎにRIA(Rich Internet Applicatoin)と言われるジャンルがある。
ブラウザで実行されるが、HTMLに依存しない形で、プラグインを使いインタフェースを実装する。Webアプリケーションのことだ(とも限らないが)。
JavaアプレットやFlashがコレに当たるが、動的に情報を読み込む事で、ページ移動を伴わずにデータを読み込み、表示の変更を行えることも利点である。
ただ、リッチなインタフェースという意味では、JavaScriptのDOM対応がなされた事もあり、HTML+CSS+JavaScriptでも、十分なものが提供できるようになっているので、RIAの意味は薄れている。
またJavaScriptに、Ajaxという動的にデータを読み込む仕組みが用意されたため、動的生成という面でもRIAの意味は薄れている。
ブラウザで実行される以上、ウインドウと言う枠に捕われるという制約がある。株価や天気を表示したいだけの場合、無駄だし邪魔である。
ウィジェットのもう一つの定義は、「ウインドウ枠のないウェブブラウザ」と言っても良い。特にDashboardの場合、まるきりそうだ。
インタフェースとしてもブラウザ用のものは邪魔である、特にロケーションバーが、様々な「ハック」の温床となるので邪魔。もう少し、独立したアプリケーションよりのインタフェースが欲しいところだ。
そんな諸々の欲求により、最初に定義した「Web連携機能があるが、ブラウザとは独立している、OSより上の実行環境で動く、小アプリケーション」ウィジェットが登場する事になる。
Macのデスクアクセサリとか、DOS時代のSideKickという、小さなアプリケーションは、ずっと以前も必要とされていた。
これらのアプリケーションは、一度は主にRAMの増加や(疑似)マルチタスクにより姿を消したが、今またウィジェットという形で復活したという流れがある。
以前のアクセサリは、リソースの不足から現れたシステムだが、ウィジェットは「有り余るリソースの無駄遣いの場」という側面もある。
1995年にOracle 社(Larry Ellison)の提唱した、アプリケーションやデータを回線を通じてダウンロードして実行する、ネットワークコンピュータ(Network Computer)のモデルが、いよいよこの段階で現実味を帯びてきた、という見方もできる。
現在、ウィジェット実行環境として既に動いているものや、これからリリースされるものを、ざっくりと並べてみた。
元々は、Mac OS X上のみのマイナーな環境であったKonfabulatorであるが、Windows版のリリース、そしてYahoo!に買収されて無料化のプロセスを経て、一気に有力な環境に躍り出た感がある。
専用のXML+ECMAScript(JavaScript)で作られていて、非常にシンプルな作りであり、ウィジェットに必要ない機能はついていない。
XMLでネットワーク配信という形を取る予定もあるとの話だが、Webページ的な感覚で使えるようになるのか、だとしてセキュリティの問題はどうなるのか、これまでのウィジェットとの兼ね合いはどうなるのか、まだ不透明だが、さらなる新たな動きに期待したい。
現状ではMac OS Xの10.4(Tiger)以降でしか動作しない。
しかし、その根幹技術はXHTML+CSS+ECMAScript(JavaScript)であり、W3C等の標準化団体の提唱しているオープンな規格に準拠しているため、むしろKonfabulatorよりもマルチプラットフォームを睨んでいる技術と言えるのである。
ぶっちゃけ、ほとんどWebページと一緒という技術だ。その分ウィジェットに不要な機能も多い。
そんなわけで今後、iTunesと同様にDashboardもマルチプラットフォーム化が進む可能性は高い。AppleはDashboardウィジェット開発の指針として、表面にAqua(Mac OS X)部品を使わない、という項目を設けているぐらいである。そして、コアであるWebKitはオープンソース化している。
さらには、Appleのウィジェットは、それがDashboard上でしか動かないなら必要ない筈のIEにも対応できるコードで書かれている。
今は、Mac OS Xという狭い世界にあるDashboardだが、なかなかに侮れない存在である。
Googleウィジェットと言っても過言ではないGoogle Desktopプラグインは、現状はWindows環境だけでしか動かないが、検索ツールとの親和性が非常に高いのが特徴…らしい。
Google MapやGoogle Mail等を見ても分かる通り、Googleは今最も攻撃的なJavaScriptウィザードが揃っている会社である。Google Desktopから展開しないとしても、Googleはウィジェットというジャンルに必ず絡んでくるプレイヤーというのは間違いない。
XULというインタフェース記述言語は、Mozzila系ユーザには既におなじみだ。
そのプラットフォームの特徴から、コンピュータ技術に詳しいユーザーが揃っていて、かなり凝ったプラグインも作られている。
Mozzila系アプリケーションにプラットフォームが限定されているのが痛いところだが、オープンソース技術であるので、今後の展開は予断を許さない。
Microsoftもこの流れを無視している訳ではない。近々の事としては、MSN Toolbarにウィジェットを追加する機能が付けられるそうだ。
ただこれ、Mac OS Xユーザーには関係ない話だ。
直接ウィジェットというわけではないが、Microsoftの次期グラフィックプログラムであるアヴァロン(Avalon)は、XAMLと言われるXMLによるアプリケーション構築言語を使える。このあたりはKonfabulatorと似ている。
また、Web情報をデスクトップに表示する仕組みとしては、IE4(Windows版のみ)からWebページをデスクトップに表示する、アクティブデスクトップという機能を導入している。これは、極めてウィジェットに近い。ウィジェットとしてページを作りさえすれば、ウィジェットと言い切ってもいい。
他にもMSには、スマートクライアントというアプリケーションそのものを配信するという、セキュリティ的に乱暴なシステムもある。直接このシステムが普及するのではなく、アプリケーションよりも軽いウィジェット配信という形で、日の目を見そうだ。
そして先頃、極めてウィジェット的な技術であるAtlasやWPF/E(Windows Presentation Foundation Everywhere)も発表された。
ただ、MSがウィジェットという世界でのプレイヤーとなるのはWindows Vistaが普及してから後だ。
Vista自体リリースされていない今は、Vistaが普及するかどうかすら怪しい、色々面白い動きは見えるものの、今は無視したほうがいいだろう。
そしてFlash陣営はMacromedia Flash Platform 構想をぶち上げた。
絵に描いた餅、という言葉が頭をよぎるが、今やFlashはWeb上のマルチメディアプレイヤーとして、最もメジャーと言っても良い地位を持っているので侮れない。
Flexというシステムでは、MXML(Macromedia Flex Markup Language)というXMLによるインタフェース記述言語とActionScript(ECMAScript)という制御言語を使う。サーバがRIAを提供するためのシステムだが、これはかなりウィジェット的でもある。
AdobeとMacromediaが合併することにより、メディアプレイヤーからウィジェット的なものへ形を変えデスクトップ進出する野望がより先鋭化してくるかもしれない。
多くのプラットフォームで稼働する実行環境と言う意味では、Flash以上であるJAVAも、ウィジェット環境として有望である。
ただ、JAVAを強く押し進めてきたSunが、その中核と言っても良いビル=ジョイ(Bill Joy)の退社などで象徴されるように、今や「沈みかけの船」ではないか、という見解を持つ人も多い。
JAVAのリッチクライアントシステムはJSPというものがあり、どちらかと言うと、サーバ側でウィジェットを支えるものになりそうだ。
SVGは、ベクトルグラフィックのフォーマットであるが、JavaScriptで制御できる。
この技術がウィジェットとして再生するってことはなさそうだが、全くないとも言い切れないような状況でもある。
実際、RIAのフロントエンドとしてSVGを使うシステムもある。
SVGに限らず、一見関係なさそうな技術が再生する場としての可能性を、ウィジェットというジャンルは秘めていそうだ。
HyperCardがウィジェットにならんかなー!
現在、多くが混在している状況だが、最終的にも混在して存在することになるだろう。
それはRSS等のフィードだったり、検索だったり、メッセンジャーだったり、メールだったりの、使用シーンだったり。
ベクトルデータや3D、音声や動画なんかの部品にだったり。
ビジュアルの方向性として
混沌として、豊かな世界を作ってくれそうだ。
ウィジェットは、ウインドウ等の現在のインタフェースに捕われないので、新たなOSの実験場としても有用なフィールドとなるだろう。
さて、コレだけ広範囲に及ぶと、特にRIAのあたりやWindows関連は、筆者の知識があやふやなのでチューイして欲しい。
ちなみに、OS-ブラウザ-ウィジェットのレイヤーの上に、ハードウェアがあるが、それは割愛。
「これからウィジェット、面白そうです」