SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Adobe Developer Connection(AD)

FlexおよびJavaアプリケーション構築のためのテクノロジー

  • このエントリーをはてなブックマークに追加

 この記事では、FlexおよびJavaアプリケーションの構築に使用されるテクノロジーの概要を紹介します。読者としてはJava、Flex、Adobe AIR、その他のデベロッパーを想定していますが、これらすべてのテクノロジーに通じている必要はありません。

  • このエントリーをはてなブックマークに追加

はじめに

 この記事では、FlexおよびJavaアプリケーションの構築に使用されるテクノロジーの概要を紹介します。読者としてはJava、Flex、Adobe AIR、その他のデベロッパーを想定していますが、これらすべてのテクノロジーに通じている必要はありません。

 関連記事「FlexおよびJavaアプリケーションのアーキテクチャ」と、概要ビデオ「Flex 4およびJava統合の紹介」もご覧ください。

Adobe Flash Platform

 Adobe Flash Platformは、リッチアプリケーション(swfファイルの形式)の作成・実行・データ供給のためのテクノロジーファミリー全体にアドビが付けた名前であり、クライアントランタイム、ツール、フレームワーク、サーバー、クラウドサービスを含みます。その個々のコンポーネントの多くは、この記事で詳しく説明します。

Flash Platformランタイム

 Flash Platformの中心となるのは、クライアントランタイムです。すなわち、ブラウザ向けのAdobe Flash Playerと、ブラウザ外部向けのAdobe AIRです。ランタイムは、Flash Platformで作成されたアプリケーション(swfファイルの形式)をレンダリングします。

Adobe Flash Player

 HTMLとJavaScriptで作成された従来のWebコンテンツの操作に関するユーザー体験は、ここ何年かで大きく変化し、単純なリンクと独立した複数のページから、非同期のデータ呼び出しとインタラクティブコントロールを備えた1ページの「アプリケーション」へと進化してきました。しかしこの体験は、ブラウザのオブジェクトモデルで使用可能なオブジェクトによって、相変わらず制限されています。そこで、Flash Playerの出番です。

 Adobe Flash Playerは、ブラウザのプラグインまたはActive Xコントロールとして動作し、リッチなオブジェクトモデルとレンダリングエンジンにより、表現力の高いインタラクティブなコンテンツをWebアプリケーションに含めることを可能にします。このようなリッチなコンテンツを使用するには、何らかのデベロッパーツールを使用してswfファイル(Flash Playerがレンダリングできるコンパイルされたバイトコードファイル)を作成し、そのswfファイルをHTMLページで参照します。ブラウザがHTMLを解析する際に、swfファイルがダウンロードされ、Flash Playerによってブラウザウィンドウ内で実行されます。

