Flex4勉強会第119回@全国ツアー(東京)に参加しました

Flex4勉強会第119回@全国ツアー(東京)に参加しました。

とりあえず、メモに感想を加えてざっくりまとめてみました。


Adobe Flash Platform(アドビ システムズFlash Platform エバンジェリスト Serge Jespers さん @sjespers)

Flash Platform Services
  • 追加されたもの
    • LiveCycle Collaboration Service
      • 複数ユーザーでコラボレーションするのに使う(ファイル共有とかが簡単にできる)
    • Distribution
    • Payment
      • プログラムを3行追加するだけで、「try and buy」の昨日を追加することができる
  • 更新されたもの
    • Flash Player 10.1
      • スマートフォン対応(マルチタッチ等)
      • パフォーマンス改善(メモリ周り) ※半分、場合によっては半分以下になった
Open Screen project
  • 目的
    • Flashをあらゆるプラットフォームで使えることにすること
  • FlashHTML5の比較
    • ネットのサンプルで、HTML5は1秒あたり8フレーム、Flashは1秒あたり25フレームであることを紹介
      • まだまだ、Flashの方がパフォーマンスいいよ、ってPRだと思う
AIR2.0
  • マルチタッチ対応(ジェスチャー、マルチタッチポイント)
  • ネイティブアプリケーション起動(1.0の頃から要望が高かったらしい)
  • apkファイル対応(android市場に対応)
Flash professional CS5 でのAndroid開発
  • CS5を起動
  • AIR for AndroidのExtensionを組み込む
  • これでandroidの開発ができる
  • 優れている点
    • 接続デバイスに簡単に開発したアプリケーションをインストールできる
      • Publishボタンを押せば、実機で動かせる
    • フォトショップの画像から簡単にカスタム化されたスクロールバー作れる(昔は大変だったらしい)
    • Catalyst(カタリスト)を使うとデザイナも楽だし、デザイナと一緒に仕事する人も楽になるのでオススメ
Flashへのwebkitの導入について
  • webkitFlash Player(ブラウザ上)で動くように検討中。セキュリティ等の考慮をしているところだが、実現したいとは思っている
感想
  • AIRではネイティブアプリケーションの紹介に力が入っている感じ。
  • パフォーマンス改善といい、スマートフォンにすごい力を入れているというのが感じ取れた
    • 実現に開発者に対する配慮をすごく感じられたことが好印象。開発者に優しいことはとても大切

Adobe Flex4 / AIR2 入門講座 (クラスメソッド株式会社 横田 聡 さん @sato_shi)

自分が気になったポイントのみ
  • flashを開発していて一定以上の規模になってくると、イベント伝播とコンポーネントのライフサイクルを押さえる必要がでてくる
  • スキンが重要です
    • システム屋さんが作ったプログラムにデザイナが作ったスキンを適応するというスタイル
  • ネイティブアプリを呼び出せるといろんなことができるようになる
  • HTML5で作ったアプリもAIR2で包んで実行できる
    • AIR2にはHTML5が実行できるエンジンが搭載されているのでこういうことが可能
感想
  • テンポが良くて、プレゼン上手かった
  • 開発者視点で重要なところがおさえられていて共感できた
  • イベント伝播とコンポーネントのライフサイクルを押さえることが大切、って言葉でしょぱなから心をつかまれました(笑)

AIR for Android はじめの一歩(cuaoar 上条 晃宏 さん @akj50000)

自分が気になったポイントのみ
  • 現状(2010年7月28日時点)の注意点
    • 作成したapkファイルの一般公開はできない
    • Flash Builderでの開発は、手順はめんどくさいが、開発ができないわけではない
感想
  • デモが多かったけど、どういう風に開発していくかがイメージできた
  • とても開発しやすそうな印象。「自分にも作れるな」って思えたので、スマートフォン開発も開発者にやさしい感じした

Flex フレームワークスマートフォン対応(アドビ システムズ 株式会社 デベロッパマーケティング 轟 啓介 さん @keisuke322)

Flex フレームワークの進化
  • 2005年 Flex1-2 ⇒ WEB
  • 2008年 Flex3-4 ⇒ Desctop + Web
  • 未来 Hero ⇒ Mobile + Desctop + Web
SliderからHeroへ
  • PCとMobileを分けるのではなく、Heroというフレームワークの中で、PCもmobileも両方対応する方向になった(2つを分けない方が得策)
    • その背景は、モバイルデバイスの急激な進化、Flash Player 10.1/AIR2.0のモバイル最適化がある
