日時場所
- 2009/05/27(水)19:00-21:30 アドビシステムズ社
セッション内容
- Adobeからの最新情報
- GAE/JとFlex/AIR
- PDFポートフォリオとFlex
- Flex標準コンポーネント飽きた
RIAに関する最新情報 by Adobe
アドビシステムズ株式会社
マーケティング本部クリエーティブソリューション部
Webグループ
ディベロッパーマーケティングスペシャリスト
轟 啓介様
[お知らせ] Flexのブランド変更
【現状】FLEX3世代
- Flexフレームワーク / Flex Builder
【今後】FLEX4世代(以下の2つに分かれます)
- Flash Builder + Flash Catalyst
- ツールのブランドをFlashに統一
- Flexフレームワーク
- FlexブランドはFBとFCの基盤となっているオープンソースのフレームワークに設定
Adobe Flash Platform アーキテクチャ
[お知らせ] Betaリリース
Flash Builder 4 「FB」
- 2009/06/02(火) @Adobe Labs
- Flex Builder 3の次期バージョン
- 正式リリースは2009年度下期
Flash Catalyst 「FC」
- 2009/06/02(火) @Adobe Labs
- インタラクションデザイン・ツール
- 正式リリースは2010年度上期
[お知らせ] Flex/AIR無償ハンズオンセミナー
- 期間:2009/05~2009/10
- 主催:アドビシステムズ株式会社 / IT塾/Webシステム開発株式会社
- 講師:宮田亮氏(アドビ認定インストラクター)
- 費用:無償
- コース:2時間で下記対象者別に設定(少人数によるハンズオン方式)
- 申し込み:http://www.adobe.com/jp/devnet/air/seminars/
[お知らせ] Adobe AIR アプリケーション
Adobe Developer Box
- RIA開発者向け
- 情報集約ツール
- AIR Galleryから入手
- ソースコード公開中
Tour de Flex
- Flex開発者向け
- コードサンプル集
- AIR Galleryから入手
Tour de LiveCycle
- LiveCycle開発者向け
- LC情報ツール
- Adobe Developer Connectionから入手
[お知らせ] 予定されているイベント
FxUG主催ベータ祭り(仮)
- 2009/06/24(水)
- ゲートシティーホール(大崎)
- Flash Builder 4 / Flash Catalyst / Flex 4について
アドビ主催ベータセミナー(仮)
- 7月第2週
- ゲートシティーホール(仮)
- 本社エバンジェリストによるセミナーリスト(スペインなまりの英語)
GAE/JとFlex/AIR
1 |
初期タイトル:GAE/J with BlazeDSで動くスケジュール共有アプリのご紹介 |
スティルハウス 佐藤一憲
- [参考] 資料公開先
- fxug_gae_20090527c.pdf
- http://www.gotsugo.com/ > 「お知らせ」リンク からダウンロード
- fxug_gae_20090527c.pdf
- [メモ] GAE:Google App Engineの略称
[自己紹介]
- スティルハウス 佐藤一憲
- http://www.sth.co.jp/
- Adobe認定AIRインストラクター(m-school)
- テクニカルライティング(ペンネーム:吉川和巳)
[事例紹介] ご都合.com
- ご都合.com
- スケジュール共有ツール
- 会議・飲み会に
- 無償・登録不要
- 2009/05/06公開
- 6日間で2,000UU
- ご都合.comの技術
- Flexクライアント
- Google App Engine for Javaサーバ
- BlazeDS
- ビジネスロジックのクラス
- Entityクラス
- 開発期間:5日間
- 設計・実装・テスト・ドキュメント作成など
[紹介] GAE/J
- GAE/Jとは
- Google App Engine for Java
- 自分のアプリをGoogleインフラで運用
- クラウドコンピューティングサービス
- GAE/Jのすごいところ
- 無償で使える
- BigTableが簡単に使える
- サーバの構築が不要、デプロイ簡単
- Google App Engine for Java
- 無償で使える
無償提供分 | 有償提供分の単価 | |
---|---|---|
ストレージ容量 | 1GB | $0.005/1GBx1日 |
ネットワーク帯域(上り) | 10GB/1日 | $0.10/1GB |
ネットワーク帯域(下り) | 10GB/1日 | $0.12/1GB |
CPU時間 | 6.5時間/1日 | $0.10/1時間 |
メール受信件数 | 2000件/1日 | $0.0001/1件 |
- BigTableが簡単に使える
- BigTableとは
- Googleを支える巨大分散DB
- RDBでなく、key-value型
- スキーマは事前定義が不要、自由に変更可能
- テーブル間結合ができない
- LIKEも使えない
- 鬼のようなスケーラビリティと可用性
- RDBでなく、key-value型
- Googleを支える巨大分散DB
- BigTableがタダで使えると
- 大規模サービスでも苦労しなさそう
- Oracle RACも分散キャッシュも不要
- BigTableとは
- JDOでBigTable利用
- GAE/JのDataStore API
- JDO API経由でBigTableを使える
- GtgCalendarクラス
- GAE/JのDataStore API
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
@PersistenceCapable(identityType = IdentityType.APPLICATION) public class GtgCalendar { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) @Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true") private String key; @Persistent private String uid; <以下略> PersistenceManager pm = pmf.getPersistenceManager(); try { pm.makePersistent(gc); } finally { pm.close(); } |
- サーバ構築不要、デプロイ簡単
- GAE/Jの実行環境
- Amazon EC2のようなVMではない
- JBoss/Tomcatのような実行環境
- GAE/Jの開発
- Eclipseプラグインでローカル開発
- クリック1つでデプロイ
- メリットとデメリット
- サーバ構築不要、LL感覚でデプロイ
- でも「サンドボックス」の制約あり
- GAE/Jの実行環境
[テクニック紹介] GAE/JでBlazeDSを動かす
- GAE/JのEclipse開発環境
- GAE/JのEclipseプラグイン
- ローカルでGAE/J環境を再現
- クリック1つでデプロイ可能
- GAE/JのEclipseプラグイン
- BlazeDSとGAE/J
- GAE/JでもAMF通信したい
- RemoteObjectはラク
- GAE/JにBlazeDSを載せる
- blazeds.warの中身をWEB-INFに配置
- でもこのままではエラーが出る
- GAE/JでもAMF通信したい
- BlazeDSを動かすには
- Martin氏のブログを見よ!
- BlazeDSソースのビルドが必要
- まずはBlazeDSをビルドする環境を用意
- 要点
- JMX APIの管理機能はオフに
- AbstractAmfInput.javaを修正
- BaseHTTPEndpoint.javaを修正
- Adobe ADCにも記事掲載の予定
- BlazeDSのservices-config.xml
- system要素に以下を追加
- <manageable>false</manageable>
- GAE/Jでは使えないJMXを使わない
- system要素に以下を追加
- AbstractAmfInput.javaを修正
- 58行目を以下に修正
- this.in = new DataInputStream( new java.io.BufferedInputStream( in ) );
- GAE/Jのコンテナは特殊なので、I/Oの振る舞いにクセがある?
- 58行目を以下に修正
- BaseHTTPEndpoint.javaを修正
- 404~418行目をコメントアウト
- setupFlexClientメソッドにてセッション重複エラーを発生させる部分
- GAE/Jは特殊なクラスタ環境なので、セッション情報の取り扱いにクセがある?
- 404~418行目をコメントアウト
- BlazeDSをビルド
- JARファイルをWEB-INF/libにコピー
- Datastore APIのtips
- eagar lodingできません
- BigTableはjoinできない
- 1:Nの親Entityと子Entityがある場合
- ループですべての子Entityをロードしてからクライアントに渡す
- BigTableプログラミングってこんな感じ?
- eagar lodingできません
1 2 3 4 5 |
private void loadChildren(GtgCalendar gc) { for (GtgResponse gr : gc.getResponses()) { for (GtgAvailableRange gar : gr.getAvailableRanges()) gar.getKey(); } } |
-
- PersistenceManagerはクローズする
- Entityとpmの「ひも付き」を切ってからクライアントに渡す
- さもないと例外が
- Hibernateのセッションクローズと同じ
- Entityとpmの「ひも付き」を切ってからクライアントに渡す
- PersistenceManagerはクローズする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// クエリを作成 PersistenceManager pm = pmf.getPersistenceManager(); Query query = pm.newQuery(GtgCalendar.class); query.setFilter("token == tokenParam"); query.declareParameters("String tokenParam"); // クエリを実行 List<GtgCalendar> results; GtgCalendar gc = null; try { results = (List<GtgCalendar>)query.execute(token); } finally { query.closeAll(); pm.close(); } |
-
- 主キーは「Key as Encoded String」
- Datastore APIでの主キー
- long型:親から子へのナビゲーション不可
- Key型:ナビゲーション可能
- BlazeDSでKey型は渡せない
- 中身がなくなる
- Key型をString型にエンコードする設定
- Datastore APIでの主キー
- 主キーは「Key as Encoded String」
1 2 |
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true") private String key; |
[現在企画中] BigTableとSmallTable
- SmallTableとは
- BigTableに足りない点
- リレーショナルモデルが使えない
- やっぱりjoinしたい、LIKEも欲しい
- リレーショナルモデルが使えない
- SmallTableとは
- リアルタイムDB同期フレームワーク
- まだ構想中、絵に描いた餅
- クライアント側SQLiteとBigTableを同期
- AIR、Ajax、iPhone
- クライアント側ORMもあるといいな
- リアルタイムDB同期フレームワーク
- BigTableに足りない点
- [事例紹介] イマヒマColabolo(http://www.colabolo.com/)
- ローカルSQLiteで動作するAIRコラボツール
- RailsのDB同期サーバ(差分同期)
- Javaのメッセージサーバ(C10K対応)
- SmallTableのメリット
- BigTable + SmallTableのメリット
- クライアント側ではSQLを使える
- AIR/Ajax/iPhoneの違いをORMで吸収
- BigTableはデートストアに徹する
- オフライン対応
- ローカルDB紛失時もサーバでバックアップ
- バックグラウンドでリアルタイム同期
- サーバレスポンスを待つ必要なし
- WordやExcelの使い勝手+オンラインアプリの即時性
- クライアント側ではSQLを使える
- BigTable + SmallTableのメリット
Q&A
- [Q] GAEでトランザクションは使えますか?
- [A] APIがあるみたい。でもクラスタなので、分散トランザクションが出来るかは不透明。
pdf de Flex
1 |
タイトル: PDFポートフォリオとFlex |
from DNP 森嶋 ゆかりさん
[紹介] PDFポートフォリオとは
Adobe Acrobat Pro Extended
- Acrobat9から入った機能
- いろんなファイルを取り込んで1つのPDFとして配布が可能
- ナビゲーション部分をFlexで開発可能
- PDF内で3Dビューア、画像再生が可能
その他発表内容は、以下についてでした。
Q&A
- [Q] Adobe Acrobat Readerでも閲覧可能なのか
- [A] Adobe Acrobat Reader 9以降なら可能
- [Q] AIRのコンポーネントは使えるのか
- [A] 使えない模様
- [Q] メニュー以外はFlash?
- [A] メニュー以外はFlashのページもある、そうでないページもある
[紹介] PDFポートフォリオ テンプレート制作
- 作成手順概要
- テンプレートSWFの作成
- Flexでテンプレートの実体となるswfファイルを作成
- パッケージ化
- 設定ファイルを作成し、swfや素材をパッケージ化
- テンプレートSWFの作成
- PDFとの連携
- An Acrobat plugin
- Acrobat API
- Acrobat Application Runtime
- Acrobat ActionScript API
- Your PDF Portfolic Navigator (a SWF file)
- テンプレートファイル(.nav)ファイルの構成
- mimetype
- navigator.xml
- swf
- アセット
- プロファイル
- mimetype
- プロジェクト作成
- ポイント
- Flexプロジェクトで作成
- sdkはFlex3
- libsにAcrobatのAPI(AcrobatAPI.swc)を追加
- 新規作成で新規MXMLモジュール
- ルートはmx:Moduleタグになる
- acrobat.collection.INavigatorをImplement!
- width="100%" height="100%"
- host:INavigatorHost
- このメソッドは、Moduleがロードされた後すぐcallされる
- いつ完了するかは不確定
- シャットダウン時もcallされる
- ポイント
- UIを作っていく
- IAttachment
- ファイルの情報を持っている
- CommandType
- 処理コマンド
- テクニカルTIPS
- オリジナルフィールドの追加
- 注意点
- Acrobat Pro, Acrobat Extended
- 編集モード: Read/Write
- 通常モード: Read Only
- Acrobat Reader
- Read Only
- Acrobat Pro, Acrobat Extended
- パッケージ化
- navigator.xml
- mimetype
- application/vnd.adobe.pdf-navigator
- 必要なファイルが揃ったら、ZIPアーカイブを作成
- デバッグ
- アラートをあちこちに仕込んで行う必要がある
- EclipseでFlexの開発をするときは、プラグイン「Ant」を入れるといい
- PDFポートフォリオのカスタマイズに関する技術情報
Q&A
- [Q] FlexのAPIはすべて使えるのか
- [A] だいたい使えるが、挙動がおかしかったり、アラートが上がらなかったりする場合もある
- [Q] PDFから外へ通信出来るのか
- [A} 出来ないかもしれない
- [Q] AcrobatのAPIとFlashのAPIが混在しているが、Flexの内部にPDFを表示したりできるのか
- [A] 出来るのはPDF内のナビゲーション部分をFlexで記述するぐらい
Flex標準コンポーネント飽きた
大礒琢磨 早稲田大学在学中
- http://blog.isocchi.com/
- Flexじゃなくても出来ることを勉強しておくとよい
3Dの描画方法
- 3Dオブジェクトが表示されるまで
- 座標変換
- モデル変換
- ビュー変換
- 投影変換
- テクスチャ
- 3Dの表面
- シェーダ
- 光
- シャドウ
- 座標変換
- アフィン変換
- 平行移動
- 回転
- スケール
- 歪み
- 行列(Matrix3D)を使う
- x軸にθだけ回転
- matrix.appendRotation(rotateX, Vector3D.X_AXIS);
- matrix.appendTranslation(tx,ty,tz);
1 2 3 4 5 6 7 8 |
private function enterFrameHandler(event:Event):void { if(!box.transform.matrix3D) return; var matrix3d:Matrix3D = new Matrix3D(); matrix3d.appendTranslation(-box.width, -box.height, 0); maxtrix3d.appendRotation(3, Vector3D.Y_AXIS); matrix3d.appendTranslation(box.width, box.height, 0); box.transform.matrix3D.prepend(matrix3d); } |
- GPU
- ベクトル演算に特化した演算ユニット
- GPUのコアは200個ぐらいある
- 並列に処理をすれば高速処理が可能
- Zソート
- FlashPlayerはLibraryを使わないとZソートを自前で実装する必要がある
- FlashPlayerはaddChildした順に描画処理を行う
[事例紹介] 機械学習 サポートベクターマシン
[事例紹介] 手書き文字認識エンジン Zinnia
http://blog.isocchi.com/2009/01/flexair-zinnia.html
Q&A
- [Q] GPUをサポートするのか
- [A] OpenGLをサポートする言語で記述すれば、GPUを制御することが可能
- [A] Pixel Bender
- [A] FlashPlayer10での制限:GPUで動かないので思ったより速くない
- [メモ] GPUを使用するプログラムは、中間ファイルを配布して、実行環境PCでコンパイルしてから実行する
- [キーワード] GPGPU
- [Q] 機械学習の標準モジュールはあるか
- [A] ActionScriptで書かれたモジュールは見たことがない
- [A] CやJavaやRで実装されているモジュールがある
次回のアナウンス
- 2009/06/14(日)RIAカンファレンス(仮)
- 2009/06/24(水)Adobe Flex4/AIRベータ祭り(仮)
- 2009/06/27(土)RIA勉強会予定(仮)