Adobe AIR

 Flash Playerは、ブラウザ内のFlash Platformで作成されたアプリケーションのためのクライアントランタイムです。これらのアプリケーションは、ブラウザベースのアプリケーションの利点である、あらゆる場所からのアクセス、容易な開発(インストールが不要)、簡単なアップデート、すべてのオペレーティングシステムおよびブラウザでの一貫性といった特長をすべて備えています。

 一方で、ブラウザベースのアプリケーションの制限として、オフラインでのアクセスができないこと、ブラウザのセキュリティサンドボックスの制約により、ブラウザウィンドウ外部のユーザーのコンピューターとのやりとりができないことといった欠点を持ちます。

 ブラウザ内とブラウザ外の両方のアプリケーションの利点を取り入れるためにアドビが開発したのが、Adobe AIRです。これは様々なオペレーティングシステムで動作するランタイムとツールのセットであり、HTML、Ajax、Flash Platformのアプリケーション(swfファイル)をデスクトップに展開することを可能にします。

 最近多く用いられるアプリケーションのデザインパターンとして、全ユーザーのためのブラウザベースのバージョンと、アクティブユーザーやパワーユーザーのためのデスクトップバージョンを用意するという方法があります。Flash BuilderやFlash Professionalなどのツールを使用して作成したswfファイルは、Webアプリケーションとデスクトップアプリケーションの両方に使用できます。両方のタイプのアプリケーションを作成した場合、別々のコードライブラリからのコードを共有することもできます。

 デスクトップ用にFlexアプリケーションをコンパイルした場合、swfファイルとXMLファイル(アプリケーションデスクリプターファイルと呼ぶ)ができます。このファイルには、コンテナオペレーティングシステムウィンドウの表示方法、クライアントコンピューター上でアプリケーション用に使用するアイコンなどの情報が記録されています。

 開発中に、テストが必要になるたびにアプリケーションをコンピューターにインストールしなければならないのは不便です。Flash Builderの場合、アプリケーションをテストするときには、AIR Debug Launcher(ADL)というツールを起動して、アプリケーションをインストールせずに実行できます。

 展開の準備ができたら、Flash BuilderのADT(AIR Development Tool)というツールを使用して、リリースビルドを作成します。これには、swfファイルを含むAIRパッケージファイル、アプリケーションデスクリプターファイル、アセットなどが含まれています。このAIRファイルを、ユーザーに配布します。書き出しの際には、信頼できる機関によるデジタル証明書を使用してアプリケーションに署名する必要があります。このアプリケーションは、ユーザーのコンピューターにフル権限でインストールされ、オペレーティングシステムとやりとりする能力を持つからです(もちろん、有害なコードを導入するおそれを減らすため、信頼できるアプリケーションだけをインストールするようにすべきです)。

 AIRアプリケーションをインストールするには、ユーザーのコンピューターにAdobe AIRランタイムがインストールされている必要があります。ユーザーがWebページからアプリケーションを簡単にインストールできるように(AIRランタイムをダウンロードしてインストールしてから、AIRアプリケーションをダウンロードしてインストールするという手間を省くため)、アドビはテンプレート用のデフォルトのHTMLファイルとbadge.swfファイルを提供しています。これを使用すれば、ユーザーがバッジ(フレーム付きのカスタマイズされたイメージボタン)をクリックすると、ランタイムがチェックされ、必要ならインストールが行われた後、AIRアプリケーションがインストールされます。Adobe AIR Marketplaceでは、すべてのアプリケーションがこの方法で提供されています。

ツール

 アドビは、swfファイルを作成するためのツールを多数開発しています。Flash Professional、Flash Builder(以前の名前はFlex Builder)、Flash Catalystなどです。それぞれのツールは、異なるスキルを持つデベロッパーやデザイナーを対象としています。

Adobe Flash Builder

 Adobe Flash Builderは、デベロッパー向けのEclipseベースの開発ツールです。このIDEでは、Flexフレームワークを使用してswfファイルを作成します。

 Flash Builderは、Flexアプリケーション開発を容易にするために、インテリジェントなコードヒントおよびコード生成、リファクタリング、コンパイル時エラーチェック、インタラクティブなステップ式デバッグ、ビジュアルデザインによるユーザーインターフェイスのレイアウトとスタイル指定などの機能を備えています。

フレームワークと言語

 アプリケーション作成のための開発ツールに加えて、アドビは、デベロッパーが豊富な機能を持つ堅牢なアプリケーションをすばやく容易に作成できるようにするフレームワークも作成しています。