モバイルの考慮点
  • 画面解像度の違い
    • 画面サイズ(横×縦)とDPI
  • タッチ操作
  • 他プロセスの割り込み
    • 電話の着信
    • スリープモード
    • 他プロセス連携(カメラ、ブラウザ等)
  • 階層化された情報の最適表示
    • 情報を階層的に表示する工夫が必要
    • 情報の現在地を表示
Hero - タッチ操作最適化
  • モバイル用スキン
    • PCとモバイルでサイズが違う形になる(それぞれ最適化)
  • ステート
    • モバイルでタッチ操作に不要なステータスをなくす
  • イベント
    • デフォルトでスワイプなどのジェスチャに対応
      • 処理を記述なしでもコントロールがデフォルトで対応する形で検討している
Hero - 画面(View)ベースのアプリケーション構造(ViewとViewNavigator)
  • View
    • 明確なデータモデルを備えたコンテンツグループ
    • インスタンスは破棄し、データのみ保持。再表示はデータを元にインスタンス化する
  • ViewNavigator
    • 階層構造の情報が表示可能
Hero - ViewNavigatorの階層構造
  • Viewをスタックで管理し、一番上のViewを表示する
質疑応答
  • 現時点では、モバイル限定でPCでViewNavigatorを使えるようにはなっていない(ただし、最終決定ではない)
  • Heroは年内にベータ版を提供予定
  • どのタイミングで、どのバージョンに組み込まれるかはまだ決定されていない
感想
  • Heroすごいよさそう(開発者にとって)
  • ViewStackで頑張るのは結構大変だと思っているので、ViewNavigatorは好印象
  • そのまま流用できないにしても、ViewNavigator、PCにも欲しい

FlexProgression の連携(ClockMaker 池田 泰延 さん @clockmaker)

Progressionとは
  • 画面遷移を実装できる仕組みを提供
    • シーン機能
    • コマンド機能
    • キャスト機能
Progressionのメリット
シーン機能
  • 階層構造をもつことができる
  • 階層を飛ばして遷移する際に、飛ばされる遷移のイベントをはさむことができる(必要がなければはさまないのも可能)
コマンド機能
  • サポートしている機能
    • 外部ファイルの読み込み(キャッシュ機能もあり)
    • トウィーン、タイムライン指定秒数待機
  • 類似ライブラリに比べ、機能が豊富
  • カスタムコマンドの作成も可能
コマンドの柔軟性
  • 実行時におけるコマンドの挿入
    • 実行時の条件分岐、中断も可能
  • エラーの捕捉もできる
感想
  • シーンとコマンドは心の底から便利だと思う
  • 次にFlexで何か作る時はProgression使おう


楽しい時間をすごさせてもらいました。お休みをとって参加したのですが、よい休日になりました。
主催者の方々に感謝です。

BPStudy#33に参加しました

人のブログをみてしまったら、書けなくなるので(ajnは他の人の内容のレベルがすごすぎるので・・・)、スピード勝負です。
(おそらく)誰よりも早いBPStudy#33のブログ記事のはず(終わった直後にあげるので)。

BPStudy#33 第1部テーマ:Google I/O 2010 App Engineセッションレポート

第1部のMCは佐藤一憲さん([twitter:@kazunori_279])

以下は、自分のメモがきです。
@kazunori_279のブログみればすむって話もありますが。。。

App Engineでcomet

  • これまでpushを行うには、XMPPプロトコルorURLFetchを用いて外部のpushサーバーとか使うしかなかった
  • でも、XMPPクライアントの実装は容易ではない(Flashとかだと通信ができない)
  • しかし、Channel API が登場したんでpushできる!(これまで大変だったが、基本cometなのでFlashとかからでも通信できるはず-google談)
  • Channel APIは、チャネル型の双方向非同期通信サービス
    • sdkは手に入るけど、現状ではRPCの制限がかかっているのでprodにあげても動作はしない(@shin1ogawa情報)
  • GTalkサーバーのインフラを使っているので、スケーラビリティはきわめて高い
  • つまりは、鬼スケーラブルなメッセージングサービスがただで使えるのがメリット!
  • デメリットは、データセンターが北米にあるので、レインテンシが問題
    • 対戦型ゲームとかは厳しい
  • 現時点では、課金関連、SDKのリリース時期の情報は出ていない

Google Storageとあわせて発表されたBigQuery

  • 何100億件のデータも数秒〜数10秒で集計できる、大規模並列クエリサービス
  • MapReduceとは違い、SQLっぽいクエリ言語で表現できる集計処理しか実行できない
  • Google StorageとBigTableとは互換性がない(と思われる)ので、BigQueryでBigTableのデータを検索できるわけではない
    • App Engineとは別プロダクト
    • BIの世界にもクラウドによる価格破壊がくるかも

