michinoko blog

Information

date: 2009/12/09
category: seminar.

Spark67 Deep Edge ActionScript Libraries

先週ですが、「Spark67 Deep Edge ActionScript Libraries」で勉強してきました。

とりあえずメモのまとめ。ちゅうかめちゃめちゃ丁寧なフォローアップメールが来たのでそこからも一部抜粋。さすがお金を払っているだけはある。セミナー聞くだけでも十分もとはとった感じやねんけど。。。
■Session1:JavaScript なんて怖くねぇぜ!SWFWheel から紐解く Flasher のための JS の歩き方(HIGEさん
>>FlasherがJavaScriptを歩くために
・asとjsとのやりとり、、、
→navigateToURL:とりあえず手軽、ローカルでテストできる。
→ExternalInterface:色々使えるけど、セキュリティサンドボックスとの戦い。ローカルでは動かない。
→ExternalInterface.available:ExternalInterfaceがサポートされているかチェックするけど、セキュリティサンドボックスまでは加味しません。
→ExternalInterface.objectID:IEならobject属性、それ以外ならembedタグのname属性を返すが、objectタグであってもname属性を返してしまう。
・ちなみにallowScriptAccessは、asからjsを呼ぶときの設定なので、jsからasには関係ない。
→jsで設定する。
・Security.allowDomainがjsからasを呼ぶときの設定。Security.allowInsecureDomainでドメインを指定する。アスタリスクも使えるけど、全て許可しちゃうので注意。
→asで設定する。
・無駄に徹夜しないために
→id属性には”external~”を決め打ちする。
→動きが怪しい時は非同期処理にしてみる。(setTimeoutやsetInterval)
>>SWFWheelから得たノウハウ
・ブラウザはどのobjectタグを見るか?
→SafariやIEは外側のobjectタグ、Gecko系は内側のobjectタグ
→つまりは、、、外側にはid, name、内側にはname属性。
・JavaScriptを埋め込むと挙動が変わる
→Gecko系のブラウザ保護機能が働く、XPCNativeWrapperなオブジェクトが出てくる。

■Session2:BetweenAS3 にみるライブラリ設計と最適化(新藤さん
>>設計編
・”小さなクラス” 重要
・クラスの責務 (役割, 責任を負う範囲) をできるだけ絞る
・他のクラスもできるだけ知らなくて良いようにする
・良いライブラリは簡単に使える
・きちんとした名前をつける(何をするものかすぐ分かる/副作用が分かる/一般的な命名規則に沿っている/組み合わせで使うものが分かる/true を返すときが何を表すのか分かる (isPlaying, contains))
・よい設計のために(コードを読む, デザインパターンを知っておく)
>>最適化について
・必ず読んでおくGSkinner先生(http://gskinner.com/talks/
・厳密に型指定することによりハッシュ検索がなくなる
→具体的に言うと、

objA:MyClass;	//早い
objB:Object;	//遅い
objC:*;			//遅い
objD;			//遅い

ということ。
・ループの最適化

do {
	obj.update();
}while((obj=obj.next)!=null) {
	obj.update();
}

のほうがforより早いとか。まだ試してない。。。
・不要なイベントは発行しない。
・ビットフラグで、1文字16進数で管理する。
→新藤さんのブログで勉強しよう。

所感としてはDeepとつくだけあってめちゃめちゃふかーい話。jsの話とかクリティカルなとこもあったので、めちゃ参考。ライブラリの設計はしたことがないけど、oreoreライブラリとかの上で最適化とか勉強になりました。とりあえずビット演算とかはもっかいちゃんと勉強しないとぱっと実用できそうもない。

いやー楽しかった。HIGEさん、新藤さん、そして67WSの加茂雄亮さんありがとうございました(__)
あーあとはこれは試しておきたい。
■URLOpener
http://www.libspark.org/wiki/ikekou/URLOpener