Dojo道場 ~ 第10回「Dojo 最新動向 - Dojo 1.6」

CodeZine / 2012年3月27日 14時0分

図3. ガント・チャート

 これまで、オープンソースのJavaScriptライブラリ「Dojo Toolkit」のベストプラクティスを解説してきた本連載。今回からは、Dojoの最新動向を数回に分けて紹介します。

■はじめに

 2011年12月にDojoの1.7がリリースされました。1.7の目玉は、dojox.mobileによるiOSやAndroidなどのモバイル・デバイスのサポートの拡張、および、AMD(非同期モジュール定義=Asynchronous Module Definition)のフル・サポートなどがあります。

 モバイルサポートやAMDはDojo 1.6からサポートが始まり、1.7で本格的な対応がされています。このシリーズでは1.6の更新内容について触れていませんでしたので、多少旧聞になってしまいますが、今回の記事はDojo 1.6の更新内容をざっとおさらいしておきたいと思います。

 Dojo 1.6.0は2011年2月にリリースされました。その直後の3月に、Firefox 4.0とFirefox 4.0とInternet Explorer 9が立て続けにリリースされ、これらをサポートしたDojo 1.6.1が5月にリリースされています。

■非同期モジュール定義(AMD)

 非同期モジュール定義(Asynchronous Module Definition、以降AMD)はその名の通り、非同期にロード可能なモジュールを定義する仕組みのことで、CommonJSで標準として提案されています。Dojoがこの標準に準拠することにより、他のAMD準拠のライブラリとの間の相互利用が可能となります。

 Dojoでは、以前よりdojo.provide()によるモジュール定義、およびdojo.require()による動的なモジュールのロードを実現していました。このdojo.require()によるモジュールのロードは同期です。すなわち、1)モジュールを含んだJavascriptファイルがネットワーク越しにロードされ、2)読み込まれ、3)評価される、という一連の処理が同期で行われるため、この間処理はブロックされます。これは、モジュールのサイズが大きくなればなるほど、パフォーマンスに与える影響が大きくなることを意味します。

 AMDではdefine()関数でモジュールを定義し、require()関数でモジュールをロードすることになります。この変更がDojo 1.6で導入されはじめ、Dojo 1.7でフルサポートとなります。今後dojo.provide()およびdojo.require()の代わりにこれらの新しい関数を使うことが推奨されており、Dojo 1.7では古い関数はdeprecatedとなるので、今後Dojo 1.6/1.7以降で新しいモジュールを開発する場合は、AMD方式の採用を検討したほうが良いでしょう。ただし、少なくともDojo 1.7ではまだ互換性維持のため、古い関数が使えます。

 AMDの詳細に関しては次回以降の記事でお届けする予定です。

補足
 実は、Dojoは以前よりXDローダーと呼ばれる、クロスドメインをサポートするためのローダーを提供しており、これを使うと副次的に非同期ロードの恩恵を受けることができます(『Dojo道場 ~ 第4回「ビルドでパフォーマンス・チューニング(3)」XDローダー』参照)。Dojo 1.6でのAMDサポートはこれとは別の方法で、より標準的なアプローチをとっています。



■モバイル(dojox.mobile)

 dojox.mobileはDojoベースのモバイルWebアプリケーションを実現するためのウィジェット群です。iOS(iPhone/iPad)、Android、Blackberry上のWebブラウザ(例えばiOS上のSafari)で動作するのですが、それぞれのOSのネイティブのユーザー・インターフェースとそっくりな見た目、エフェクト、操作性を持つアプリケーションを、非常に簡単に実装できます。

 ネイティブのアプリケーションの場合、複数のOSをサポートするには、同じ仕様をそれぞれのプラットホーム上で実装しなければなりませんが、dojox.mobileを使ったWebアプリケーションの場合、1つのアプリケーションを実装すればそれぞれのプラットホームで動かすことができます。見た目はスタイルシートで切り替えるだけです。

図1. dojox.mobile


 dojox.mobileはDojo 1.5で実験的に実装が始まり、Dojo 1.6で基本的な部品をそろえ、Dojo 1.7でさらに大きく進化しました。ここ最近のスマート・フォンやタブレットの普及に伴い、現在Dojoとしても最も力を入れている分野の1つで、開発者の注目度も高まっています。こちらも、詳細に関しては次回以降の記事でお届けします。



■関連記事
Dojo道場 ~ 第10回「Dojo 最新動向 - Dojo 1.6」
「Jaql」関数を追加する
Windows AzureでNode.jsを実行しよう
ngCoreによるゲーム開発入門 ~ ステップバイステップで理解する開発の流れ
「忍者ロワイヤル」を真似してみよう! ~サンプルで学ぶ、ngCoreを使ったゲーム開発

■記事全文へ

CodeZine

トピックスRSS

ランキング