報告が遅れましたが、9月26日(金)にBP Study第13回が開催されました。
(先週から今週にかけて超多忙でした。。土日も仕事です。(ノ_-。) 。。。っていうのは遅れた言い訳です)
BP Studyには週末にも関わらず、24人の方々にご参加いただきました。毎回ありがとうございます!
今回のMCはスティルハウス佐藤一憲さんにご担当いただきました。
題材は『Adobe AIR+Rails+Javaによるコラボ・ツール開発』でした。
一憲さんのMCは、ボリューム、内容の構成、時間配分が、本当にバランスがよく、教師に説明を聞いているかのような感覚になりました。Webのリッチ化が進めば、Flashのプラットフォームを用いた開発は、これからもさらに増えてくるので、まだFlashの開発に取り組んでいない方にとっても、とても有益な内容だったのではないかと思います。
- -
以下に私がメモをしたまとめを書きます。
■Colabolo
・ メッセンジャー感覚で使えるタスク管理ツール(2008年9月リリース)
・AIRなので簡単にDL:インストール。β版は無償
■Adobe AIRによるRIA開発
・インストール
DLするファイルは、.airという拡張子
・証明書はビルドのタイミングで組み込む
・Air1.1から日本語OK
■ローカルDB(sqllite)に保存したデータ
・ポーリングとPUSHでサーバと同期
・ローカルDBなので、サクサク動く
・PUSHの場合、ステータスなど変更がすぐに反映される
・ユーザがオンラインかオフラインか判定するAPIがある
■P2Pでファイル共有を実現
・トラフィックはサーバー経由
・1クライアントからサーバに同時に張れるHTTPコネクション数は制限されているかもしれない
■Adobe AIRによる開発
・Flashランタイムがベース
・ネイティブ機能が利用できる
・ファイルI/O、ドラッグ&ドロップ、ローカルDB
・サーバー側は何でもOK
・HTTP or ソケット、JSON、XML、AMF
・FLEXとAIRで開発はほとんど変わらない。AIR用のAPIがあるからその分、APIが多い
■開発ツール
FLEX Builder3、Flash CS3、DreamWeaver CS3
MXML+ActionScriptでコーディング
長いコードは独立したクラスに書く
■AIRアプリ更新
サーバからアプリ更新通知を受け取る
■AIRDB
sqlliteがローカルDB
・DAOをつくる
・キャッシング、トランザクション管理
・一憲さんが欲しい機能
ORM
キャッシング、トランザクション管理
DB→オブジェクト→UIの連携
Dockアイコン、タスクトレイに常駐、ユーザ通知、印刷
■コラボツールの特徴
・リアルタイムでのDB同期
・バックグランドで更新差分を同期
・バージョニング方式(楽観的ロック)
ローカルDB+リアルタイムDB同期のメリット
・デスクトップアプリのメリット
UIレスポンス
サーバトラフィック抑制
・オンラインアプリのメリット
リアルタイム
メッセンジャー感覚、DBスキーマを更新
・デバッグが難しかった。再現しにくい
・ローカルDBスキーマの更新をどうするか
→バージョン番号にDB番号を用意し、その番号がアップしたときという設計
■DB同期サーバ
Rails2.0で開発
→少ないコードで実装できた
■メッセージングサーバ
選択肢
(1) Adobe Blaze DS -- スケーラビリティに疑問(非同期ができない?)
(2)Adobe LiveCycle Data Services --価格が高い
(3)Java NIOを利用して独自実装 非同期I/O、ノンブロッキング
→(3)を選択
最初、Winでテストしたら、想定通りに動作せず負荷が高くなった
Linuxでテストしたら、想定通りに動いた。
■AIR開発雑感
・ActionScript -- JSと文法似ている
・APIや実装は全く違う
・XMLを直接書ける
・クロージャと継続渡し(CPS)
GUIアプリではイベント処理/非同期処理が中心
コールバックされたら続きを処理するといようなことをしたいので、そのようなときにクロージャは便利
・データ・バインディング
実体はイベント処理
→デバッグしにくい。デザインパターン、アンチパターンが必要である
・アーキテクチャ(フレームワーク)
Cairngorm,PureMVC、yui-frameworks
■AS3 開発ここが困った
・テスト、デグレが大変(再現性など)
・クラスライブラリの奥が深い→かなり抽象化されている
・柔軟性は高いが、習得に時間がかかる
今年の目標:100エントリーまであと29