作成日: 2008年11月13日 | |
作成者:(株)エスアイヤ | 代表取締役 河野俊之 取締役CTO 木戸間 周平 |
最終更新日: 2008年11月13日 |
今回は、リッチインターネットアプリケーション(以降RIA)の実現に欠かせないFlashのバックエンドシステムとしてColdFusionが果たす役割、そしてColdFusionがFlash連携のバックエンドに適している理由を解説します。
FlashでRIAを実現するためには、サーバーサイドとのデータ連携はとても重要です。RIAではさまざまなデータを扱うことが多くなりますが、Flash単体ではデータアクセスに関しての制限が大きいため、複雑なデータを扱うためにはサーバーサイドとの連携が不可欠になります。FlashがColdFusionと連携することで実現できることも、このようなデータ連携に関するものです。ColdFusion側からFlashというものを見たときにイメージしやすいものは、MVCモデルのView及びControllerではないでしょうか。場合によってはModelの役割を含んでいることもあるかと思います。すなわち、通常のHTMLと大きく異なる点は、Flash側にも何らかの処理が介在するという点です。このときColdFusionはModel,やControllerの一部といった役割を担うことになります。
FlashのバックエンドにColdFusionが適している理由のうち、最もシンプルなものは、皆さんもご存知の通り、ColdFusionもFlashもAdobe社の製品であるということです。同じ会社の製品同士ですから、親和性が高く安心感があるということは直感的に理解していただけるのではないでしょうか。
もちろん、そんな当たり前のことだけがColdFusionをお薦めする理由ではありません。ここからはより突っ込んだ話題に触れながら、ColdFusionの機能がいかにFlashのバックエンドに向いているのかを解説します。
ColdFusionとFlashの連携にはFlash Remotingという技術を使う方法が一般的です。Flash Remotingを使わずにFlashとの連携をとることも可能ですが、ColdFusionの持つFlash連携機能をフルに活かすためには、Flash Remotingを使うことが必要となります。
Flash RemotingとはFlashコンテンツとWebアプリケーションの効率的な連携を実現する機能で、ColdFusionサーバーにゲートウェイとして標準的に備わっています。Flashコンテンツとサーバーサイドのプログラム間の通信はHTTP(S)プロトコル上に実装されたActionMessagingFormat(以降AMF)というバイナリプロトコルで行われます。AMFでは、通信されるデータがバイナリで表現されるため、HTTP(S)上を流れるデータのサイズを圧縮し、ネットワーク帯域を有効に利用したアプリケーションを構築することができるという利点があります。また、不要なデータ抽象化レイヤーを排除するため、処理効率的にも有利です。
実際にFlashとの連携を行う際、ColdFusion開発者はFlash Remotingを使うということを特に意識する必要がありません。前回紹介したColdFusionコンポーネント(以降CFC)を使うことで異なるアーキテクチャから(この場合Flash側)CFCで作られたメソッドを呼び出すことができるからです。また、ColdFusionで取得したクエリーオブジェクト(レコードセット)など複雑なデータ型をやり取りするときでもFlash Remotingゲートウェイがデータを自動的に変換してくれるためFlashとの連携という事を意識することはありません。ColdFusionの開発者もFlashの開発者もなじみのあるデータ型でやり取りすることができるため、それぞれの担当箇所の開発に専念することができるようになります。
ColdFusion以外の言語でも、LiveCycle Data Services ES やBlazeDS、WebORB等といったミドルウェアを使うことで、AMFを使ったFlash連携が可能です。これらのミドルウェアには有償のものも無償のものもありますが、いずれにしても別途インストールし、設定を行う必要があるため、ColdFusionのように標準で用意される手軽さはありません。この違いは、単に時間がかかるということ以外にも、実際のプロジェクトにおいて、開発環境や本番環境の構築にかかる工数やライセンス費用等といった形で影響があるのではないでしょうか。
また、ColdFusionでFlash Remotingを使ったビジネスロジックを構築した場合、コードの変更なしに、構築したビジネスロジックをウェブサービスとして公開したり、Flashの代わりにAjaxからメソッドを呼び出したりということもできます。
今回はFlashとの連携にColdFusionが適している理由という観点から、Flash Remotingを利用した開発においてColdFusionが果たす役割というものを見てきました。
別途ミドルウェアを導入することで、ColdFusion以外の言語でもFlashのサーバーサイド連携にAMF を使うことはできますが、やはり言語が標準で提供している機能を使っているということの安心感、導入に関する手軽さはColdFusionが他の言語よりも大きく勝った部分であるといえます。
今回扱った「Flash Remotingを使ったFlashとColdFusionの連携」に関してはColdFusion 8プロフェッショナルガイドのChapter4にてソースコードを含めて詳しく解説しています。こちらも是非ご覧頂ければと思います。
次回は、Ajax、Flex、AIRとColdFusionの連携について解説します。