BlazeDS:アドビによる新オープンソースプロダクトの意義

by Zach Stepek

私はWebデベロッパーやアドビコミュニティのエキスパートとして長い間活動していますが、その間にFlashプラットフォームは大きな進化を遂げ、その歴史を振り返るといくつもの素晴らしい節目がありました。たとえば、Flash Videoの導入、Adobe Flex 3のリリース、Adobe Flash Player 9の新しいActionScript Virtual Machine(AVM)、Flash PlayerのH.264対応、そしてAdobe AIRのリリースなどです。

それらに加えて、アドビはオープンソースプロダクトとして「BlazeDS」というリモーティングやメッセージングに関する技術のソースコードをリリースしました。このBlazeDSのリリースもまた、Flashプラットフォームの歴史において大きな節目となることでしょう。

BlazeDSとは、オープンソースのJavaを使ってAction Message Format (AMF) 3ベースのリモーティングやメッセージングを実装する技術であり、その中にはAdobe LiveCycle Data Services (LCDS) ESの一部として採用されていた技術も含まれています。BlazeDSを使えば、バックエンド分散型のデータへの接続や、Adobe Flex/Adobe AIRアプリケーションへのリアルタイムのデータプッシュ配信が簡単に行えるようになるので、よりレスポンスのよいRIA(Rich Internet Application)体験を実現できます。

また、アドビはAMF 3のドキュメントを公開しており、今後、このプロトコルがメジャーなサーバプラットフォームで使えるようにデベロッパーコミュニティを支援していくと発表しています。AMFがオープン仕様となり、まもなくBlazeDSがリリースされます。この出来事がデベロッパーの皆さんにどのようなメリットがあるのでしょうか?

Action Message Format (AMF)

AMFはデータ交換用のバイナリフォーマットで、通常、Flash/Flexアプリケーションとデータベースとの間でリモーティングリクエストによるデータ転送を行うときに使用されています。リモーティングコールの際、呼び出される外部要素はアプリケーション層のサービスとなり、たとえばアプリケーションサーバ上で動作するAdobe ColdFusion、Java、PHP、.NETなどがそれにあたります。

AMFの使い道はリモーティングリクエストだけはありません。NetConnection、 NetStream、LocalConnectionなどの他のリクエストにも使用されています。さらに、AMFはByteArray、 IExternalizable、Shared Objectsなどのクラスやインタフェース用のデータフォーマットでもあります。

リモーティングリクエストにAMFを使う最大のメリットは、スピードとパケットサイズです。バイナリAMFパケット化されたデータは、RESTful XMLやSOAPパケットに比べて、かなり小さなサイズとなります。つまり、AMFパケットを使ったデータ転送のほうが、SOAPやREST よりも小さく、速く、そしてバンド幅をより有効に使えるのです。

私の言葉を鵜呑みにしていいものか疑問を感じる方もいるでしょう。そういう方は、アドビエバンジェリストのJames Wardが自身のサイトで公開しているベンチマークテストアプリケーション「Census RIA Benchmark 」(英語サイト)を試してみてください。Censusでは、RIAにおけるさまざまなデータロード手法を試し、各手法がパフォーマンスやバンド幅、クライアントメモリ消費率にどのように影響を与えるかをチェックできます。テスト可能なデータロード手法は、AjaxベースHTML、SOAP、XML、JSON、 Dojo、Laszlo XML、Flex SOAP with ActionScript objects、ECMAScript for XML (E4X)、Flex XML with ActionScript objects/E4X、Flex AMF 3、Flex Paged dataです。

AMF をベースとしたリモーティング技術として、AMFPHPやWebORB、Red5というサードパーティ的なプロジェクトがあります。ただ、これらの欠点は、そのプロジェクトが仕様に沿って正確に設計されいているかどうかを検証する手だてがないということです。アドビはAMFの発表時に、設計に必要な完全な仕様を公開しているだけに、非常に堅牢なソリューションとなり得ます。これから数ヶ月のうちに発表されるリモーティング関連の記事に注目しましょう。

BlazeDS

私にとっては、アドビからBlazeDSがリリースされたのは予測もしていなかったですし驚きでした。BlazeDSは、Javaベースのリモーティング&Webメッセージング技術です。オープンソースプロジェクトとしてGNU Lesser General Public License (LGPL) v3の元にリリースされました。

BlazeDSはLiveCycle Data Service ES(LCDS ES)で使われている技術を元にしています。アドビによれば、今後もBlazeDSを通してLCDSからの確かな技術をデベロッパーコミュニティへと提供していくとのことです。LCDSをあまり知らない方もいるでしょう。LCDSは、RIAのデータ統合を強化するサーバプロダクトで、ハイパフォーマンスデータストリーミング、ページング、データシンクロが要求されるアプリケーションを構築するために必要な機能を揃えています。LCDSのこうしたメリットに興味があるならば、投資する価値は十分あります。ただ高価であるため、中小規模のビジネスマーケットではあまり普及していませんでした。BlazeDSはLCDSを元にした技術です。リモーティングやメッセージングだけが必要なFlex/Adobe AIRアプリケーションであれば、BlazeDSを利用することをお薦めします。

現在リリースされているBlazeDSには、LCDSの2つの技術が含まれています。「Messaging Service」と「Remote Procedure Call (RPC) Services」です。

私はLCDSが好きですが、BlazeDSにアプリケーション構築で必要とする機能をほとんど備えているのは嬉しいかぎりです。BlazeDSを使えば、チャットアプリケーションやコラボレーション環境を作ることができ、またJavaアプリケーションをリモートオブジェクトとして利用することもできます。それに、BlazeDSでのリモーティングは実に速いのです。先ほど紹介したベンチマークテストのアプリケーション「Census RIA Benchmark」で試してみてください。Censusでは、AMFリモーティングコールにBlazeDSを使用しており、明らかにBlazeDSのほうが他の手法よりも速いことが実感できると思います。

輝かしい未来

Flexアプリケーションを開発するコストが低くなりつつあります。無償で配布されているFlex SDKにはコマンドラインコンパイラやFlexフレームワーク、クラスファイルの全ライブラリが含まれています。BlazeDSも無償で配布されており、LiveCycle Data Services ESの機能の一部を利用することが可能です。私がやったように統合されたIDEで開発を行いたい人には、最近Adobe Flex Builderのスタンダード版の価格が安くなったことも注目でしょう。

Flexや他のRIA技術によってWebの表層は変わりつつあります。デベロッパーたちは効果的なユーザインタフェースの必要性を、デザイナーたちは優れたデザインの背景には優れたコードが必要だということを理解しはじめています。これら様々な技術により、RIAの景色も大きく変わるでしょう。

ノート: BlazeDSは opensource.adobe.comで入手できます。また、アドビはサブスクリプションモデルとして、LiveCycle Data Services Community Edition として「BlazeDSの認定ビルド+年間有償サポート(5インシデント/CPU)」 を日本でも提供します。


Zach Stepek

アドビのRIAコミュニティエキスパート、Flex/Adobe AIRのアドビ認定インストラクター、イリノイ州ロックフォードにあるStateline Adobe User Groupの創始者兼マネージャー。所属する会社「Crave Media Group」では、RIAやアドビ技術を使ったリッチメディア体験の制作を業務としており、アドビ公認のトレーニングセンターでもある。著書として「Foundation AIR」(Adobe AIRの正式版がリリース後すぐに発売される予定)。