Flexとは
Flexとはいったい何でしょうか。最も簡単な答えはこうです。Flexとは、Adobe Flash Professionalで作成されたAdobe Flash Player上のアプリケーションを作成する方法の1つです。FlexアプリケーションはコンパイルされてSWFファイルになり、ブラウザー内部で Flash Playerによって実行されます。
Adobe Flash Professionalで作成されたAdobe Flash Player上のアプリケーションを作成する方法がもう1つ必要になった理由は何でしょうか。これまで、このようなアプリケーションは、Flash Professionalオーサリングツールを使って作成されていました。このツールを見ると、これが主にデザイナー向けであることがわかります。ここには、ステージ、タイムライン、描画ツールなどがあります。
アプリケーション開発に生産性を求める場合、コンポーネントが使用できることや、コードの再使用によって開発を効率化できることや、最新のIDEが使用できることなどが重要です。
そこで、先ほどの答えをもう少し詳しく言えば、Flexとは、Flash PlayerまたはAdobe AIR内部で動作するリッチインターネットアプリケーション(RIA)をデベロッパーがすばやく作成できるようにするためのオープンソースフレームワークであるといえます(組み込みUIコンポーネントの一覧については図1を参照)。このフレームワークは、Flex 2、Flash Player 9、ActionScript 3の登場とともに、現在とほぼ同じ形態になりました。最新バージョンはFlex 4です。
Flexを導入する理由
上記のように、Flexを使用すれば、Flash Player(Webアプリケーション)またはAdobe AIR(デスクトップアプリケーション)向けのアプリケーションを作成できます。それでは、Flash PlayerまたはAdobe AIR向けのアプリケーションを作成できると何がいいのでしょうか。
それには少なくとも2つの理由があります。RIAとコンテキストアプリケーションです。
Webアプリケーションとデスクトップアプリケーションを比較すると、次のようなことがいえます。
- Webアプリケーションの利点は、ブラウザーとインターネット接続があればどこでも使用できることです。配布と保守のコストも小さくなります。サーバーに新しいバージョンを置くだけで、すべてのクライアントがアップデートされるからです。
- デスクトップアプリケーションの利点は、高機能のUIを提供できることと、ユーザーの操作に対する応答性が高いことです。
このように、これら2種類のアプリケーションには、それぞれの強みがあります。そこで、Webアプリケーションのアクセスと利用のしやすさと、デスクトップアプリケーションの高機能性と応答性を兼ね備えたもう1つの種類のアプリケーションがあればいいのではないでしょうか。実際には、この種のアプリケーションは既に(Macromediaがこの呼び方を初めて使用した2002年以来)存在します。それはリッチインターネットアプリケーション(RIA)と呼ばれています。Flexを使えば、RIAを簡単に作成できます。
2002年の誕生以来、RIAは様々な発展を遂げてきました。最初の頃は、公開されるアプリケーションに使用されていました。近年では、企業のファイアウォール内部でRIAが用いられるケースが増えています。RIAを企業で使用すると、ROIを向上させることができます。図2と3では、車の衝突事故に関する簡単な形式のデータ収集をRIAで実装する方法を示しています。ユーザーがテキストエリアにたくさんの情報を入力する代わりに、ユーザーインターフェイスを通じて車を選択し、損傷を記述し、事故の様子を描写できるようにすることができます。
Flexでアプリケーションを構築した場合、Flash Playerをインストールしていないユーザーがアプリケーションを利用できないという問題があるのではないかと思われるかもしれません。しかし実際には、何年にもわたって、インターネットに接続されたコンピューターの98%にFlash Playerがインストールされているので、これは問題ではありません。
さらに大きな利点として、Flexを使用すれば、ブラウザー間のJavaScriptやCSSの実装の違いや、同じブラウザーの異なるオペレーティングシステムの間での違いに悩まされることがないのです。Flash Playerをターゲットにすれば、OSやブラウザーが異なっても一貫性のある結果が得られます。
それでは、コンテキストアプリケーションとは何でしょうか。コンテキストアプリケーションとは、「異なるオペレーティングシステム、プラットフォーム、デバイス、異なる、あるいは変化するネットワークタイプ、ユーザー固有の期待や好みなどに対して、表示とパフォーマンスを適合させる能力を持つことを特徴とする」ものです。
コンテキストアプリケーションのわかりやすい例としては、The New York TimesのTimes Readerが挙げられます(図4と5を参照)。これはFlexで作成されたAdobe AIRアプリケーションであり、デスクトップ、ノートブック、PC、タブレット、携帯電話機の上で動作します。オフライン動作もサポートされています(ニュースをローカルに保存して、接続していない状態で読むことが可能)。このアプリケーションには、コンテンツを画面のサイズに適合させる機能があります(列の数を増減したり、現在の画面のサイズに合わせてアクティブ画面から写真や記事を削除したりできます)。
最後に、携帯機器の世界について付け加えておきます。スマートフォンのユーザーは増え続けており、従来は有線接続のノートブックやデスクトップでしかできなかったことが、このようなデバイスでできるようになりつつあります。この流れは今後も止まることはないでしょう。遠くない将来、携帯デバイスからインターネットにアクセスするユーザーの数が、コンピューターからアクセスするユーザーを超えると見られます。このようなデバイス向けにアプリケーションを作成するには、どうすればいいでしょうか。実はこの作業は、控えめに言っても苦行に近いものです。それは誰の責任でもありません。たくさんの会社が様々なデバイスを製造している現状では、プラットフォームごとにやり方が違うのは当然のことです(Symbian、Web OS、BlackBerry、Android、Windows Mobile、iPhoneなど)。
2010年に、アドビは携帯デバイス向けのFlash Player 10.1とAdobe AIR 2をリリースします(最初のターゲットはAndroidとBlackBerryです。iPhone用には、次バージョンのFlash Professionalで、Flashアプリケーションをネイティブアプリケーションにパッケージ化できるようになります)。携帯デバイスに適したFlexフレームワークの開発作業が現在進行中です。これが完成すると、現在のFlexアプリケーションを携帯デバイス向けにも展開できるようになります。
FlexとAJAX
FlexとAJAXはどちらもクライアントサイドのテクノロジーであり、RIAの作成にも、既存のWebアプリケーションの強化にも利用できます。Flexの場合と同様、AJAXアプリケーションは初期応答がレンダリングされた後でサーバーに要求を行い、サーバーがその呼び出しに対する応答を返したら、応答を既存のページに挿入します。
FlexがFlash PlayerまたはAdobe AIR用のアプリケーションを構築するためのアプリケーションフレームワークであるのに対して、AJAXはJavaScript、HTML、CSSを含むテクノロジーと技法の集合を表す用語です。AJAXで作業する場合は、フレームワーク(Ext JS、Dojo、jQuery、Prototypeなど)を使用するのが普通です。その理由は、ブラウザーの間でのJavaScript/HTML/CSSの実装の違いに対処するためです。
ここまでの説明をふまえて、どのテクノロジーを選択するかは、あなた次第です。動的で型指定が弱いプロトタイプベースの言語がお好みの場合は、AJAXの方が気に入るでしょう。JavaScriptを知っていて、新たに別の言語を学びたくない場合は、やはりAJAXが最適です。型指定が強いOOP言語や最新のIDE機能を使用したい場合は、Flexをお勧めします。AJAXでできることに比べると(HTML 5の新しい追加機能を考慮しても)、Flex(およびFlash Player)のほうが柔軟性と機能の点では上であると思われます。ただし、どちらかが他方より優れているということはありません。どちらを選ぶかは、プロジェクトの性質やデベロッパーの経験によります。
実際に、両方のテクノロジーを使用して、どちらか一方だけでは不可能と思われることを実現している人々も大勢います。
FlexとPHPの組み合わせ
Flexはクライアントサイドのテクノロジーであり、PHPはサーバーサイドのテクノロジーです。どちらのテクノロジーも非常に成熟しています。ツール、フレームワーク、ライブラリなどが用意されており、あらゆる種類の作業やアプリケーションに関する記事やサンプルが見つかります。
どちらのテクノロジーもオープンであり、どちらも理解するためにかかる時間は最小です。FlexまたはAdobe AIR SDKと、PHPとviの組み合わせは無料で使用でき、ランタイム(Flash PlayerまたはAdobe AIR)およびWebサーバーとPHPの組み合わせについても同じことがいえます。
IDEを使ってコーディングするのに慣れている場合は、Flash BuilderとZend Studioを購入して、Flex+PHPプロジェクトのための強力な環境を構築できます(これらのIDEはどちらもEclipseをベースとしており、同じEclipseインスタンスに一緒にインストールできます)。
その結果得られるのは、テキスト、ビデオ、サウンド、アニメーション、ジェスチャー、マルチタッチを使用して、リッチユーザーインターフェイスを作成できること、リアルタイムのコラボレーション型アプリケーションを作成できること、OSやデバイス(コンピューター、スマートフォン、タブレットなど)の違いに関わらず同じテクノロジーとワークフローを使用できること・・・そして、それらすべてを楽しみながら実現できることです。
Adobe AIR Galleryに登録された優秀なAIRアプリケーションを決定するコンテスト、Adobe AIR Contest 2010が今年も開催されます。優秀作品には、Adobe MAX 2010(2010年10月/米国ロサンゼルス)への招待、Adobe Creative Suite製品のプレゼントが贈られます。登録締め切りは、2010年8月31日まで。【詳細はコチラ】