2008年12月16日火曜日

Spark67 EdgeActionScriptLibraries

Spark67 EdgeActionScriptLibrariesというイベントに行って来ました!

内容はSpark ProjectThreadLibraaryと、AIR SAMPOとiPhoneASの紹介でした。

ThreadLibraryは、提供されているThreadというクラスを継承して自分のThreadクラスを作成。
start() を実行すると処理開始。
join() をすると処理が終了するまで待機。
next(function) で次の処理を指定。
...と書いていけるというもの。
エラーが発生した場合には、
error({エラーのクラス}, {callback関数})
みたいなメソッドを書けば...という話だったんですが、どーしても私はこれがひっかかりまして。。。
だって見えたコードには、
join();
next(function);
error({エラーのクラス}, {callback関数})
のような順番で書かれていて....ということは、このタイミングでaddErrorListenerしてる訳はないしなぁ...って思って。(見間違いだったのかしら。。)

あとこのerrorのメソッドのスコープはどれなんだろう?実行メソッド内?実行クラス内全部?とか。

そこで想像したのは、このThread開始時に、主要なエラーListenerはLoaderなどに勝手に追加されていて、発生したエラーのものはStackされつつ実行されている。そして処理が全て完了した時にerrorで指定した該当エラークラスを返してくれるのかなぁ?なんて思って。

それで、質問させてもらいました。「エラーは内部ではStackされていっているのか?」と。
そうしたら返答は「エラーは親へと伝播していって、最後の親のエラーが保存される。try catchを想像してもらったら分かりやすいと思う」という話。
んー私には疑問の解決はできなかったのですが、時間も差し迫っているようだったので、「例えば、2つのImageLoaderの処理を動かして、両方ともエラーが発生した場合はどちらのエラーが?」という質問にしたら、「前に動かしたエラーの方」と答えて頂きました。

んー、なんかしっくり理解はいってなかったので、家かえってThread.asのコードをさっと眺めてみました。
コードをみると....
  • errorというメソッドの中では、結局はaddErrorHandlerというメソッドが呼ばれていること。
  • addErrorHandlerというメソッドの中では、対象エラークラスの名前をKeyにErrorHandlerが作られていること。
  • Thread.asにエラーオブジェクトを格納する変数が private var _error:Object;となっていること。
  • エラーはtry-catch(e:Object)で取得していること
  • Threadの子クラスであるURLLoaderThreadではioErrorHandlerでエラーチャッチした際、最後にthrow new IOError(e.text);をしていること

これでなんとなく理解。質問の仕方も悪かったよね、すいません。
エラーについてそこそこ発生しやすいとか、処理は全部実行するけど、エラーは全部しっかり対策せねばあかん!ゆーときにはこぅいぅライブラリよりも、Threadに親子関係持たせないシンプルなもので分かりやすく処理するようなものを選んだ方がいいんでしょうね。
使う人も分けワカンナくなっちゃうだろうし。

私も同期的にタスクを動かすようなExecutorをAIRアプリ内部で作ってたりしたんですが(簡単なもの)、エラー処理がイマイチで修正せねばあかんのよねぇ〜

そうそう、ソース見せてもらいましたが、ASDocも細かく書いてあるし、コード内のコメントも凄く多い!凄いなぁ〜〜 見習わなければいけません!



iPhoneASはiPhoneアプリをASで書けちゃうライブラリ。
マルチタップや加速度センサーについてもあれこれ触れるみたいなので、なんか楽しそうです。
とはいえ、まずは通信する環境の用意が必要。
iPhoneとはOSCで通信するらしいのですが、FlashではOSC(UDPプロトコル)を利用できない。
XMLSocketでの通信だったら大丈夫なので、OSCとXMLSocketのゲートウェイ的な役目をしてくれるfloscというサーバを使う。
iPhone側にはOSCemoteというアプリがAppStoreにあるので600円で購入。

これで環境が整ったので、iPhoneASを使ってコーディング!
マルチタップや加速度のイベントがaddListenerできる形になっていて、必要な情報..例えばx位置、y位置とか)を渡してくれます。
なので、環境さえ作れたらサクサクっと触れそうな感じ♪

あともうひとつデモしてくれた、WiiFitのウィーボを歩くことでGoogleMapのストリートビューを見るというもの。
なんかの記事でみた記憶がありますが、こんなにマジカでみれるとはっ!
ウィーボとはBlueToothで繋いでいるらしい。
ストリートビューはAIRのHTMLLoaderで見てみたら見れたし、jsもcallできたし...ということでHTMLを読み込むことで表示しているらしい。
んで、StreetViewというライブラリを使ってコーディングっ!



さて、今回のイベントは有料イベント。3,200円。
先日もこの67(ロクナナ)のイベントに行って来たんだけど、正直有料ではもぅいかないなぁという感。
内容が...というよりも、時間と3,200円のお金とを考えると、技術的な事であればソースコード呼んだ方が早いし試す時間もできるしね。
オーガナイザーの大重さんは、「参加者がついて行ってないんじゃないか?」という心配していてまぁそれはあると思うんだけど、逆に、「物足りい人がいるんじゃないか?」という心配はないんかなぁ??
そういう人のために、もっと突っ込んだ質問してみてもいいんじゃないの?と思いました。
それはついて行けない人がいなくてもしょうがないという感じで。そうでないと、それなりに知っている人はお金払ってまでいくような気分にはなれないんじゃないかなぁ?

あと、CSSNiteビギナーズの時と比べると主催者側のやる気がイマイチ感じられない気もして。
比べちゃ悪いんですが、始めていった有料のイベントがCSSNiteビギナーズだったもので。
CSSNiteビギナーズは開催前には、気になっている質問したいアンケートを取ってその内容を講演者に質問してみたり、連動書籍としてイベントに向けた本を作成して発売前に配布したり、開催前にその本のPDFを事前勉強用に配布してくれたり、開催後もアンケートの集計結果を流してくれたり、フォローアップメールがあったり...とさすが有料イベントだなぁーと関心しちゃったんですよね。

さて、これで私の有給期間を使ってのセミナー参加は終わりです。。
来年再就職したら、土日のイベントがメインになるだろうなー。
• • •