無料ではじめるFlash(ActionScript)+Rails
というタイトルのセッションを、Rails勉強会@東北でやりました。
大声:
プレゼン内容もさることながら、このライフスタイルのクオリティの低さに失笑を買ったわけですが、別段、後悔はしていない。
お題としては、
↑この程度のアプリなら、ActionScriptとRailsを使えば無料ですぐにできちゃいますよ。そして今こそサーバ技術者とFLASHerが手を結ぶときぞぉ!と言ってみたかったわけですが、伝わったでしょうか。
再度、手順をまとめておきたいと思います。
■Ruby on Rails
■JavaSDK
■FlexSDK、$FLEX_HOME/bin をPATHに追加
□ANT(いらないかも)、$ANT_HOME/bin をPATHに追加
□FlashDevelop(Win限定のASエディタ)。
emacsやvimの各ActionScriptモードはあるはず。
> cd amfserver
> ruby script/generate scaffold Twit message:string loud:boolean
> rake db:migrate
> ruby script/server
終わり。ブラウザから http://localhost:3000/twits にアクセスして、動作確認しておきましょう。
Flash+Railsの連携方法には、RESTやXMLを使う方法、loadVarsを使う方法などがありますが、結局パラメータのパースを実装しないといけないので、めんどくさい。
ここは、自動でサーバのオブジェクトをFlash Objectにシリアライズしてくれる、AMFを使います。
> gem install rapt
> rapt search "amf"
で、AMFプラグインを探す。
http://themidnightcoders.net:8089/svn/weborb
で、インストール。終わり。
リモートサービスを作成する。
/app/services/Service.rb
def get_recent
Twit.find :all
end
end
終わり。
ここはちょっとGUIプログラミングの経験が必要かもしれないですが、さほどのものではありません。
とりあえず、NucoNuco.asをダウンロードしてコンパイル。
できた*.swfをダブルクリックして起動。Scaffoldした画面からメッセージを入力すると、Flash側の画面に文字が流れます。
ソースを読んでいただければ簡単なのはわかると思いますが、
ポイントは、
var responder = new Responder( onResult, onError );
function call(){
var con = new NetConnection();
con.connect("http://localhost:3000/weborb/");
con.call("Service.get_recent", responder );
}
//コールバックメソッド
function onResult( twits:Object ){
for each( var twit in twits ){
trace( twit['message'] , twit['loud'] );
}
}
function onError( result ){
trace( result );
}
配布:
amfserver.zip
NucoNuco.asのソース
説明していないものに、amfserver/public/crossdomain.xmlがありますがググってください。
WebORB関連記事:
WebORB for Rails+Flashデモ
評価のインターフェース
手書きチャット
AS2とAS3では、若干コール方法が変わっています。
あと、文字化け問題は、現在のWebORBでは解消されています。

