April 17, 2007
Flash Communication Serverでアプリ作ると、prototypeは身につけざるを得ない状況に追い込まれます。
(以降、FCSと表記します。FCSの後継はFlash Media Server)
タイトルは、「ハタさんのブログ」に影響されてます。
私は如何にしてJavascriptのprototypeを身につけたか。
FCSって、Flash Playerから接続すると、そのユーザー毎にサーバサイドにオブジェクトが生成されます。チャット機能だとか、ゲーム機能や、ストリーミング動画再生の制御などは、そのサーバサイドに生成されるオブジェクトに機能を実装していくことで作られます。
サーバサイドのオブジェクトは、Shared Objectでクライアントサイドでもサーバサイド間でオブジェクトを共有したりできるし、リモートだろうが、サーバ側だろうが、命令一発で、Flash側にもFCS側にも、はたまた、その後ろにいるJRunやColdFusionにもオブジェクトを投げ合ったりできるんだけど、
いずれにせよ、サーバサイドにオブジェクトが「ユーザー毎」に生成されてしまうので、インスタンスにメソッドをペタペタ追加するよりも、prototypeに各種機能を定義した方がメモリが食わないという話を聞いて、一生懸命prototype使ってました。
あとクロージャー、ですか。僕は名前をしらないで使っていたんですが、FCSは、クライアント(Flash Player)と非同期でメッセージを投げ合うアプリです。なので、何かが終わったら、次は必ずこの行が実行されます、というものではなく、非同期にリモートメソッドが呼ばれる仕組みです。
そのため、うまくリモートメソッド間でポインタをうまく繋いでいかないと、ユーザー情報の引き渡しとか、状態遷移の管理などがうまくできないのですが、そういうことのためにprototype.jsのbind的なものは自然と身につけざるを得なかった。
値を渡すために、知らない間にクロージャなどの書き方を求められる。グローバル変数は、FCSのアプリケーションですから、ユーザ情報を単一の変数名で、置いておくわけにはいきません。(書き方に気をつけないとクライアント間で情報が共有されちゃったりする。)
最近、とみに有名なAmachangみたいに高度なJavaScriptを求める人は、FMSで何かやると面白いと思う。
JavaScriptでブラウザに閉じるだけだと、そんな高度なScriptが、ビジネスの場で本気で必要になる局面って少ないと思うし、どうせIEで使えない機能だと絵に描いた餅になることが多いんじゃないかと思うので、FMSみたいにぶっとんだアーキテクチャで仕事で使えるScript書くと楽しいと思う。そういう意味で、Adobe製品は面白い。
大体、DreamWeaverやFlashのExtensionもJavaScriptで書ける。
Fireworksで画像を10000個自動生成してみるといった作業の自動化や、標準化もJavaScriptで書ける。
そもそもブラウザのJavaScriptよりも、クローズドなアーキテクチャのAction Scriptの方が新しい技術をガンガン使っていたので、新しいECMA Scriptを勉強したければ、多分、FlashやApolloを書いた方が新しいことは勉強になると思う。
そういうのを知ってか知らずかはしらないけど、ギークな人がAction Script3に飛びついているのは、今後のFlashがどうなっていくのかが楽しみ。
さて自分の方は、昨日、kikimimiをApolloで作るべし、という話を聞いて、ちょっと興味アリ。ApolloだったらWidget並に何でもできるんだろうし。SharedObjectか何かで永続化できるの?専用のストレージがあるのかな?
今日、たまたま、友人からFlexの質問されて、質問の回答にはApolloが必要だと思ったので調べてたら、こんなありがたいサイトがあったのですね。今度読んで勉強します。
#ってRuby勉強中の身なんですが(汗)