本連載では、サーバサイドとして「Java」、リッチなクライアントサイドとしてJavaと相性の良い「Adobe Flex」(以降、Flex)を用いたRIA開発の基礎を解説します。EclipseベースのIDEである「Flex Builder」を使って、「Tomcat」で動くeラーニングのRIAが完成するまでお届けする予定です
編集部注:Flex Builderは、2010年3月の新版から「Flash Builder 4」に名称変更しています。期間限定の無料版をダウンロードして使えます
前回の「S2BlazeDSを用いたFlex+Javaアプリの【いろは】」では、「Hello! S2BlazeDS」アプリケーションを教材に、FlexとJavaを用いたアプリケーション開発の基礎をお伝えしました。今回からはクイズ/eラーニングアプリケーションの作成を通じて、FlexとJava技術の連携に関してお伝えしていきます。
今回の記事は、ポピュラーなサーバサイドJava技術であるStruts(後述)を利用してサーバ側のサービスを作成していますが、本記事の内容は『POSTリクエストを行い、XML形式でデータを受け取るREST(REpresentational State Transfer)なWebサービスとFlexの連携』を行いたいという技術者の方もサンプルアプリケーションのFlex側の作りは丸々流用可能です。
今回作成するクイズアプリケーションの機能要件と完成イメージを先に確認しておきます。
※本稿では、特に解説しません。簡単なエフェクトやSWFファイルの読み込み処理ですので、クイズアプリケーションのソースを参照してください
シンプルなクイズアプリケーションです。クイズの内容、クイズ表示画面、成績発表画面、クイズ移動間のエフェクトを差し替えればさまざまな内容/デザインのクイズ/eラーニングアプリケーションに簡単に応用できるのではないでしょうか。
アプリケーションの解説の前に、全体像も確認しておきましょう。
クイズアプリケーションの処理の流れは大きく3つの処理に分かれます。
前回の記事の「Hello! S2BazeDS」アプリケーションに比べ、以下の3点がアプリケーションの構造として変更されています。
前回記事のアプリケーション全体像は、以下になります。
変更された部分は通信回りの処理だけです。アーキテクチャとしては、Flexベースアプリケーションは基本的に画面ロジックと通信処理が疎結合状態になっています。前回のHelloWorldアプリケーションも、今回のクイズアプリケーションも実際の業務アプリケーションでも、基本的なアーキテクチャはあまり変わりません。
実際に、今回のサンプルアプリケーションでは画面の処理はまったく変えずにサーバの種類を切り替えて処理できるようになっています。今回記事ではサーバ非接続版とStruts版の処理は実装してあります。次回以降、ほかのサーバ技術と連携する場合にも同じ仕組みで切り替える予定です。サーバ処理の切り替えに関してはその処理の解説の部分で簡単に触れます。
ということで、図5の中央の部分を見れば分かるとおり、『POSTリクエストを行い、XML形式でデータを受け取るRESTなWebサービスとFlexの連携』を行いたいという場合は、画面側(図5の左側)のアーキテクチャは丸々流用可能です。
このように、画面側とサーバ側が疎結合になっていることにより、一般的には開発時にそれぞれの層ごとに開発者を分けて並行開発したり、それぞれの層ごとに単体テストができるようになるなど大きなメリットが生まれます。
最後に、図5の右側のStrutsアプリケーションですが、クイズアプリケーションはStruts 1.2.7で提供されている「struts-blank.war」に前回の記事同様のFlexアプリケーションのパッケージ構造を追加したものになっています。そのため、本稿のクイズアプリケーションをひな型にFlex側、Struts側にクラスを追加してアプリケーションを作成可能かと思います。
すなわち、クイズアプリケーションはflex-struts-blankアプリケーションになっているといってもいいかと思います(実際にクイズアプリケーション固有の部分はパッケージ構造ではっきり分かれているので、その部分を削除してしまえば、純粋なブランクプロジェクト化も可能です)。
次ページからは、クイズアプリケーションのソースコードを見ながら、「E4X」形式やHTTPServiceなどの通信技術を解説していきます。
2000年に登場したStrutsですが、いま現在もJavaEE(J2EE)業務Webアプリケーションの多くで使われている技術なのではないでしょうか。新規案件での採用は少なくなっているとしても、これまでのノウハウの蓄積量やStruts技術者の数、案件での実績などはやはり揺るがないところだと思います。Flexと連携する際には、2008年7月現在、主に4種類のStrutsが存在します。
編集部注:Struts 1系について詳しく知りたい読者は、連載「Strutsを使うWebアプリケーション構築術」をご覧ください。
既存S2Struts案件や顧客環境がJDK 1.4の場合はS2Strutsの方がいいようですが、新規案件ではSAStrutsを採用する方がいいようです(参考:作成者のひがやすを氏のブログ)。
ちなみにどの技術を用いても、今回の記事の処理の流れでFlexと連携させることが可能です。ただ、Flexをクライアント技術に採用してSeasarをサーバ技術に採用する場合は、次回以降解説する技術(S2Flex2やS2BlazeDS)を用いて、Flexから直接コンポーネントを高速に呼び出すのがいいでしょう。
Copyright © ITmedia, Inc. All Rights Reserved.