講師に訊け! ~ よくわかる!Flex
「Macromedia Flexって、何ですか?」
という質問を、よく頂きます。
ならばということで、「Flex(フレックス)って何ですか?」という質問を、
株式会社セカンドファクトリー 東 賢 氏にお伺いしてきました。
今日は、よろしくお願いします。それでは早速ですが、「一言で言うと、Flexとはなんですか?(笑)」
(笑)一言っていうのは本当に難しいんですけど、「Flashアプリケーションを生成できるプレゼンテーションサーバー製品です」、という答えになりますね。
「アプリケーションサーバー」とは、違うのですか?
違います。Flexをどういうものかを理解するためには、RIA(リッチインターネットアプリケーション)のアーキテクチャをしっかり理解する必要があります。
RIAの世界では、サーバー、通信、クライアントという、3つのレイヤーが存在しており、処理のロジックはサーバーとクライアントの両方に存在することになっています。
これまでのアプリケーションサーバーの世界ではロジックはサーバー側で完結していていました。JavaScriptというものがありますが、基本的にはクライアント側にはロジックは無かったわけです。でもRIAでは、クライアント側で何らかの処理を行えたりとか、画面遷移があったりとか、処理ロジックをクライアント側に持ち込めることが可能なのです。それは大きなメリットでもあるのです。
そのクライアント側だけのロジックを担当できるのがMacromedia Flexです。もっと言えば、今までRIAを構築する場合のMacromedia ColdFusionとMacromedia Flashで構築していたところの、Flashの部分を代替できるのがFlexです。ですから、Flex自体には、データベースを参照、操作する機能はありません。
Flexはクライアント側を担当するサーバーと考えてもいいわけですね。これって新しい考え方ですよね。
そうですね。Flexの場合、ユーザーインターフェイスの記述は、XMLをベースにしてマクロメディアが開発したMXMLを用いて、ロジックの記述にはFlashのスクリプト言語であるActionScript(アクションスクリプト) 2.0を用います。
Flexを理解するためには、新しいRIAのアーキテクチャーの世界を知る必要があったわけですね。あ~、だいぶスッキリしてきました。さて、東さんは実際にFlexでの構築案件プロジェクトをご経験されたとのことですが。
ユーザーがデジカメ画像をアップロードして、フォトアルバムっぽいことがWeb上でできるアプリケーションを、フィルムメーカーさんのご依頼で開発しました。例えば、画像をスライドショーで公開したり、アップロードした画像でポストカードを作ったりとかできるものです。こういったことは今まではFlashで開発されている分野でしたが、検討の結果Flexでいこうということになりました。
どうしてFlashではなく、Flexを採用することになったのですか?
もちろんFlashでも良かったわけなんです。しかし、Flexを選択した理由がいろいろあります。ひとつは、サイト上の文言の変更といったことが頻繁に起こるだろうと予想されていたことです。何か変更がある場合、Flashでは、変更を製作業者に依頼し、変更作業を行ってもらう必要があります。そうではなくて、そういったメンテナンス面を自分たちでやりたいという強い希望があったので、そういうリクエストに答える必要があったわけです。
次の理由として、すでにJ2EE環境のシステム構築をずっとやられていて、そのシステムを担当している会社とのコミュニケーションの方法を考える必要があったことです。Flashで作成したユーザーインターフェイスであれば、JSPからのパラメーターの受け取りをFlashでオブジェクトタグでパラメーターを書いてくださいという話になり、Javaプログラマーにとっては厄介な話になるわけです。
ところが今回は、MXMLで記述したユーザーインターフェイス部分のソースを.jspファイルに埋め込んでしまっているのです。つまり、Javaプログラマーにとっては、Flashのオブジェクトがどうしたとかいう厄介な話ではなく、ソースレベルでの管理ができるようになり、非常にやりやすくなるだろうという判断がありました。
そして、もうひとつは、ASP提供を行うということが事前にわかっていて、その対応も考慮しました。Flashで構築した場合、ASPを提供するところに合わせてロゴの画像なんかを差し替えた場合、.flaファイルに変更作業を行い、再コンパイルが必要になります。一社二社ならまだしも、これから営業をかけて増えて行くことを考えた場合、それは自分たちでできないと意味がないというお客さまのお話がありました。Flexなら外部パラメーターで画像を読み込み、動的にコンパイルできるので、簡単に実装できるわけです。
総じていえることは、お客さまが自分たちで、自分たちのサイトを、自分たちでメンテナンスを何とかしたいと思われていて、その中にFlashが組み込まれていたので、必然的にFlexが選択肢として浮上してきたのです。
なるほどですね。苦労話なんかをお伺いしたいところですが、そのあたりはFlexクイックマスター(講座)でお願いします。
はい、わかりました(笑)。
では、技術者の方にイメージしやすいよう、少しだけ具体的な話をさせてください。よくあるご質問で「J2EEとFlexはどんな感じで連携するのか?」ということなんですが。
Flexの側にゲートウェイサーバーがあって、Flash側からJavaのオブジェクトを名前空間、メソッド、引数でアクセスしていくというやり方です。そのゲートウェイというのは、Macromedia Flash Remotingと呼ばれている製品がFlexにビルトインされているものです。これを使えば、今まで使っていたJ2EEの既存資産の再利用は、結構うまくできるのではないかと思います。
そろそろイメージが湧いてきたところでFlexクイックマスター(講座)の宣伝と参りましょうか?(笑) 講座の内容、習得目標等教えてください。
まず前回の「Flexハンズオン講座」でもやったのですが、Flexのオーバービューとアーキテクチャーをしっかりご理解頂きます。また、さっきのご質問にもありましたように、FlexからJavaのオブジェクトにどういう風に接続して、サーバー上にあるものをどういう風に利用するか?といった、J2EEのエンジニアの方なら関心を寄せる内容も扱います。そして、MXMLを記述することでインターフェースを作ることもやってみます。
ここまで一通りやれば、簡単なアプリケーションが作れるはずなので、Flexで簡易に書けるというところも生かして、少しハデ目のアプリケーションを(笑)作ってみたいと思っていて、それをゴールにします。
おそらくFlexクイックマスター(講座)を受講しただけで、実務でFlexをバリバリ使えるというところまでは行かないかもしれませんが、ぜひIS担当者の方やJ2EEエンジニアの方に来ていただいて、Flexの可能性を体感頂き、これをベースに各社での取り組みのヒントにしていただければと、思っております。
それでは最後に何かメッセージを。
![]()
リッチインターネットメディアには、ご存知のように既存の技術がさまざまあります。Flexは150万円しますが、それはコスト的にみると高いか安いかということを、ぜひ講座を通じて判断いただければと思います。専用のクライアントのライセンス料や、専用の開発環境のライセンス料を考慮すると、Flexでは開発環境(Flex Builder)がついてきますし、お好みのテキストエディターも利用できるということ、そしてクライアントがFlash Playerで無料であることを考慮すると、かなりコスト的にインパクトがあると考えます。
また、MXMLとかActionScript 2とか、また新しい言語を覚えなくてはならないと懸念する技術者の方がいらっしゃるかもしれません。ましてや、なんでユーザーインターフェース用に言語なんか!(笑)と思われている方もいらっしゃるのではないのでしょうか?
でも、「ユーザーインターフェース部分の記述」と「ロジック部分の記述」を明確に分ける、というのが世の中の流れのようです。マイクロソフトなんかにもそういった技術も出てきているので、ちょっと頑張ってこういうアーキテクチャーに、早めに慣れていくことをおすすめします。かつ、ActionScript 2は、JavaScriptと同じ言語体系にあるので、それほど習得が難しいものではないですし、ActionScript 2になってからはオブジェクト指向プログラミングの考え方がきっちりと踏襲されているので、とくにJavaエンジニアの方は、親和性が高い言語ではないのではないかと思います。
おそらくここ何年かでリッチクライアントで開発することが当たり前になる時代がやってくると思われるので、それに乗り遅れないためにも、そういう動きをFlexを通して、RIAのパワーとか、インパクトを早めに体感していただければと思います。
お忙しいところ、ありがとうございました。
関連リンク
- お得なパック! 【Adobe Flex 3 RIA開発パック】
- Flexの基本をマスター 【Flex 3: Developing Rich Client Applications】
- サーバーとのデータ通信を学ぶ 【Flex 3 and LiveCycle Data Services: Integrating with Data and Messaging】
- Flexアプリのビジュアルをパワーアップ 【Flex 3: Extending and Styling Components】
- Flexチャートでダッシュボードを作成 【Flex 3: Building Charting & Dashboard Applications】
- AIRデスクトップアプリケーションを作ろう! 【AIR: Building Desktop Applications with Flex 3】
- Flex Builder 2(フレックスビルダー 2)とは?
- Adobe Flex Builder 3 ソフトウェア販売中!
- 株式会社セカンドファクトリー






