May 24, 2007
「Webデベロッパがローカルアプリケーションとmash upする環境」、Apollo
募集開始と同時にあっという間に席が埋まってしまったというApollo mini Camp @ Tokyoに、潜り込んできた。
本家の開発者が来てApolloの概要と現状、将来について詳しく語っていた。Apolloの凄さは、実際に動いている所を見るとよく分かる。とても充実したセッションだったと思う。
講演の内容はWeb Designing2007年6月号の特集の内容と被っていた所も多かったけど、メモに残せた範囲で書いていこう。
講演の中の言葉で印象的だったのは、「Apolloを使うと、Webサービスだけでなく、ローカルアプリケーションとマッシュアップできる」という表現。発想の立脚点が、アプリケーション開発者の視点ではなく、Webデベロッパの視点である、という事を端的に示す名言だと思う。
プレゼンでは、Web上にある楽曲ファイルを再生するプレーヤー機能を持ったWebサービスFinetuneを例に挙げ、WebサービスとしてのFinetuneの欠点として
- ブラウザを再起動する度に演奏が途切れてしまうので、BGMを流しっぱなしにするというような使い方ができない
- ブラウザのタブの中にページが埋もれてしまい、曲飛ばしなどの操作をし辛い
- 手元のCDなどの曲を演奏できない
といった点を挙げた上で、Apollo上で動作するFinetune Desktop Playerを起動して、
- ブラウザと全く別に動作する
- iTunes Music DBにアクセスして、ローカルにある楽曲ファイルを再生する
- Webページ内の埋め込みプレーヤーで「再生」ボタンを押した時に、そのメッセージを受け取り、Desktop Playerの方で楽曲を再生する
といった例を示していた。これはApolloのコンセプトを特に分かりやすく示してくれる好例だ。
そういった例の数々やなんかを見るにつけ、似たコンセプト・似た機能のXULRunnerがWebにもローカルにもどっちつかずな印象(のように僕には見える)なのに比べて、Apolloはとても明快な印象を受けた。Apolloは明確に「Webデベロッパのもの」を意識している、ということを、メッセージとして発信している。ターゲットを見据えた上で、物を作ってきているし、物を見せてきている。
Google MapsやGoogle Docs&Spreadsheets、livedoor Readerなどの例を見ても明らかなように、近年、WebアプリのUIの品質はどんどん高まってきていて、総合的にはネイティブアプリケーションの持つメリットを軽く上回ることすらあるようになってきている。サーバと密に連携を取りながら動作するWebアプリは、かつて未来のコンピュータ利用のイメージとして語られたシンクライアントの、異なる形での具現化だと僕は思っている。
ただ、Webの中だけで完結しないといけない、Webブラウザの外の世界に出ることができない、というのがWebアプリケーションの弱点でもある。その<ruby><rb>軛</rb><rp>(</rp><rt class="読み">くびき</rt><rp>)</rp></ruby>からWebアプリケーションを解き放ち、可能性を広げるのが、Apolloに期待される役割なんだろう。
……とか何とか格好良さげな言葉を並べ立ててみてはいるけれど、技術的に新奇性がものすごくあって革命的な存在だ、というわけではない。そもそものところでいえば、MicrosoftはOutlook Web Accessなどで10年くらい前からそういうことをしていたのだし。
Apolloのいい所、というより、Apolloが恵まれている所は、世に出た時期ではないかと思う。
ブロードバンドが普及し、PCの性能が上がって、ブラウザ内で動くダイナミックで便利なUIのWebアプリが誰でも触れる形で世にあふれ、Apolloのようなコンセプトをやっと僕ら一般人や開発者が、スンナリ受け入れられるようになった。そういう時期の今だからこそ、Apolloは注目されるし、期待されるんだろう。と、僕は思う。
Mozilla信者の僕としては当然XULRunnerとの比較の方に目がいくわけだけれども、知名度が低すぎるからかみんなに見限られているからなのか、本の特集記事でもプレゼンでもXULRunnerの事なんか引き合いにすら出されないのが悲しいので、自分で勝手に比較してみる。
- オーサリングツール
- XULにも、最近でこそやっとEclipse用のアドオンとしてXUL用の物がいくつか出てきてはいるけれども、基本的にはお寒い状況だ。それに対してApolloでは、Flex BuilderなどのFlash用オーサリングツールがそのまま利用できるし、他のWeb関連のオーサリングツールだって使える。もちろん、使いたければ、コマンドラインのツールだってある。
- 開発ノウハウ
- Webアプリには今や、高機能なライブラリが多数登場していて、ノウハウの蓄積・共有も進んでいる。Apolloではそれらがそのまま使える。XULは、勉強してもMozilla以外では全く役に立たないからだろうか、ノウハウの蓄積があまり進んでいないし、Mozilla界隈の外への広まりもあまりない。
- レンダリング機能
- グラフィック面で圧倒的な強さを誇るFlashがあるだけに、Apolloのグラフィックまわりはすさまじく強力だ。Firefox 3のデモと同じような「Webページの回転、拡大縮小、半透明、そういう状態のままでの文字入力」がFirefoxなんか比較にならない速度でグリグリ動くし、ボカシなどのフィルタもかけられる。
- デスクトップアプリとの親和性
- Apolloはまだパブリックアルファの段階なので、実装されていない機能が多い。ネイティブアプリケーションとの間でのドラッグ&ドロップ、OS標準のファイル選択ダイアログ、関連づけに基づいたOS標準のファイルアイコンの表示などは、夏に出るパブリックベータで実装されるそうだが、今の計画では、今年の冬頃にリリース予定のバージョン1.0においては、以下の機能はサポートされない模様。
- サーバソケット(サーバ機能を持ったアプリケーションの開発)
- DLLなどによる、より高度な機能の追加
- セキュリティ対策
- インストールしたアプリケーションでは(OSのセキュリティモデルで許されている範囲内において)何でもできる、というのはXULRunnerと同じ。ただ、Apollo上で動作するアプリケーションのインストール時には、アプリケーション名とベンダ名の他、ローカルのシステムファイルへアクセスするかどうかの情報も表示される。XULアプリケーションやFirefoxの拡張機能で問題となっている未解決の点に対して、こういう対策を用意しているのはとても羨ましい……
- ライセンスとか
- ランタイムをApolloアプリケーションに添付して再配布することはできるようになるらしい(インストーラなどにおいては極力Apolloの存在を表に出さないようにして、ユーザからは透過的な存在にできるようにするそうだ)。まぁ、当たり前だよね……そもそも動作する環境であるWindowsやMacがクローズドな環境なワケで、いつでもベンダーロックインが発生し得るわけで、にもかかわらずみんなそれで満足して使ってるわけで、OS(Linux)からランタイム(XULRunner)まで全部フリーでオープンだぜー!というXULには、この点において宗教的なメリット以外は全然無いと言っていいんじゃないかなあ。
- Apolloランタイムのバージョン違いの問題
- 複数バージョンのランタイムがインストールされている場合、Apolloアプリケーションの実行時に適切なバージョンのランタイムを自動的に選択してくれるようになるらしい。Apolloアプリケーションにランタイムをくっつけて配布することもできると言っていたけれど、それがそのアプリケーション専用に組み込めるという意味なのか単にインストーラをバンドルできるという意味なのか僕にはよく分からなかった。
- データベースへのアクセス
- 1.0まででの優先順位は低くて、ミドルウェアか何かを使うようになるらしい。各RDBMS用のドライバを用意すればアクセス自体はできるようになって、1.0時点でも、名前は忘れたけどなんかのRDBMS用のドライバが1種類は付くとか何とか。XULRunnerはSQLiteを内蔵してるはずだったと思うけど、外部のRDBMSにアクセスする機能なんてあったっけか……?
- notepad.exeのように、exeファイル一個で完結するようなアプリケーションの開発はできるのか?
- 結論。無理。これはApolloもXULRunnerも同様。
ぶっちゃけ、XULRunnerは機運的にも世間のニーズ的にも敗北確実って気がします。
Q&AでXULRunnerの事について聞こうと思ったんだけど全然当たらなかったんで(上に挙げた話のほとんどは他の人が質問した内容)、終わった後に、Daniel Dura氏に個人的に聞いてみた。いや、英語なんて喋れませんから通訳の人についてもらいましたよ、当然。
曰く、XULRunnerは数年前に試してみたけど、元々Firefoxの開発からスピンアウトした物だから余計な機能が多くて重くて使い辛かった、と。そこで、それを他山の石にして、Apolloはとにかくlightweightな物にしたんだとおっしゃっていた。なるほど、そりゃあApolloがXULRunnerに比べて魅力的に思えるのも当然だ……
最後、アンケートの回答者にプレゼントということで、ApolloのTシャツ(Mサイズを貰ったけど、やたらデカイ気がする)とWeb Designing 6月号を貰った。……って、Web Designingもう持ってるよ 2冊もあって、どうすりゃいいんだ。
wikieditish message: Ready to edit this entry.