初級
Flexデベロッパになるなら今が絶好のチャンスです。2006年6月、アドビではデベロッパ向けツール、ライブラリおよびランタイムサービスを備えたFlex 2をリリースしました。Flex 2を使用することで、デベロッパはどのような環境でもFlash® Playerランタイムを利用したリッチインターネットアプリケーションを構築し、デプロイできます。Flex 2はこれまでに、何万人ものデベロッパや、ヒント、秘訣、コード、多数の商用コンポーネントやオープンソースコンポーネント、アドオンなどを共有する活動的なコミュニティに採用され、大成功を収めています。もちろん、何百ものアプリケーションが新たに構築され、毎日続々とオンラインに公開されています。Flex 2がリリースされてからの短期間で、Flash Player 9は以前のバージョンのFlash Playerと同様に従来の普及傾向をたどり、成熟市場において84%を超える普及率を達成しました(2007年3月現在。6月までに90%に達することが予想されています)。さらに喜ばしいことに、Flexは今年、Web開発部門において2回目となるJolt Awardを受賞しました。
また、先日アップデートされ、LiveCycle Data Services ESに改称されたFlex Data Servicesも大きな成果をあげています。LiveCycle Data Services ESを利用すれば、ユーザインタフェースに限らず、システム間のデータ通信処理においてもリッチさを拡充し、さらに、アプリケーションに一層革新的なサービスを実装できるようになります。LiveCycle Data Services ESは、LiveCycle ESアプリケーションの統合、PDFドキュメントの生成、HibernateやSpringなどの統合フレームワークの拡大といった新機能が追加され、RIAをJ2EEインフラストラクチャに接続するための決定的なソリューションを実現します。
こうした成果に基づき、このたびFlex Builder 3およびFlex 3の初のパブリックプレリリースを発表できることになりました。開発がほぼ完了する段階で発表されていた従来のパブリックベータ版と異なり、今回のベータ版は、開発プロセスの早い段階でリリースされます。そのため、バグの発生件数は高くなることが考えられますが、コミュニティからフィードバックを寄せていただく機会も増えるでしょう。これらのフィードバックは最終リリースに反映されます。
Flex 3では、Adobe® Integrated Runtime(Adobe® AIR™、旧称Apollo)のサポートを追加するだけでなく、リッチインターネットアプリケーションの構築に多くのデベロッパが参加できるようにすることと、既存ユーザから強く望まれている機能を実装してプラットフォームを強化することにも重点が置かれています。Flex 1.5を使用してすでにアプリケーションを構築していたユーザにとって、Flex 2は大幅な変更を意味しましたが、Flex 3は、言語の変更を一切伴わず、あらゆる主要なユースケースにおいてFlex 2との下位互換性を確保する予定です。動作上の相違点はすべてリリースノートに記載されています。また、大半の変更は、互換性フラグを指定することによって、Flex 2と同じ動作に設定することが可能です。Flex 3では、Flash Playerに関連した新しい要件は追加されていません。Flex 3のアプリケーションは、Flash Player 9のすべてのバージョンでサポートされます。またFlex 3は、LiveCycle Data Services ESともシームレスに連動します。
Flex 3リリースは、デザイナー/デベロッパワークフロー、データの操作、Adobe AIRアプリケーション、プラットフォームの進化の4つの主要なテーマで構成されています。ここでは、注目すべき機能をいくつか簡単にご紹介しましょう。
これらの機能について、以下の節で詳しく説明していきます。
オンラインアプリケーションのユーザビリティと全般的なエクスペリエンスを高めると、生産性の向上、サポートコストの削減、顧客満足度の向上、そして収益の増大を達成できることは、大半のデベロッパや管理者にとって既知の事実です。Flex 2を使用して独自のエクスペリエンスを構築することは可能ですが、必ずしも容易ではありませんでした。Flex 3では、この問題を解決するための機能がFlex SDKとFlex Builderの両方に追加されたほか、最近リリースされたCreative Suite 3製品とのスムーズな統合も可能になりました。
新しく作成されたFlex Component Kit for Flash CS3は、Flashでコンテンツを作成し、Flexアプリケーションにシームレスに統合するための完全なワークフローを実現します。Flashユーザは、使い慣れたFlashタイムラインモデルでコンポーネントを開発した後で、簡単なパターンに従うだけで、Flexデベロッパがコードを追加しなくてもこれらのコンポーネントを組み込むことができるようになります。Flex Component Kitは、関連したSWCコマンドとJSFLコマンドを含む簡単なMXPで、Flashデザイナーは、このMXPを使用することで、Flexの開発を直ちに始めることができます。
Flex Builderには、アプリケーションのスキニングを容易にする新しいウィザードが追加されています。デザイナーは、オプションのテンプレートを土台にして、Flash、Fireworks、Illustrator、Photoshopのうち希望のCS3アプリケーションでアートワークを作成できます。Flexデベロッパは、準備ができ次第、そのアートワークをプロジェクトに読み込んで、コンポーネントのスキンとして適用できます。
Flex 3によって、Flex BuilderとFlex SDKを使用したデザインタスクも容易になります。Flex Builderのデザインビューが機能強化され、アイテムレンダラーを正確にプレビューできるようになったほか、パンツールとズームツールが追加され、より精密な操作が可能になりました。また、ビジュアルCSSエディタが新しく加わったため、Flex BuilderユーザはFlexコンポーネントのスキンとスタイルをグラフィカルに操作できます。このユーザインタフェースは、好評なFlex Style Explorerと似ており、アプリケーションのCSSのラウンドトリップ編集が可能になります。
Flexフレームワークも拡張され、より柔軟なデザインが可能になりました。レイアウト用のFlex「ボックス」モデルは、リキッドレイアウトを作成するためのシンプルなメカニズムを提供しますが、UIデザイナーの意図が反映されるとは限りません。Flex 3では、Flex 2で導入された制約ベースのレイアウトシステムを拡張して、兄弟関係の位置付けなどの複雑なシステムに対応しています。デベロッパはこのモデルをコードに直接組み込むことができますが、Flex Builderのデザインビューの機能強化によって、このレイアウトシステムは今後ネイティブでサポートされる予定です。
注意:機能強化された制約レイアウト対応Flex Builder UIは、Flex 3ベータ1では使用できません。
多くの場合、リッチインターネットアプリケーションでは、ユーザによるデータ操作が重要視されます。Flexには、List、DataGrid、Tree、各種チャートなど、様々なデータ可視化コンポーネントがあります。これらのコントロールで表示するデータにアクセスするため、Flex SDKには多数のサービスが用意されています。例えば、RESTスタイルのデータにアクセスするためのHTTPService、SOAPで公開されたWebサービスにアクセスするためのWebService、コンパクトなバイナリプロトコルAMFで公開されたWebサービスにアクセスするためのRemoteObjectなどです。Flex 3によって、デベロッパがFlexサービスを使用してデータにアクセスするのが容易になるだけでなく、それらのデータを表示するためのデータ可視化コントロールも増強されます。
Flexを初めて使用する方から、サーバ上に格納されたデータにアクセスする方法がわからないという問い合わせがよく寄せられます。Flex Builder 3には、この操作を支援するための新しいウィザードが追加されました。簡単なユーザインタフェースに従ってデータベースに接続し、サーバ側PHP、Java、またはASP.NETのどのコードを生成してデータを公開するかを選択できます。ウィザードでは、基本的なFlexアプリケーションを実行するために必要なMXMLコードとActionScriptコードもすべて生成されます。これらのコードは、簡単なREST呼び出しによってユーザのデータに対する標準的なCRUD操作を行います。デベロッパは、これらのコードを利用し、今後開発するアプリケーションにどのように組み込むかに合わせて編集することができます。
SOAP Webサービスは、Flexアプリケーションのデータにアクセスするための方法として、今日、デベロッパに最も支持されている方法の1つです。Flex Builder 3では新たにWeb Services Introspectionがサポートされ、このようなデータアクセスがさらに容易になりました。Flex Builder 3は、WSDLの内容を確認してコードを自動生成するので、Webサービス機能の呼び出しと処理が容易になります。生成されたコードによって、サービスで呼び出すことのできるメソッドを示唆するコードヒントが示され、厳格な型付けのオブジェクトに応答がデシリアライズされて、Flexアプリケーションの残りの部分に簡単に組み込めるようになります。
注意:Webサービスウィザードは、Flex 3 ベータ1では使用できません。
Flex 2 Chartingパッケージは、多くのFlexアプリケーションでデータを可視化するために使用される強力なチャート作成コンポーネントを集めたものです。Flex 3では、ユーザからの要望に基づいて多数の機能を強化することによって、このパッケージに改良が加えられています。軸系では、複数の軸を使用できるようになり、DataTimeAxisでは、稼働日に基づくフィルタリングが可能になりました。データ指向の新しいグラフィックスAPIを使用することで、データ座標を作成し、チャートのすべての要素を正しい画面位置にレンダリングできます。さらに、書式設定オプションが強化されたほか、既存のチャートとの対話機能も追加されています。
データ可視化パッケージには、Advanced DataGridという新しいコンポーネントがあります。多くの要望に応えて実現したAdvanced DataGridは、標準のFlex DataGridを拡張したものです。これによって、TreeGridなどの階層データがサポートされ、グループ化や複数列のソートなどの列オプションが追加されたほか、サマリー行などの視覚化を有効にするための書式設定も柔軟に調整できるようになりました。新しいコレクションAPIを使用すると、このグリッドに簡単にデータをフィードできます。また、OLAPタイプの簡単なクエリーもいずれサポートされる予定です。
さらに、一部のListコンポーネントには、コンポーネントの操作性を高めるための機能強化が加えられています。ListとDataGridは、微小なスクロール位置とスムーズなスクロールをサポートするように強化され、ListクラスとTileListクラスは、これらのクラス内でデータが操作された場合の操作の影響を定義できるようになりました。これらのコントロールはデベロッパが頻繁に使用するので、データ指向アプリケーションの表現力が飛躍的に高まることが期待されます。
Adobe Integrated Runtime(Adobe AIR、旧称Apollo)では、Webアプリケーションのメリット(ネットワークとユーザ間の接続、リッチメディアコンテンツ、開発の容易さ、到達範囲の広さ)とデスクトップアプリケーションの強み(アプリケーションの対話、ローカルリソースアクセス、個人設定、強力な機能、対話性に優れたエクスペリエンス)を兼ね備えたアプリケーションを作成できます。Adobe AIRアプリケーションは、通常のデスクトップアプリケーションとして動作し、別のアプリケーションやシェル内で実行する必要がありません(一方、WebアプリケーションはWebブラウザ内で実行しなければなりません)。Flex 3では、Adobe AIRの機能を利用するように設計された新しいコンポーネントを導入し、Adobe AIR開発ツールをFlex SDKおよびFlex Builderに組み込むことによって、Adobe AIRが正式にサポートされるようになりました。
Adobe AIRでは、オープンソースのWebKitエンジンを使用して、忠実度の高いHTMLをレンダリングすることもできます。FlexフレームワークにはHTMLコントロールが追加されたため、HTMLをレンダリングして、Flexレイアウトシステムでの作業中にリンクがクリックされたことを認識するなどの基本的なイベントをサポートできるようになりました。
Adobe AIRでは、1つのアプリケーションに対して複数のウィンドウがサポートされています。Flexには、カスタムとネイティブOSの両方のクロームをサポートし、サイズ変更、最小化、最大化などの一般的なウィンドウ操作を可能にする、Windowコンポーネントが追加されました。Adobe AIRで動作するように設計されたFlexアプリケーションは、新しいWindowedApplicationクラスを使用して、同じウィンドウ機能をメインアプリケーションの一部として提供できます。
また、Web上よりデスクトップで機能が充実しているドラッグ&ドロップなどの概念をFlexフレームワークに組み込み、Adobe AIRで動作するアプリケーションでより多くの機能を活用できるようになりました。
Flex SDKには、Adobe AIRアプリケーションの構築、デバッグおよびパッケージ化に必要なツールがすべて含まれています。Flex Builderの機能も強化され、Adobe AIRへの完全対応が実現しました。つまり、WebをターゲットとしたFlexアプリケーションの構築に使用するツールと同じものを使用して、Flexアプリケーションのコーディング、デバッグ、プロファイリング、パッケージ化、署名を行うことができます。
Flex 2のリリースはすばらしいことでしたが、アドビが必要と考える機能をすべて含めるには時間が足りませんでした。RIAを配布するための最強のプラットフォームを実現する取り組みは、Flex 3に引き継がれ、ツールの機能強化とFlexフレームワークの主要機能の改良が行われています。
よく耳にする問題の1つに、シンプルなFlexアプリケーションであっても、ダウンロードサイズが大きいという問題があります。Flexフレームワークは非常に堅牢ですが、その堅牢さゆえに、サイズが大きいという代償があることも確かです。複数のFlexアプリケーションを構築する場合、デベロッパは、アプリケーション間で共通するコードをランタイム共有ライブラリ(RSL)に抽出することがありますが、このようにRSLを活用できるアプリケーションはほとんどありませんでした。Flash Playerのアップデート版(Flex 3と同時にリリース予定)では、アドビプラットフォームコンポーネントの新しいキャッシュがサポートされますが、Flexフレームワークはこのキャッシュの対象に含まれます。Playerキャッシュは、Flash Playerによって管理されるという点でブラウザキャッシュと異なり、ブラウザキャッシュが消去されても消去されず、アドビによって署名されたアイテムのみを格納します。フレームワークをRSLとして使用するように構成されたFlexアプリケーションをエンドユーザが初めてダウンロードすると、このユーザはRSLの永久コピーを受け取ります。同様に構成されたFlexアプリケーションをこのユーザが次回開くと、アプリケーションのダウンロード元にかかわらず、Flash Playerはビルトインキャッシュに格納されたフレームワークのコピーを使用します。フレームワークをRSLとして使用するようにFlexアプリケーションを構成すると、90~500 KBのサイズ縮小につながります。この機能は下位互換するように実装されているので、最新のFlash Playerをインストールしていないエンドユーザーがアプリケーションを表示するためにアップグレードを強制されることはありません。
Flash Player 9で導入された新しい仮想マシンは、以前のバージョンのFlash Playerより格段に高速化し、メモリ管理も効率化されていますが、パフォーマンスやメモリに問題のあるアプリケーションが作成される可能性は依然としてあります。Flex Builder 3には、こうした問題をトラッキングするための新しいプロファイラが2つ追加されています。パフォーマンスプロファイラは、特定のエリアで実行にどのぐらいの時間がかかったかなど、メソッドの呼び出しをトラッキングします。これによってデベロッパは、アプリケーションのパフォーマンスを最適化できる箇所(またはタイムラグを完全になくすことができる箇所)を特定できます。一方、メモリプロファイラを使用すると、実行中のアプリケーションのスナップショットを取得して、異常な振る舞いをしているオブジェクトを特定できます。これらの新しいツールを使用すれば、Flexアプリケーションが高速化すること間違いなしです。
アプリケーションを高速化することはもちろんですが、開発を高速化するにはどうすればよいでしょうか。Flex Builder 3には、リファクタリングをサポートする新しい言語インテリジェンス機能が追加されています。これによりデベロッパは、クラス、変数、またはメソッドの参照をすべて見つけて、名前を変更し、すべてのクラスを一度にまとめて更新できるようになりました。
Flexアプリケーションは単独で動作するとは限らず、実際には頻繁に大きなHTMLアプリケーションに埋め込まれています。アドビでは今、いくつかの機能を追加することによって、FlexアプリケーションとHTMLラッパー間の統合を容易にすることに取り組んでいます。まず、Flex-Ajax Bridgeライブラリが付属フレームワークの一部として、Flex SDKに正式に組み込まれました。次に、Flex Builderにウィザードが追加され、Flexアプリケーションを呼び出すためのJavaScriptを簡単に作成できるようになりました。FlexデベロッパがFlexアプリケーションのプロパティとメソッドを公開すると、JavaScriptデベロッパは、アプリケーションの内部構造に関する知識がなくても、エディタでサポートされるJavaScriptコードヒントを利用して呼び出すことができます。また、FlexフレームワークにはBrowserManagerクラスが導入されたので、クロスブラウザ形式でのブラウザとの対話を容易に行えるようになりました。BrowserManagerによって、デベロッパはブラウザのアドレスバーを更新できます。これにより、ユーザは、アドレスバーが変更された場合にデベロッパに通知するFlexアプリケーション内の場所にブックマークを設定して、アプリケーションが正しい状態に自動的に設定されるようにすることができます。
Flex 2では、リソースのバンドルをサポートし、特定のロケールでのアプリケーションのコンパイルを可能にすることによって、グローバルアプリケーションに対応していました。Flex 3では、実行時のロケール変更を有効にすることによって、グローバルアプリケーションのサポートがさらに拡張されています。Flex 2.0.1のランタイムスタイル設定サポートと同様に、Flexアプリケーションを一度コンパイルすれば、実行時にロケールを切り替えるだけで、デベロッパが指定した任意の数のロケールを使用できるようになりました。新規ロケールは、実行時にモジュールとしてダウンロードすることもできます。
最後に、Flex 3は確かに魅力的だけれど、Flex 2のプロジェクトを進行中なので、すぐにはアップグレードできないというデベロッパの皆さん。心配はいりません。Flex Builder 3では、Flex 2.0.1向けのアプリケーションも構築できます。プロジェクトプロパティのパネルで2.0.1 SDKを選択するだけで、アプリケーションが以前と同様に動作するようになります。リファクタリングなどの機能も2.0.1 SDKで引き続き使用できます。新しいSDKにアップグレードする準備ができたら、Flex 3 SDKを使用するようにプロジェクトを変更すれば、すべて自動的に設定されます。
アドビではこのたび、Flex 3に組み込まれた便利な機能を発表するとともに、Flex 3のリリースに伴ってSDKコンポーネントをオープンソースモデルに移行することも発表しました。Flex 3の現在のベータ版では、オープンソースインフラストラクチャの第一弾が展開されています。
新しいバグトラッキングシステムは、JIRA上に構築されたもので、バグに関する情報の確認と投稿を目的として公開されています。ユーザは、Flex SDKの主要なバグに加え、Flex Builder関連の問題も調べることができます。以前のように、要望フォームを使ってバグを報告し、バグが解決されたかどうかを気にする必要はありません。新しいシステムによってアドビ社員と一般の人々から投稿されたすべてのバグをトラッキングできるようになります。
また、Flex SDKでは夜間にビルドが投稿されるので、バグ修正プログラムを翌朝すぐに検証することもできます。夜間のビルドは、安定性に欠ける場合が多いので、実際の開発への使用はお勧めできませんが、新機能を試したり、修正プログラムを検証したりするには最適です。
また、新しくFlex Wikiが公開されます。Flex WikiにはFlex 3関連のプランニングドキュメントがあり、リリースの機能をより明確に把握できます。Flex 4の計画も間もなく始まります。デベロッパの皆さんがFlex 4の開発動向を把握できるように、公開Wikiの更新を今後も続ける予定です。
アドビでは、オープンソースプロジェクトに向けた第一歩を踏み出すこと、そしてFlexの透明性を今後さらに高めていくことを大変うれしく受け止めると同時に、今夏にかけてさらなるオープンソースインフラストラクチャの展開を進めていく予定です。アドビが進めるオープンソース計画の詳細については、こちらをご覧ください。
さあ、ためらわずに始めてください。Flex Builder 3またはFlex SDKの早期ベータ版を今すぐダウンロードして、新機能を試してみませんか。フィードバックはバグベースとフォーラムから送信できます。皆さんの開発成果を楽しみにしています。