Adobe Flex

 Adobe Flexは、ActionScriptクラス(ActionScriptはFlash Player用のスクリプト言語)のライブラリと実行可能ファイルから構成される無料のオープンソースフレームワークであり、アプリケーションの開発、コンパイル、インタラクティブなデバッグをすばやく容易に行えるようになっています。

 Flexフレームワークには、100種類を超える拡張可能なコンポーネントのクラスが含まれています。この中には、UIコントロール(ボタン、リストボックス、スライダー、ステッパー、データグリッド、チャートなど)、コンテナ(VGroup、HGroup、Panel、Formなど、適応性のあるアプリケーションインターフェイスの構築に役立つもの)、マネージャー(スタイル、ドラッグ&ドロップ、フォーカス、ポップアップ、カーソル、ブラウザ履歴、ディープリンクなど)、リモートプロシージャーコール(HTTP要求、Webサービス、リモートオブジェクト)、フォーマッター、バリデーター、ユーティリティなどが含まれます。

 Tour de Flexアプリケーションは、Flexフレームワークについて調べ、様々なコンポーネントの動作を確認するために使用できます。

ActionScript

 Flexアプリケーション(Flexで作成したswfファイル)は、ActionScriptとMXMLという2つの言語で作成します。

 ActionScriptは継承に基づくオブジェクト指向スクリプト言語であり、ECMAScript標準に基づいています。最新バージョンのActionScript 3は、ECMA-262第4版に基づいています。この版は、提案はされましたが、承認と公開は行われませんでした。

 構文とオブジェクト指向機能は、Javaによく似ています。クラスを定義して拡張し、インターフェイスを定義して実装し、private、public、protected、内部(パッケージ)の名前空間を使用します。Javaと異なる点は、クラスを定義する際にpackageキーワード内部で中括弧を使用すること、メソッドの定義にfunctionキーワードを使用すること、Javaで用いられるデータ型接頭辞の代わりにコロンの後のデータ型指定を使用することです。

 また、データ型指定はオプションです。すべてのデータに型を指定すれば、IDEのコードヒントや、コンパイル時と実行時の型チェックが利用できます。一方、柔軟性が必要な場合は動的型指定も使用できます。

MXML

 MXMLは便宜のための言語です。宣言的なタグベースのXML構文を使用して、ActionScriptを生成する方法を提供します。

 アプリケーションをコンパイルすると、MXMLが解析されてメモリ上でActionScriptに変換され、ActionScriptがバイトコードにコンパイルされてswfになります。

 MXMLはまったく使用しないことも可能ですが、通常はアプリケーションインターフェイスの定義に用いられ(レイアウトを定義するには、MXMLコードのほうが対応するActionScriptコードよりも簡潔でわかりやすくなります)、ActionScriptはアプリケーションロジックの作成に用いられます。ロジックが別々のActionScriptクラスに分割されるように、MXMLコードも再使用可能な別々のMXMLコンポーネント、すなわち別々のActionScriptクラスに分割できます。

サードパーティ製メッセージングフレームワーク

 Granite DSは、LiveCycle Data Services(後述)の代わりとなる無料のオープンソースフレームワークであり、Flex/EJB 3/Seam/Spring/Guice/POJOアプリケーション開発のための、AMF3/RemoteObjectの利点をすべて備えたフレームワークを提供します。

 Midnight Codersが提供しているWebORB for Javaは、Flex(およびFlash、AJAX、Silverlightクライアント)を、Javaオブジェクト、Spring Beans、EJB(v1またはv3)またはXML Web Services、ネイティブオペレーティングシステムリソース、リッチメディアストリーム(オーディオ、ビデオ)と接続する機能を持ちます。

サーバーおよびサーバーサイドテクノロジー

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アプリケーションの構築に使用されるテクノロジーを紹介しました。これらのテクノロジーについて詳しくは、以下のリソースを参照してください。

※告知:Adobe AIR Contest 2010今年も開催!

Adobe AIR Galleryに登録された優秀なAIRアプリケーションを決定するコンテスト、Adobe AIR Contest 2010が今年も開催されます。優秀作品には、Adobe MAX 2010(2010年10月/米国ロサンゼルス)への招待、Adobe Creative Suite製品のプレゼントが贈られます。登録締め切りは2010年8月31日まで。【詳細はコチラ

「FlexではじめるRIA開発」特集、絶賛公開中!

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5307 2010/08/05 14:09

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング