豊富な機能でリッチなWebアプリの開発をサポートする「Dojoツールキット」
オープンソースのJavaScriptライブラリ『Dojoツールキット』の情報を発信している野口氏は「RIA(Rich Internet Applications)と言うと、これまでFlashなどのようにプラグインを追加して実現していましたが、Ajaxが定着し、ブラウザの標準機能も向上している現在では、ピュアなブラウザの機能だけで実現できます。核となるのはJavaScriptですが、ブラウザごとの仕様の違いを吸収しながらコードをゼロから自前で書くのは大変ですので、ライブラリを活用してWebのフロントエンド開発の生産性を向上させます」と背景を語る。Dojoツールキットはメジャーなブラウザに対応し、iPhoneのSafari上で動作するWebアプリケーションも作れるという。
Dojoツールキットは、IBMが当初から持っていたコードをオープン化したEclipseとは違って、もともとあったプロジェクトにIBMが賛同したものだ。JavaScriptライブラリはほかにも『jQuery』や『prototype.js』などがあるが、IBMがDojoツールキットを選んだ理由は、大規模なアプリケーション開発を想定した豊富な機能を持っているからだという。JavaScriptの記述は、関数の集まりで、C言語に近い。Dojoツールキットはクラスを定義するフレームワークもあり、さらにそれを拡張したり多重継承したりと、C++やJavaに近いような一貫性のある言語機能を提供していると野口氏は説明した。
ある程度規模の大きいアプリケーションの場合、複数のJavaScriptファイルを読み込んで各ファイルをお互いリンクさせるようなやり方では実現が難しくなり、機能のモジュール化が必要になる場面もある。Dojoツールキットの場合はモジュールごとの依存性を記述でき、その依存性に基づいた処理が可能だ。例えばあるモジュールを使いたい場合、それが中でほかのモジュールを使っているかどうかについて意識しなくていい。機能が豊富なため、ほかのライブラリと比較してコード量は多い。しかし、一部のモジュールしか利用しないのに大量のコードがロードされる必要はなく、スタートアップに必要なモジュールをパッケージ化して読み込んだり、遅延読み込みができたりするなど、パフォーマンス面での配慮もある。
開発においての恩恵もみられる。これまで、JSPなどのサーバーサイドの技術を使う場合、フロントエンドのデザイナーと、実際にロジックを入れていくデベロッパーで同じファイルを扱う場合、デザインを変更する際、JSPのタグをデザイナーが壊してしまうケースなどは、非常に頭の痛い問題であった。しかし、標準的なHTMLとJavaScript、CSSというオープンな構成となっているため、デザイナーとデベロッパーがある程度切り分けて作業が可能になった。
Dojoツールキットに対して、IBMのエンジニアが大きく寄与したのは、国際化とアクセシビリティだ。IBMの製品として出荷するには、10の言語をサポートしなければならないというルールがある。先日出荷したJazzのツールでは、Dojoツールキットの文字列部分(メッセージのラベルなど)を別ファイルにしてバンドルできる国際化の機能が役に立ったという。アクセシビリティについては、例えば、政府に納品するアプリケーションの場合は、すべての人が使えるようになっていないと不適格となる。以前は「JavaScriptがなくても動作する」といったこともアクセシビリティの条件となっていたが、現在では現実的ではなくなっており、W3CでもARIA(Accessible Rich Internet Applications)という仕様が登場して、Dojoツールキットはいち早く実装した。
ほかに注目すべき点は、Widgetセットで、タブやアコーディオン形式、ツリー形式などのナビゲーション表示やデータグリッドやコンボボックス、テキスト入力時のサジェスト機能、円グラフ・棒グラフ・折れ線グラフなどのチャート機能といった基本的なツールはすべて揃っている。それらのツールをWidgetと組み合わせることで、例えば、クライアント側の操作でデータが変更された場合に、サーバと通信しないでブラウザ側の計算だけでグラフを変化できる。データグリッドがサーバ側のCSVやXMLのデータを読み込んで表示するAPIもあるので、データグリッドのWidgetを用意しておけば、データの読込先を変えることでいくつものデータを扱うこともできるという。
表現力に関しては、線や矩形を書くといった二次元の描画やフェードインやフェードアウトなどPowerPointの書類に見られるような基本的なアニメーションも実装可能だ。ほかにもドラッグ&ドロップのモジュールを使った、デスクトップアプリケーションに近いようなWebアプリケーションも作れるといい、これらの機能を使ったアプリケーションを披露してくれた。
以前のバージョンでは、動作が重いという問題もあったが、現在はほかのライブラリと遜色のないパフォーマンスになっている。Dojoツールキットが使われているサイトとしては、「Apple Store」の一部や「任天堂Games」「シャッフルカードじゃらん」などがあり、IBM製品で言うと、『IBM Mashup Center』『WebSphere sMash』やJazzのツールでも使われている。また『WebSphere Application Server』のユーザーには、Feature Pack for Web 2.0という形でDojoツールキットを無償提供している。
非常に多彩な機能でアジャイルな開発を実現するDojoツールキットだが、死角はないのだろうか。野口氏は「まだまだ若い技術なので、技術情報はまだ足りていません。それが課題です。今年になって英語の本は4冊出ていますが、それらの翻訳含めた、日本語の技術情報の発信にも取り組んでいきたいと考えています。また今後期待したいのは、開発ツールです。今のところFirefoxにFirebugを入れて地道にやっている形ですので、統合的な開発環境は不足しています。『Rational Application Developer Version 7.5』では、Dojoのサポートが入ってきました、今後それが発展してよい開発環境ができてくると裾野が広がってくると思います。それから、Web 2.0のよいところを活かしたうえで、セキュリティやスケーラビリティを強化していくことも課題です」と、課題と展望について語った(聞き手/森)。
最終回の後編では、須江信洋氏による、Java言語をベースに構築されたスクリプト言語「Groovy」の解説と、米持幸寿氏が語る、IBMソフトウェア・テクノロジーのポリシーや今後の活動についてレポートする。