感想

  • BigQueryは最初すごいと思ったけど、個人が趣味で使うって感じではなさそうな印象
  • Channel APIはアイディアによってはすごいものがつくれそうなので、腕に覚えがある人はHTML5javascriptを勉強して全裸待機しる。
  • データセンターを日本に設立するために、これまで以上に日本の盛り上がりを世界に伝える努力が必要かな

BPStudy#33 第2部のテーマ:Slim3がすごいトコ

第2部のMCは小川信一さん([twitter:@shin1ogawa])

以下は、自分のメモがきです。

資料

  • まだ見つけられてません

slim3とは

slim3を使いはじめる環境の構築

  1. slim3のサイトからブランクプロジェクトをダウンロード
  2. Eclipseからアーカイブファイルをインポート
  3. Aptの設定

slim3のいいところ

  • 単体テストのサポート
  • テスト環境を整えるユーティリティがある
    • Controller層のテストも簡単
    • データも消してくれるので、同じテストを何回も実行できる(これはすごい便利)
    • デモでは、low level apiを使っていたように、slim3のtestcaseはslim3に依存していない(はず)
  • Kotori Web JUnit Runner というプロダクション用のテストツールも使える

タイプセーフクエリ

  • アノテーションを使って、metaクラスを自動生成
  • フィルタの条件値も型チェック
    • 型を間違ってもエラーで教えてくれる
  • IDEの親和性が高いメソッドチェインによる記述

グローバルトランザクション

  • エンティティグループをまたいだ排他制御ができる
  • 最後の最後に使うというのがshin1ogawaさんのスタンス
    • もしかしたら自分の表現には語弊があるかも・・・設計段階では頼らない方がいい、って意図だと思う
    • 最初はない前提で設計をすすめて、開発の最後の方に設計レベルで対応できない時につかう伝家の宝刀(?)

高いパフォーマンス

  • APTによってコンパイル済み状態のメタ情報を使う。リフレクションは使わない
  • 内部的にプロトコルバッファ(いわゆるバイトコードの世界)を使うところまでチューニング
    • 大量の涙ぐましい努力(ギリギリのチューニング)
    • ライブコーディングでmakeSyncCallの紹介もあり!
    • ライブコーディングでジャーナルのパフォーマンスチューニングも紹介!

気がきいた仕組み

  • 自動リトライがある
    • GAEでは、エラーはさけられないのでリトライ必要
  • スキーマバージョンがある
  • 楽観的排他制御用のバージョン
    • スキーマバージョンも含めた排他制御をやってくれる(getのときにversionをチェックして例外をなげてくれる)
  • deleteAll(key ancestor)
    • エンティティグループにひもづくすべてのデータを消してくれる
    • 使う機会は少ないけど、いざ必要となった時にはとても助かる
  • controllerのヘルパーメソッドがすごい便利(セッションとかとか)

Kotori Web JUnit Runner

感想

  • 今日も神コーディング堪能しますた(幸せな気持ちになれます。完全にファンですな)
  • 説明とコードの紹介がセットになっていたので、とてもイメージしやすかった

balmysundaycandy-scalaを動かすための5のステップ(Windows編)

今回は、balmysundaycandy-scalaを設定し、remote.profileを使って動かすところまで行います。

1、Javaランタイムのインストール
  • JDKここからダウンロードします
    • JDK 6 Update XXってやつをダウンロードすればOK
    • ちなみにユーザー登録はskipできます
  • ダウロードしたファイルを実行
    • 「次へ」と「OK」押していればOK
2、scalaのインストール
  • 2.7.7 finalをここからscala-2.7.7.final.zipをダウンロードします。
  • 解凍したフォルダ(scala-2.7.7.final)を適当な場所におきます。
    • ここではCドライブの直下においた例で進めます
  • コマンドプロンプトを開いて、解凍したフォルダのbin(C:\scala-2.7.7.final\bin)に移動します

cd C:\scala-2.7.7.final\bin

scala

  • インタプリタが起動したことを確認(以下のように表示されていれば正常に動作してます)

scala>

3、balmysundaycandy-scalaの設定
  • balmysundaycandy-scalaここからダウンロードします。
  • 解凍したフォルダ(balmysundaycandy-scala)を適当な場所に置きます。
    • ここでは、Cドライブの直下においたとします。
  • コマンドプロンプト環境変数を設定

