11/5 に 株式会社フルネス で行われた勉強会に行ってきました。懇親会も行きたかったんだけど諸事情により行けずじまい……
S2Flex2 - AMF3 Gateway with DI Container
id:c9katayama によるトーク。
S2Flex2 とは? クライアント側の Flex からサーバ側の Seaser2 上コンポーネントと通信・連携を行って呼び出すためのフレームワーク。通信プロトコルは HTTP(S) で、通信フォーマットには AMF というものを使用する。jdk1.4 以上で動作するけど、アノテーションなどなどの関係で jdk1.5 以降をフツウは使用する。
ちなみに、個人的にフレームワークの概要図が分かりやすくて良かったなーと思いました。
Flex 2 とは。Adobe が提供している RIA の環境を総称して呼んでいるもの。実は俺自身どっからどこまで何を Flex と呼ぶのかは良くわかってなかったりする。Flex 2 の動作環境は Flash Player9 以降。Flex のバージョンはもうすぐ Flex 4 が出るみたいなんだけど、大枠は Flex 2,Flash Player 9 から変わってないみたい。API とか機能の追加とか色々行われてはいるんだけども。
Flex 2 のデモとしては Flex Developer Center | Adobe Developer Connection など。
MXML の概要について。コレは XML というか HTML のようなもので UI を書くためのもの。見た目に関しては CSS で切り替えたり、スキンといったものでキレイに出来たりする。
ActionScript 3 の概要。ECMAScript 準拠で javascript っぽい言語。でもクラスとか interface とかあるので Java っぽいところもある。講師の人も言ってたけど Java やってるなら、割とすんなり馴染めると思う。
Flex 2 の利点。とりあえず見た目がキレイに作れる。また、Eclipse プラグインの開発環境が提供されているし、AS3 の特性も手伝って Java 屋さんは親しみやすいなど、開発のしやすさはソレナリに高い。それと、MXML や AS3 のソースはテキストなのも利点。昔の flash はバイナリベースだったので、多人数開発での管理がしにくかった。あとは、Flex 2 から実行時にコンパイルが不要になった、とか。Flex 1 ではソレが出来なかったんだとか。swf 生成してサーバに置くだけ、ってのが出来なかった、って感じかな。開発の側面からは、クライアント側でステートを保持できるのが強み、ってのも上げていた。
S2Flex2-components について。クライアントとサーバとの接続コンポーネント。swc ファイルという Java で言うところの jar のような形式で配布されている。
S2Flex2Service を使用したプログラミング。具体的な実装方法についての解説。destination 指定と S2 コンポーネント指定とか、その辺についての解説。まぁこの辺は実際のソース見たほうが良いと思うんで。公式サンプルとかウチの Eclipse3.3 + Dolteng + S2Flex2 の環境作るよ - kagamihogeのblog とか見てあげてくださいw
S2Flex2 の AMFGateway について。コレの実体は Servlet。こいつは AMF0/3 のフォーマットをクラスに変換して、S2 管理下のコンポーネントを呼び出すのが役目。
AMF0 と AMF3 について。大雑把に言って、AMF0 は flash 8 前、flash 9 以降は AMF3 といった感じ。Flex 2 では AMF3 を利用する。Flex 2 でも AMF0 は動くけどフツウは使わんよね、なんて話も。AFM は adobe のオープンなフォーマット仕様。細かいことは amf3_spec_121207.pdf に書いてある。
AMF の大きな特徴は圧縮バイナリ形式なこと。データサイズが小さく、通信が早い。int とかは切り詰めてくれるのでかなり小さくなるんだとか。あと、プリミティブ型に加えて型付オブジェクトもサポートしている。サポートタイプはまぁ色々。
デモ。hello、足し算、DTO のやり取りについてやってました。
設計パターン&Tips について。
セッション情報・ステートは Flex で持たせる。入力・画面遷移でサーバ通信行わない、ってこと。
サーバ通信の結果受け取りは非同期なので、非同期前提の設計を行う。コールバックの扱いが絡んでくるよねたぶん。サーバ側は極力 HttpSession の利用を避け、サーバサイドのビジネスロジック呼び出しを少なく済むようにしましょう、と。
HttpServletRequest, HttpSession はアノテーションで取れるけど、制御がややこしいくなるので避けたほうがいいかも。
サーバ側の受け口は一箇所に固める。サーバ側のクラスはアノテーション付けるとなんでも公開できちゃうんで、公開するパッケージは限定しましょう。
競合フレームワーク。BlazeDS とか LiveCycleDataServices とか。後者は Adobe の商用サーバ。BlazeDS の商用版のようなもの。すごい早いサーバプッシュが(動画配信に使われたりしてるとか)出来たり、PDF 生成サポートしてたりと高機能だけど高い。あとソース非公開。
Teeda - JSF Meets DI + AOP
id:yone098 によるトーク。
Teeda に関しては……たくさん情報でてるから省略でw(手抜きですいません) 公式ドキュメントもすごい充実してるし。あーでも Teeda Core と Teeda Ajax の話聞けたのは楽しかったかも。Core はあんま意識したことなかったし、Teeda Ajax は試したことすら無いんで。
あと、Teeda のテストするモノとして Teeda Test, TeedaTestCase なんてものがあるらしいのもメモ。
参考としてウチの blog で Teeda について触れてるエントリはこんなところ。
Seasar Conference 2008 Autumn のレポート - kagamihogeのblog
Seasar Conference 2008 Spring のレポート - kagamihogeのblog
Seasar2によるスーパーアジャイルなWeb開発 - kagamihogeのblog