2009/09/27

Flex SDK 3.4で遭遇したFocusManagerのバグ

Flex SDK 3.4でビルドするようになってからTabキーでフォーカスを移動した際に、以下のようなエラーが出る事はありませんか?
Flash Playerのデバッグ版でしか表示されないエラーなので、気付いていないかもしれません。
私はTabキーでフォーカスを移動し、画面上のコンポーネントを一周し、defaultButtonに指定したコンポーネントにフォーカスが合わさろうとした際に、このエラーに遭遇しました。
TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at mx.managers::FocusManager/focusInHandler()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\managers\FocusManager.as:601] at flash.display::Stage/set focus() at mx.core::UITextField/setFocus()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\core\UITextField.as:1525] at mx.controls::TextInput/setFocus()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\controls\TextInput.as:1832] at mx.managers::FocusManager/setFocus()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\managers\FocusManager.as:553] at mx.managers::FocusManager/setFocusToComponent()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\managers\FocusManager.as:1293] at mx.managers::FocusManager/setFocusToNextObject()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\managers\FocusManager.as:1263] at mx.managers::FocusManager/keyFocusChangeHandler()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\managers\FocusManager.as:1758]
どうやらこれはFlex SDK 3.4のバグで、3.5ではFixされているようです。
バグレポートはこちらにあります(タイトルにはLiveCycleとありますがLiveCycle限定というわけではありません)。
[#SDK-21780] FocusManager RTE in defaultButton scenario. was: Navigating around LiveCycle Workspace results in an ActionScript null pointer error
https://bugs.adobe.com/jira/browse/SDK-21780

バグレポートに合った再現プログラムをシンプルにしたものがこちら。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >
    <mx:VBox id="boo" defaultButton="{goo}" >
        <mx:Button id="goo" />
        <mx:Button id="foo" />
    </mx:VBox>
    <mx:VBox id="bee" >
        <mx:Button />
        <mx:Button />
    </mx:VBox>
    <mx:TextInput />
</mx:Application>

バグ回避コードがこちら。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" defaultButton="{goo}" >
    <mx:VBox id="boo">
        <mx:Button id="goo" />
        <mx:Button id="foo" />
    </mx:VBox>
    <mx:VBox id="bee" >
        <mx:Button />
        <mx:Button />
    </mx:VBox>
    <mx:TextInput />
</mx:Application>
defaultButtonの指定位置が変わったことにお気付きでしょうか?
Flex SDK 3.5がリリースされるまでは、このようにして問題を回避できるようですよ。
私の環境ではこの手段で回避できました。
類似の現象に遭遇した方、ご確認ください。

2009/09/19

生物として当たり前の光景

久しぶりに弱肉強食、食う食われるの関係を目の当たりにした。
生物として当たり前の光景なのだけれど、大人になってからはめっきり意識しないようになってしまっていたので、それは新鮮であった。

甥っ子は捕まえたカマキリとバッタを何の気無しに同じ入れ物に入れてしまった。
それが4歳児にとって衝撃の光景の始まりとなった。

はじめ、カマキリは空腹ではなかったためかバッタがテリトリーに入っていても何もなかった。
これが人間とその他の生物の「美味しそうな物が目の前にあるから味見してみる」/「生きるために必要な時に必要な分だけを食す」の違いなのだろう。

甥っ子と私は「カマキリのお腹おっきいーねー。卵入ってるのかな?それともハリガネムシって寄生虫が入ってるのかな?」などと和やかに談笑していた。
そんな談笑をしている最中、突如バッタの動きが激しくなった。

どうやらバッタはカマキリから逃げたがっているようだった。
きっと、捕食活動開始の合図があったのだろう。

甥っ子がカマキリとバッタを入れた入れ物にはしっかりと蓋がされており逃げ場はない。
この時点で、バッタはバキ(格闘マンガ)と違ってカマキリに勝てるはずがないのだから結末は目に見えていた。
http://yabou.web.infoseek.co.jp/diary/hanpera/baki-2.htm
カマキリはバッタを逃がすまいと鋭いカマで鷲掴みし、動きを止めるため首根っこから・・・。

甥っ子もはじめは口をポカーンとさせていたようだけれど、上下左右全ての角度から捕食を観察し食物連鎖に関して学習していた。
どれだけ記憶に残るかはわからないけれど、後々、何らかの本の活字から何となく想像し学ぶより、目の前で実際の光景を見て学ぶ方が数十倍役に立つだろう。

カマキリとバッタを同じ入れ物に入れた時点でこうなることは分かっていたけれど、甥っ子にとって素晴らしい経験ができるだろうと一部始終を見守っていたのだった。

自然に触れ合うとは「緑に溢れた空間に居る」というだけでなく動植物、虫たちの活動を観察することも是非オススメしたい。
きっと、こういった自然の生業を目にすることは仕事をする上でもアイデアを閃くための栄養になるんだろうと思う。

2009/09/15

世界有数の勉強会(遺産的な意味で) - Hokuriku.lang出張編のご案内

世界遺産の白川郷で開催する勉強会のお知らせです。
はじめはネタのつもりでしたが本気と書いてマジでやります。

スピーカーが各々違ったテーマを扱うので、一日で沢山の技術を味わえるはず。
詳しくは以下の案内をご参照ください。

<タイトル>
世界有数の勉強会(遺産的な意味で) - Hokuriku.lang 出張編
Hokuriku.lang = Hokuriku.js × Hokuriku.rb × ...

<参加募集ページ>
http://atnd.org/events/1331

<概要>
今回は北陸のお隣り、岐阜県白川郷で勉強会を開催します。

内容は特にテーマを絞らず、さまざまな言語や技術についての
セッションを行います。言語や技術を問いません。
現時点では、HTML5, JavaScript, Ruby, Scala, Haskellについて
セッションで扱うことが決まっています。

世界遺産に指定されている白川郷荻町地区とも近いので、家族で
白川郷まで来て、パパ or ママは勉強会、もう一方は子供達と
白川郷をゆっくり散策という家族に優しい勉強会となっています。
今まで後ろめたい気持ちで参加していた方も、今回は家族サービスできます。

途中入場、途中退場可能です。勉強会に参加したいが家族サービスもしたい方、
その日たまたま白川郷に用事がある方など、気軽にご参加ください。

日時: 2009/10/03(土) 10:30~16:00
定員: 40 人
会場: 白川村総合文化交流施設 (道の駅 白川郷内) - 写真はこちら
道の駅白川郷 案内図
住所: 〒501-5625 岐阜県大野郡白川村飯島411 地図
駐車場: 道の駅白川郷 駐車場
参加費: 無料
ネットワーク: 無線LAN有り
電源: 延長ケーブル&電源タップはご持参ください
主催: 北陸エンジニアグループ

<開催プログラム>
下記の枠は仮のものですので、変更される可能性がございます。
最新の情報は"こちら"をご覧ください。

10:00 - 10:30 設営&会場 (準備協力お願いします)
10:30 - 11:30 「(仮)マルチパラダイム言語Scalaを語る」
         豆蔵ソフト工学ラボ所長 羽生田栄一

11:30 - 12:30 昼休み(混雑を避ける意味でちょっと早め)

12:30 - 13:15 「分かった気になるHTML5 ~開発者の視点から~」
         shoito
13:25 - 14:10 「今さら聞けないRuby 1.9」
         でむらなりかず(checkela) 氏
14:20 - 15:05 「(仮)チーム力 or PFをワークショップから学ぶ」
         kitamura 氏

15:20 - 15:30 LT1 未定 nagise
15:30 - 15:40 LT2 Haskellで何か kabakiyo
15:40 - 15:50 LT3 未定 hikaruworld
15:50 - 16:00 LT4 で、オブジェクト指向って結局なんなのよ? katzchang
16:00 - 16:30 後片付け (撤収協力お願いします)

勉強会に関してご連絡のある方は sho.ito at air-life.net にメールを送るか、
twitterで @shoito にreplyをお願いいたします。

<北陸エンジニアグループの紹介>
石川、富山、福井の北陸三県で活動しているITエンジニア達による有志のグループです。
主に、GoogleグループのML&twitterで交流をはかり、各種プログラミング言語、フレームワーク、開発プロセス等の勉強会を北陸三県の各地で開催しています。

twitter上でセッション内容に関して裏勉強会が実施されていたり、勉強会当日に突如事前ランチ会が行われるという面白い特徴があります。
勉強会を120%楽しんでいるグループだと思いますよ。

北陸三県で開催される勉強会に興味のある方はお気軽に北陸エンジニアグループMLにご参加ください。
http://groups.google.co.jp/group/hokuriku_engineer

2009/09/13

Flex勉強会第79回@北陸(石川)やったど

昨日、Flex勉強会第79回@北陸(石川)を開催しました。
Flex勉強会はFxUG(Flex User Group)という有志たちによる勉強会です。
北陸では、石川、福井、富山と開催地を移し、今回は2週目に入り北陸では4回目の開催となりました。

今回はスピーカー候補者がいっぱいいたので、発表しなくてイイかなと思っていたらLTはやることになってました。
気付いたのは発表の一週間前...orz

【セッションレポート】
「Flash Catalyst + Flash Builder 4」轟さん(Adobe)
Flash Catalystの最新版でデモを見せていただきました。
プレリリースプログラムでも公開されていないNightly Build版でのデモ、「パーツ不足」という意味不明なエラーメッセージが出たりとハラハラどきどき。
ノンコーディングで複数ステート+トランジション付きのアプリが作るデモは「スゲー!」と思わされます。
「こんなイメージでイイですか?」ってモックアップを作って確認しながら開発を進められそう。
ペーパープロトタイプじゃ、エフェクトとかわからないですしね。

そうそう。アプリ落ち、OS落ちじゃなくて、プロジェクタ落ちという事件が発生しました。
初遭遇w

「 FlexMonkey + Flex Automation APIの紹介」 hikaruworldさん
前回の勉強会で時間等の都合で話せなかったFlexMonkeyをメインに、Flex Automation APIを加えたセッションでした。
FlexMonkeyでユーザー操作を記録してテストできるのはイイねーと思うディベロッパー達。
一方、FlexMonkey?FlexUnit?Mixin?Flex Automation API?ときょとんとするデザイナー達。
私はFlex Automation APIをちょっと資料を読んだ程度で、触ってはいなかったので興味津々でした。
この辺を上手に使う工夫をするとテストがもっと楽しくなるのでしょうね。

「 Flexで作るおされビンゴアプリ」 katzchangさん
北陸初開催の際に、轟さんより頂いたFlex Builder Professionalを利用してお洒落なビンゴアプリの開発を紹介してくれました。
独りアジャイルプロセスで開発をススメ、各イテレーション毎について成果物をデモ+ふりかえりの内容を話すという面白いスタイル。
katzchangらしく笑いが豊富なプレゼンでした。

交流会のビンゴ大会では、このおされビンゴアプリ(Flex)のおかげで大盛り上がり。
おされの部分を強化するイテレーションが今後実施されるとみんな信じています。

「 Silverlight入門」 hr_saoさん
Silverlightを囲む会よりゲスト参加してくれました。
Flex勉強会であり、Silverlightを触ったことのある人が少なかったので入門的な内容を。
開発環境のスライドの中に、Eclipse4SLのことが載っていて、一瞬テンションがあがりましたw

全然関係ないけど、会場ではhr_saoさんと轟さんのファッションがイケてました。
イベントへ行くとこっそりファッションチェックをしています。

「 FlashとSilverlightの配信事情 〜DynamicStreaming+SmoothStreaming入門〜」 coelacanthさん
動画配信のお話で、自動的にスムージングしてくれるデモをしてくれました。
IISって、「アイアイエス」って発音するんですね。
Iが2つ並んでいるから、勝手に「アイツーエス」と発音してました。

[LT]
「WebGLについて」 rch850さん
WebGL、OpenGLなお話。
rch850さんは情報の少ないイバラの道を好むという特性に気付きました。

「Android + JavaScript」 checkelaさん
Androidだぜ!Flash載るぜ!きっと。
会場の無線LANにAndroidがつながらなくて、準備が大変そうだった、、、という裏話。

「ディベロッパーへデザインのススメ」 shoito
ディベロッパーはデザインを苦手とせずに、もっとテクノロジー以外にもアンテナはろうぜ!
デザインって人間にもソフトウェア/サイトにとっても重要な要素ですよ、というお話。

「最後に」
交流会で本をGetされた方は次回、次々会あたりにスピーカーをやってくれることになったので、
新たなスピーカーの確保ができそうです。
参加してくれた方、運営&協力してくれた方、皆さんありがとうございました。

次はこちらでお会いしましょう。
世界有数の勉強会(遺産的な意味で) - Hokuriku.lang 出張編
http://atnd.org/events/1331

2009/09/09

比較 - 9つのJavaScriptフレームワーク

この記事は有名なJavaScriptフレームワークを良くまとめ、比較できるように上手く見せてくれる。

JavaScript Framework Matrix
http://matthiasschuetz.com/javascript-framework-matrix/en/

比較対象は、jQuery, MooTools, Dojo, Prototype, Script.aculo.us, Ext JS, Spry, Glow, Yahoo! UI Libraryと多岐に渡る。
さらに、これらはGeneral, DOM Ready, DOM Basics, ....と項目毎に分かれ、コードレベルで一覧できるのだ。



最近、CMSのJoomla!に触る機会があるのだが、それにはMooToolsが組み込まれている。
個人的にこの記事はタイムリーな内容なので紹介した。