set SCALA_HOME=C:\scala-2.7.7.final
set BALMYSUNDAYCANDY_SCALA_HOME=C:\balmysundaycandy-scala
set PATH=%PATH%;%SCALA_HOME%\bin;%BALMYSUNDAYCANDY_SCALA_HOME%

3.5、remote.profileの編集(プロキシ経由のアクセスの時のみ必要)
  • remote.profile(C:\balmysundaycandy-scala\remote.profile)をエディタで開き、最後の4行のコメントアウトをはずし、プロキシのhostとportを設定します。

-

// proxy setup
import balmysundaycandy.scalatool.client.AppengineRemoteCallUtils
val host = "xxx.xxx.xxx.xxx" ← ここにプロキシのIPを設定
val port = xxxx ← ここにプロキシのポートを設定
AppengineRemoteCallUtils.httpClient.getHostConfiguration().setProxy(host, port);

4、balmysundaycandy-scalaを起動

balmysundaycandy-scala

  • balmysundaycandy-scalaが起動したことを確認(以下のような感じに表示されていれば正常に動作してます)

C:\balmysundaycandy-scala>

  • プロファイルを読み込む

:load remote.profile

    • エラーがおきず、ズラズラ文字がながれればおそらくうまく読み込めています。これで設定は完了です。
5、動作確認
  • Entityを作成

val entity = new Entity("test")

  • データストアに登録

val key = Datastore.put(entity)

  • 登録したデータを取得

val list = Datastore.query(key).asList

    • 上記の作業は、balmysundaycandy-scalaが起動している状態で行ってください。


ちなみに、MacはもってないのでWindows編以外を書く予定はないです(汗)。
でも、自分でbalmysundaycandy-scala-remoteをデプロイして、作ったプロファイルでアクセスする手順は、近日中に書きたいと思ってます。

Flex(mate)+cakephp(cpamf)で作ったコードをgoogle codeにさらしてみる

Flexcakephpを勉強したコードをさらしてみます。

登録、更新、削除、検索を作っただけの簡単なサンプルですが、google codeのホスティングリポジトリにあげたので、せっかくなのでブログでも告知しようというたいしたことない内容です(汗)。

環境構築の手順についてはgoogle codeのwikiに作業メモとしてまとめてあるのでここではふれません。
とりあえず、はじめてFlex作ってみた感想とかを書いてみます。

Flexを使ってみた感想

  • Flex Builderは、すごくとっつきやすい
    • はじめてですが、Visual Stadioみたいな感覚ですんなりはいれました
  • 60日体験版があるので、勉強するだけならそれをつかって、いろいろ試しているだけで、うごくものはすぐに作れます(動くだけですが・・・)
  • なんにも考えずにIDEメインで作ってくと素人が作ったWindowsクライアントのアプリみたいなコードになるから注意
    • 自分はなりますた・・・まあ、完成したものもいまいち感がありますが・・・
  • Flexにもいくつかフレームワークがある
    • オレオレフレームワークを作らない場合は、使った方がきれいなコードになるので使った方がよさげ
    • 今回は参考にしたソースがMateってフレームワークを使っていたので、それを使いましたが、使わずにかくよりは断然よいです
    • FlexフレームワークはPureMVCとCairngormってのがMateよりメジャーみたいで、Mateは3番手ぐらいの位置っぽい。後発のPureMVCが一番評判よさそうです

cpamfを使ってみた感想

  • cpamfの情報はあまりみないけど、pluginフォルダにつっこむだけで動くんでとっても簡単
  • CakePHPを作ったことある人なら、簡単に処理を作ることができる
    • controlerとmodel作るだけで、さくっと作れます
    • AMF通信自体がすごい便利で、これをCakePHPでさくっと作れること自体がすばらしい!
  • あとはmodelにValidaterをかけるCakePHPはRIAとの相性がよい気がします。htmlで作るとmodelのValidaterは微妙だけど・・・

以下が今回さらしたgoogle codeのホスティングへのリンクです。。
たいしたソースではないですが、CakePHPをさわったことがあって、Flexに興味がある、って人はのぞいてみてもよいかもしれませんよ〜

