ローカルのUIを作成するのに、標準的なGUI部品ではなく「動き」を表現できるFlashのようなベクターグラフィックスの部品が使えるとよいだろうと考えている。最近のマイブームである。
正直なことを言えば、既存のGUIの上にFlashのような派手な動きをするインタフェースをかぶせてしまえ! ということは数年前、Mac OS Xの登場時から考えていた。人工知能インタフェース「Newt On」が備えるべきインタフェースはそのようなものになるはずだ、と考えていた。
ただ、その方法が分からず、環境が整うのを待っていたというところだ。Safariの登場によりWebkitが整備され、AppleScript StudioでGUIベースのアプリケーションを手軽に開発する環境が整備され……さまざまなMacデベロッパーと技術交流を続けるうちに、構想が実際のものとして結実しつつある。
話を元に戻す。
Flash部品をクリックして、ローカルのアプリケーションでアクションを受信するのは、割と簡単にできた。FlashのUIをかぶせて、iTunesをコントロールするなどの操作はお手の物である。
ところが、ローカルアプリケーション側から、FlashのUI部品にアクションを送るのは割と大変だ。まだ十分に方法を確立できていない。ボタンを10個並べておいて、外部からFlash UIに「3番目のボタンが押された」というアクションをどーーやって伝えるのよ? という点がまだクリアできていない。
表示中のFlashをリロードし、所定の位置にファイルがあれば分岐してボタンが押されたアニメーションを再生する……ということも考えないではないのだが、リロードしたことが見えてしまうのはちょっといただけない。
Flash UIに外部からイベントを送る方法が何かないものか……ちょうど、USのWebkit SDK Dev MLにもそんな話題が出ていた(まだレスは付いていないが)。
ここまですべてが「前振り」なのだが、そこでFlash以外のベクターグラフィックスのデータフォーマットとして目をつけたのがAdobe SVGである。XMLベースのテキストを解釈してベクターグラフィックスとして表示してくれるものだ。Webブラウザに標準で再生用のプラグインが同梱されているわけではないので、普及度という意味ではいまひとつだが、UIを構成するような用途では別にソフトごとインストールしてしまえばよい。よって、普及度はほとんど問題にはならない。
Adobeのサイトを見ると、SVGのデモでJavascriptを用いて外部からコントロールするようなものが紹介されていた。
「これは使えるかも?」
といったような手応えはある。ただ、いくつかの不安要素もある。
・SVGで表現できる「動き」が少ない
・再生速度がいまひとつ遅いように見える(上記と連動して、遅さを補うために静止画指向のベクターグラフィックであるように見受けられる)
・この先、OSやWebkitのバージョンが上がったときに、AdobeがSVGのプラグインをアップデートするかどうかが不透明
いろいろと調べてみると、SVGビューワープラグインは初期リリースのまま放置状態であり、すべてのフィーチャーが実装されているものではないことが分かってきた。
これって……やっぱり使えないな。そういう判断をせざるを得ない。残念である。