サーバーおよびサーバーサイドテクノロジー
BlazeDS
Javaサーバー用の何種類かのサーバーサイドFlash Remoting実装を選択できます。BlazeDSは、アドビが作成した無料のオープンソースバージョンであり、データをリアルタイムでFlexアプリケーションにプッシュするサーバーサイドJavaリモーティングとWebメッセージングテクノロジーを提供します。このメッセージングサービスを利用すれば、Flexアプリケーションと、他のFlex以外のJMS対応アプリケーションとの間で、メッセージを交換することもできます。
リモーティングサービスとメッセージングサービスを組み合わせて、リアルタイムのデータ中心アプリケーションを作成できます。このタイプのFlexアプリケーションでユーザーがデータを変更した場合、データはサーバー上のデータベースに保存され、その後に現在そのデータにアクセスしている他のすべてのクライアントにプッシュされるので、ユーザーは常に最新のデータを見ることができます。
このタイプのデータ同期を作成するには、サーバーにデータを保存し、他のクライアントにデータをプッシュし、データの衝突を管理するために、かなりの量のコードを作成しなければなりません。別の方法として、LiveCycle Data Servicesを使用すれば、このようなコードのかなりの部分を自動的に作成できます(この後のAdobe LiveCycle Data Servicesの項目を参照)。
Spring BlazeDS Integration
SpringSourceとアドビは共同で、BlazeDSの特別バージョンであるSpring BlazeDS Integrationを作成しました。その目的は、SpringとBlazeDSとの間の統合を容易にすることです。SpringとBlazeDSをそれぞれ異なる構成ファイルを持つ別々のシステムとして扱い、基本的な通信メカニズムだけを使用する代わりに、Spring BlazeDS Integrationでは、Springからアプリケーションの他のコンポーネントと同じ方法でBlazeDSを管理できます。
使用を始めるには、Spring BlazeDS IntegrationのTest Driveが役に立ちます。これは、TomcatとSpring BlazeDS Integrationの最小限のバージョンを、設定済みの使用可能な状態で、サンプル付きで提供するものです。
Adobe LiveCycle Data Services
Adobe LiveCycle Data Servicesは、BlazeDSのスーパーセットであり、エンタープライズFlexアプリケーションのためのデータインフラストラクチャー一式を提供します。BlazeDSで利用できるリモーティングおよびメッセージングサービスに加えて、データ管理サービスを提供しているので、リアルタイムのデータ中心アプリケーションの開発と保守のコストを削減できます。
データ管理サービスは、Flexアプリケーションとミドルティアとの間のデータ同期を自動化するもので、データ同期、衝突解決、ページングおよび遅延ローディング、大きいデータコレクションやネストされたデータ関係(1対1および多対1の関係など)の管理、Hibernateとの統合、AIRアプリケーションでのオフラインデータアクセスといった機能を提供します。LiveCycle Data Services ES2に導入されたモデリングテクノロジーにより、これらの高度なデータ管理サービス機能の多くを、サーバーサイドのコードをいっさい作成せずにアプリケーションに追加できます(この後の2つの項目を参照)。
LiveCycle Data Servicesの他の特長としては、高いスケーラビリティを実現する高度な展開オプション、Real Time Messaging Protocol(RTMP)によるストリーミング、PDF生成、ポータル統合、LiveCycle接続、デベロッパーおよびエンタープライズサポートリソースへのアクセスなどが挙げられます。詳しくは、LiveCycle Data ServicesとBlazeDSの比較表を参照してください。
Flexリモートプロシージャーコール
Flexアプリケーションは、バックエンドのサーバーと、直接のソケット接続またはHTTP(こちらの方が一般的)で通信します。HTTP要求(JSPまたはXMLファイル、RESTful Webサービス、またはHTTP経由でテキストを返すその他のサーバーファイルに対する)、Webサービス要求(HTTP経由でSOAPフォーマットのテキストを返すWebサービスに対する)、またはFlash Remoting要求(HTTP経由でバイナリAction Message Formatを返すサーバーサイドのJavaクラスのメソッドに対する)を実行できます。
Flash Remotingの場合、データ転送フォーマットがバイナリなので、XML、JSON、SOAPといったデータ量の多いテキストベースのフォーマットに比べて、アプリケーションによるデータのロードが最大10倍高速になります。従って、可能な場合はこれを使用することをお勧めします。
Flash Remoting
Flash Remotingは、クライアントサイドとサーバーサイドの機能の組み合わせによって実現される呼び出し-応答モデルであり、Flash Platformからサーバーサイドのオブジェクトに、ローカルオブジェクトと同様にアクセスするための方法です。アクションメッセージフォーマット(AMF)へのシリアライズ、デシリアライズ、クライアントとサーバーの間のデータ変換を処理することで、ActionScriptとサーバーサイドのデータ型の間でのトランスペアレントなデータ転送を実現します。Flash Remotingが使用するクライアントサイド機能はFlash Playerに内蔵されており、サーバーサイド機能はアプリケーションサーバーにインストールする必要があります。
いくつかのサーバー(ColdFusion、Zendなど)にはFlash Remotingが組み込まれていますが、他のサーバーの場合はインストールが必要です(Java EEサーバーの場合のBlazeDSまたはLiveCycle Data Services、.NETサーバーの場合のWebORBまたはFluorineFX、PHPサーバーの場合のZend Frameworkまたはamfphpなど)。
AMF
Action Message Format(AMF)は、ActionScriptオブジェクトをシリアライズするためのバイナリフォーマットであり、Flash Platformアプリケーションとリモートサービスとの間で、インターネット経由でデータを交換するために使用されます。このプロトコルはアドビによって公開されています。最新版はActionScript 3用のAMF 3仕様(PDF)です。
ActionScriptからJavaへ、およびJavaからActionScriptReferへの変換の際のデータ型マッピングの一覧表については、ドキュメンテーションを参照してください。
Adobeアプリケーションモデリングテクノロジー
Adobeアプリケーションモデリングテクノロジー(コード名Fiber)は、Flexアプリケーションのモデル駆動型開発を可能にするテクノロジーの組み合わせであり、データ中心のFlexアプリケーションの開発を容易にします。
Flash Builder 4では、アプリケーションモデリングテクノロジーは、サーバーサイドサービスにマップされるActionScriptデータサービス(引数なしのコンストラクターとパブリックメソッドを持つJavaクラス)を作成して使用する際に用いられます。
ActionScriptデータサービスを作成する場合、Flash Builderは、リモートサービスを呼び出し、対応するデータ転送オブジェクト(値オブジェクトとも呼ぶ)を操作するActionScriptクラスとコードを生成します。Javaクラスのメソッドで動作される対応するJavaオブジェクト(多くの場合はデータベーステーブルのレコードに対応するもの)にマップされるActionScriptクラスが作成されます。これにより、クライアントとサーバーで同じタイプのオブジェクトを操作して、そのインスタンスを相互にやりとりできるようになります。
さらに、LiveCycle Data Servicesを使用した場合、生成されたクライアントサイドのコードは、LiveCycle固有のクラスを使用して、前に説明した追加のデータ管理機能も実現します。
Adobe Flash Builder用Adobeアプリケーションモデリングプラグイン
LiveCycle Data Services ES2を使用している場合、Adobe Flash Builder用Adobeアプリケーションモデリングプラグインをダウンロードしてインストールできます。これはグラフィカルなモデリングエディタであり、クライアントサイドのコードに加えてサーバーサイドのコードも自動生成します。
モデラーを使用して、既存のデータベースに基づくモデルを定義し、このデータの操作に必要なクライアントサイドのコード、サーバーサイドのコード、サーバーサイドの構成ファイルを生成します。新規プロジェクトでデータベーステーブルがまだ存在しない場合は、モデラーでモデルを定義した後、データの操作に必要なクライアントサイドとサーバーサイドのコードに加えて、データベーステーブルも生成することができます。
Flash Platform Services
独自のデータメッセージングサービスを組み込んで管理する代わりに、Adobe Flash Platform Servicesの1つであるCollaborationサービスを使用することで、チャット、オーディオ、ビデオなどのリアルタイムのコラボレーション機能を利用できます。Flash Platform Servicesにはこの他に、Distributionサービス(ソーシャルネットワーク、モバイルデバイス、デスクトップへのアプリケーションの配信、宣伝、追跡、課金)やSocialサービス(Facebook、MySpace、Twitter、Yahoo、Google、AOLなどの複数のソーシャルネットワークとの1つのActionScript APIによる統合)などがあります。
まとめ
この記事では、FlexおよびJavaアプリケーションの構築に使用されるテクノロジーを紹介しました。これらのテクノロジーについて詳しくは、以下のリソースを参照してください。
- FlexおよびJavaインテグレーションセンター
- Adobe LiveCycle Data Services ES2ドキュメンテーション
- BlazeDSドキュメンテーション
- Adobe Flexデベロッパーセンター
- Flex用Adobe AIRデベロッパーセンター
Adobe AIR Galleryに登録された優秀なAIRアプリケーションを決定するコンテスト、Adobe AIR Contest 2010が今年も開催されます。優秀作品には、Adobe MAX 2010(2010年10月/米国ロサンゼルス)への招待、Adobe Creative Suite製品のプレゼントが贈られます。登録締め切りは2010年8月31日まで。【詳細はコチラ】