AMF 通信ができるまでの作業メモ(wiki

登録、更新、削除、検索まで一通り作ったソース

google codeのホスティングを使ってslim3の勉強はじめました

slim3の勉強を始めたのですが、勉強した内容のアウトプットにgoogle codeのホスティングを使うことにしました。
google codeのホスティングは初めてつかってみたのですが、すごく簡単にはじめられるし、wikiも使えるのでかなり便利ですね。

やっているのことはGoogle App Engine をはじめてみようのコードをChapterごとにslim3におきかえながら勉強するってこと。

Chapter3まで終わったので、ブログでも紹介します。誰得?って感じですが、昨日ググったら一人だけチェックしてくれている人がいたのでやる気になって、Chapter3まで終わらせてブログまで書いてみました(笑)。
google labに参加して、slim3をさわっていないという人は「へー、こんな感じなんだ」って思えるかもしれないので、のぞいてもらえるとうれしいです。

BPStudy#31に参加しました

BPStudy#31 テーマ:継続的インテグレーションツール「Hudson」に参加してきました。

スピーカーは、id:cactusmanさん

以下は、自分のメモがきです。

CIについて

CIのサイクル

  1. チェックアウト
  2. コンパイル
  3. UnitTest
  4. インスペクション(解析ツールを使ってチェック)
  5. パッケージ
  6. 結合テスト
  7. デプロイ
  8. システムテスト
    • このサイクルをグルグルまわす
    • 自動化は必須ではないけど、結合テストより前は自動化するのが現実的

メリット

  • 成果物の品質の保証
    • ビルドやテストがとおらないというような問題を早い段階で検知できる!
    • デグレードがおきにくくなる

その他のメリット

  • テストを書くようになる
  • 複数環境でテストができる(WindowsUnixとか)

なぜ広まらないのか

  • 導入が大変(テストが必須、SCMが必須、途中から導入は難しい、ビルドが通らない)

導入に必須と思われる事項

導入時にあるといいもの

  • BTS
  • インスペクション
  • XFD(エクストリーム・フィードバック・デバイス
    • ビルドが失敗したときに光ったり、音がなったりする

大切なこと

  • 犯人探しをしてはいけない
    • 問題を起こす人がいつも同じでも、どうすれば減らせるかという風に考えることが大切
  • 導入だけで満足してはいけない
  • エラーを放置してはいけない
    • エラーが起きても放置するようになったら使う意味が・・・

hudsonについて

  • OSSのCIツール
  • 簡単、手軽、親切
    • JavaWebStartで起動
    • java -jar hudson.war」起動
    • 好きなサーブレットコンテナにデプロイ可能
    • 設定はWebの画面
    • DBが不要
  • プラグインで機能拡張

どういう流れでおこなうのか

プラグインなど

環境構築

コマンド

java -jar hudson.war --help

プラグイン

  • gitとかVSSとか、その他いろいろSCMに対応
  • phpもphingが使えるようになるプラグインがある

感想

  • CI基本的な考え方から説明してくれてよかった!
  • CIをはじめるために、mavenとかphingとかビルドスクリプトを勉強する必要があることがわかって、勉強する気になった!
  • hudsonを導入する手順がなんとなくわかったので「難しそうだから無理っ」て思ってた気持ちがなくなった
  • hudson pluginの作り方のあたりは、作る気がまったくなかったので、ほとんど聞かないでブログ書いてました。ごめんなさい(汗)

個人的な課題

  • phingの勉強する
    • phpでphingとUnitTestを実行するような環境作る
  • hudson導入する
    • hudsonでphing呼ぶたたいて動くところまでやる


bpstudyはいつもレベルが高くて、楽しいです。
いつもありがとうございます>主催者の方々

git(ぎっと)を勉強してもようと思い立つ

自分はやっとSubversionをそれっぽく使えるようになってきたかな、っていう段階なのですが、世の識者の方々は、Gitに移行しているみたいです。

ちょっと前までは「まだ自分には早い」と思っていて、いろんな方が絶賛しているWEB+DB PRESS Vol.50もGit特集の記事だけ華麗にスルー!って状態だったのですが、「GitHubにソースはあげてあります」っていうけど自分はみれないっす><ってケースが増えてきたり、勝手にリスペクトしているあきぴーさんも注目していたり、redmineとgitでやって便利なんて実例もあがってきたり、「そろそろ分散バージョン管理使えないとやばい・・・」って気持ちになってきました(なぜか突然危機感が・・・)。

そんなわけで、とりあえず勉強はじめてみようと思います。

結城浩さんのGitの基礎練習
http://www.hyuki.com/techinfo/gitinit.html

とか、

Git入門
http://www8.atwiki.jp/git_jp/

とかあるけど、まずはいろんな人が絶賛している『WEB+DB PRESS Vol.50もGit特集』かな(せっかく買ったんだし)。
読んでから感想書こうかと思ったのですが、まずは読むことを宣言して自分にプレッシャー(笑)。
いわゆる勉強します宣言ですね。

勉強していて、感じたことがあればまた書こうと思います。