-> 07 { 08 / 13 }
AS3/Flex2 を使い始めて約半年
まずイベントドリブンなプログラミングに慣れてないのが一つで。Flex のイベントや自前イベントやをただ単に投げまくってると、とりあえずは動くけど後からメンテし辛いスパゲッティコードができあがる。このスパゲッティコードは goto 文が乱立するコードよりも酷く、goto だったら割と行き先は把握できるけど、イベントを投げまくってるだけだと、どこでどのオブジェクトがこのイベントを受け取るかが解らない。解りづらい。いちいちソースコード grep ですね、おめでたいですね。あのイベントが発生してから、そのイベントが終了したら発生するイベントが終了したらウィンドウ閉じて、その間は別のイベントはブロックして/発生しないようにして、とかもうわけわかんない。これも GUI プログラミングをしたこと無いからのような気もしなくもないけど。
こういう部分を抽象化できるライブラリやパターンがあれば良いんだけど。イベントドリブンなGUIプログラミングってパターン化されてる良書とかあるのかな。AS3 のライブラリでは YUI (yahoo じゃない方) のモデルは面白そうなのであとでコードを読もう。YUI が namespace つかってればより面白そうなんだけどなんで使ってないんだろう。
んで AS3 の基本ライブラリや基本パターンもまだまだ世の中には出回って無いため、いろんな時に困る。たとえばそもそも指定したドメインに接続できないとき URLLoader はエラーを出さないとか*1、A,B,C のデータ三つのロードが終わったら処理をしたい場合のパターンとか。もちろん安易に直列でやれば楽なんだろうけど、直列も並列もどちらでも同じように書いて動かしたいときや、統一された書き方で書きたいときのパターンが解らない。
Perl だったら POE なりなんなりで、Ruby だったら Thread ですぐ出来るけど、そういう抽象化具合というかデザインパターンというかが無くて、解らなくていちいち作ったり頭ひねって考えたり(それはそれで面白いけど、時間が無いときは困る→haihai dirty code dirty code)、アッーという感じ。あと10年もすれば状況は変わる(Ruby は 10 年ちょい、CPAN も 10 年ちょい、JS も 10年ちょい(JS がパターン/ライブラリ化されてみんな使い出したのはここ 2年だけど))気もするけど、AS3 なんて10年後残ってない気がすることを考えるとうーん、といった感じで。
また Flex が天下を取って Flex の GUI を使いこなせれば引く手あまた、なんて状況はみじんも感じられなくて、つまるところ Flex でのデザイン(デザパタじゃないよ)、css、BK、イベントモデルなんかは別に体に染みついたところで…。軽く表面上のレイアウトだけ使うこともでき、プロトタイプ作りには良いけど、ねぇ。というわけで Flex にどっぷりつかりたくない!というのは周り(といっても数人程度だけど) Flex をさわる人はみんな云ってる気がする。デザイナもプログラマも。
つまるところ
な感じの感想を使い始めて半年で感じたのでした。まる。
不具合としては、たまに保存時にファイルを見失ってしまうのが気になってます。
たまにしか起こらないので、原因はさっぱりですが…。
起動し直すしかないのはちょっとストレスなので、ファイルの監視だけをやり直すってのはできないでしょうか?
要望としては、xmlとかjsonとかを同じドメイン上に配置したいです。わざわざcrossdomain.xmlを置くのが面倒&相対パスで書きたいので。
あとは、監視しないファイル,ディレクトリの指定とかでしょうか。これはそんなに重要ではないかな。
とりあえず、思いついたところをだらだら書かせていただきました。
もうちょい他の不具合があった気がしたんだけど思いだせないや。
Flexがらみだったような気がするけど、Flexとかどうでもいいしどうでもいいや。
むー、その不具合はうちの環境だと発生したことがないですね。
ファイルの再監視は USR2 シグナルを送れば現在の fcwrap でもできますよ。
$ pkill -USR2 bin/fcwrap
とかで。
同じドメイン上に配置、は無理矢理ですがコンパイルされる swf が置かれるディレクトリが /swf にマウントされるので、そこに foo.xml とかを置いておくと /swf/foo.xml でアクセスが可能です。
ご要望 thx!
なんだってー。あと他の不具合も思い出せよ!!!
> yugui
トラバ thx!
できました! ちょうtnx!
ファイルを見失う件は、保存時にエディタがファイルをロック?してしまうのが原因とかかなぁ。
ウチの環境はwinXP + PeggyPro です。サーセン。とりあえず、macosxに移行します。
あとあとそういえば、httpd.rbを少しカスタムしてたのを思い出したので、ファイルを置いておきます。
http://ss-o.net/httpd.rb.txt
swfobjectを外部ファイル化して、IE/Operaワンクリック問題に対応。
reloadではなく、ファイルのswfだけ再読み込みして、console.logを保持。
swfにjavascriptでタイムスタンプつけて、IEのキャッシュ問題に対応。
ってなことをしてます。
またしてもだらだらと失礼しました!
httpd.rb の改善ども!
確かに swf だけリロードすればいいですよね。なるほど。
こういう細かい改善が他にもあったりしたら是非教えてください!