読者です 読者をやめる 読者になる 読者になる

ビープラウド社長のブログ

株式会社ビープラウドの社長が、日々の思いなどを綴っていきます。

BP Study第13回開催報告

報告が遅れましたが、9月26日(金)にBP Study第13回が開催されました。
(先週から今週にかけて超多忙でした。。土日も仕事です。(ノ_-。) 。。。っていうのは遅れた言い訳です)

BP Studyには週末にも関わらず、24人の方々にご参加いただきました。毎回ありがとうございます!

今回のMCはスティルハウス佐藤一憲さんにご担当いただきました。

題材はAdobe AIRRailsJavaによるコラボ・ツール開発』でした。

一憲さんの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 ソケット、JSONXML、AMF
FLEXAIRで開発はほとんど変わらない。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