2008/12/31

イメージからリアルへ

「現実は、かつてはすべて想像の中にあった。」
         アルバート・アインシュタイン
そう。まずは想像しないことには始まらない。
来年は何を想像して、どんな現実を迎えるんだろう。

来年のことを考えると、厳しい現実が待っているかもしれない不安もあるけど、ワクワクしてきた。

今年一緒に過ごした皆さん、今年出会えた皆さん、今年まだ出会えなかった皆さん、来年もお付き合いよろしくお願いします。
良いお年を!

2008/12/25

Google Chromeのインストール先って・・・

Flex Builderからアプリケーションを実行するときに使用するブラウザをChromeに変更しようとしたけどProgram Filesに見当たらず、探したらGoogle Chromeが面白いところにインストールされてることに気がついた。

Vista環境だと↓こんな感じのパス。

C:\Users\shoito\AppData\Local\Google\Chrome\Application\chrome.exe

同フォルダ内には↓のように、さらに関連するファイルがフォルダ分けされてた。
\0.4.154.29
\1.0.154.36
\Dictionaries
chrome.exe
First Run

最近、Firefoxが起動も終了も許せないほどに遅くなったのでWindowsマシンのブラウザはChromeに乗り換えたよ。
起動はやっ!
終了はやっ!!
ブラウジングはやっ!!!
すてきっ!!!!

早くMac OSX用に正式リリースされないだろか。

2008/12/24

Adobe MAX Japan 2009いきますよー

来月1月29日、30日に開催されるAdobe MAX Japan 2009に行きますよー。
参加予定のセッションはこちらです(予定は未定、変更あるかも)。

2009/01/29(Thu)
10:00 - 11:30 基調講演 ケビン・リンチ
11:40 - 12:40 Flex4/AIR/CS4によるデザイナー&デベロッパーのワークフロー革新(仮) クラスメソッド(株) 渡邊桂一/嶋田豪介
13:00 - 14:00 AIRで進化するウィジェット・マーケティングの現場 アップフロンティア(株) 花本浩
14:20 - 15:20 AIRコン優勝者セッション:AIR×イマジネーション=Grand Prix!! 大日本印刷(株) 丸山真実
15:50 - 16:50 AIR最適化テクニック:コード処理・メモリ・レンダリングを知る! EffectiveUI Sean Christmann
17:10 - 18:10 詳説Flex3コンポーネント Japan Flex User Group 廣畑大雅/有川榮一/杉浦篤史
18:40 - 20:40 スペシャルイベント:Technology Sneak Peek

2009/01/30(Fri)
10:00 - 11:30 シークレットイベント
11:40 - 12:40 失敗事例に学ぶFlexプロジェクトの第一歩 NECシステムテクノロジー(株) 坂田泰平
13:00 - 14:00 Flexアプリケーション構築時の留意点 NECシステムテクノロジー(株) 三浦隆志
14:20 - 15:20 Flex Deep Diveシリーズ:Flexフレームワーク EffectiveUI Josh Jamison
15:50 - 16:50 ActionScript 3.0におけるパフォーマンス向上のヒント 野中文雄
17:10 - 18:10 Flex開発2:Flex Component Lifecycle EffectiveUI Josh Jamison
18:40 - 20:40 スペシャルイベント:EDGE Now! Of the Year

ここ見てくれてる人で誰か同じセッションに参加する人いるだろか。
FxUG@北陸含め各地の方々とお会いできるのが楽しみ。

2008/12/22

Spring BlazeDS IntegrationもApache Ivy使ってる

Spring BlazeDS IntegrationもApache Ivy使ってるみたい。
アーカイブを展開したらIvy関連のファイルが見当たった。

ライブラリの依存関係に関する面倒くささを解消したいだけであれば、MavenよりIvyだよなと思う。

2008/12/21

創造技法もろもろ

アイデアが面白いほど出てくる本 - これだけは身につけたい16の手法 という本を読んだので、忘れないように創造技法をリストアップした。

マインドマップを扱うソフトウェアは多々あるけど、これら創法をそれぞれモジュール化して全てを扱えるものを作ってみるのは楽しそう。

創法 - 創造技法

- 創法
- 発法
- 自由法
- ブレインストーミング法
- カードBS法
- カードBW法
- マインドマップ
- 欠点・希望点列挙法
- 強制法
- チェックリスト法
- マトリックス法
- マンダラート
- 類比法
- ゴードン法
- NM法
- 収法
- 領域法
- KJ法
- ブロック法
- クロス法
- 系列法
- フィッシュボーン法
- ストーリー法
- カード手順法
- 統法
- ワークデザイン法
- ハイブリッジ法
- 態法
- 東洋系
- 工学禅
- イメージコントロール法
- 西洋系
- 自律訓練法
- 心理劇
- ロールプレイング

2008/12/18

Spring BlazeDS Integration 1.0.0.M1リリース

Using Spring BlazeDS Integration 1.0.0.M1
http://blog.springsource.com/2008/12/17/using-spring-blazeds-integration-m1/

SpringSourceはこのニュースで書かれていた「Spring BlazeDS Integration」を宣言通り12月中旬にリリースしてきた。

米AdobeとSpringSource、エンタープライズ向けJava RIAで提携
http://www.itmedia.co.jp/enterprise/articles/0812/09/news104.html

ソースコードを覗いてみるとS2BlazeDSと同じくたったの4クラス。
パッと見た感じSeasar2環境でのS2BlazeDSと同じことをSpring環境に提供するんだから偶然でもないのか。

2008/12/17

FlexのテキストコントロールにIMEでインライン入力不可 〜その2〜

前回、FlexのTextInput, TextArea, ComboBox(editable), RichTextEditorコントロールにIMEによる日本語入力でインライン入力ができない現象について書いたが、再度、別な条件でも同じ現象に遭遇したので書いておく。

FlexのテキストコントロールにIMEでインライン入力不可
http://blog.air-life.net/2008/12/ime.html

再現手順:
1. TextInputを作成する。
2. TextInputのプロパティをwidthにparentより大きい値を設定する。
3. コンパイルオプションに"-target-player=10.0.0"を付けてコンパイルする。
4. Windows環境のFlash Player 10.0.12上で実行し、TextInputに対して日本語入力モードに切り替えて入力する。

再現プログラム:
http://f.air-life.net/samples/flex/OverParentWidth/

再現用コード:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="300" layout="vertical">
<mx:TextInput width="500"/>
</mx:Application>
今回のケースの再現する条件としては、テキストコントロールのプロパティwidthに親コンテナより大きな値を設定し、Flash Player 10以降をターゲットとしてビルドすることのようだ。

前回のバグ報告を更新して1つにまとめておいたので、気が向いたら修正してもらえるようvoting(投票)をお願いします。
ログイン後の画面左にメニューがあります。
Inline input not supported in Flex text components when compiling for Flash Player 10
http://bugs.adobe.com/jira/browse/SDK-18444

2008/12/16

FlexのテキストコントロールにIMEでインライン入力不可

FlexのTextInput, TextArea, ComboBox(editable), RichTextEditorコントロールにIMEによる日本語入力でインライン入力ができない現象に遭遇した。
Mac OSXでは以前からできないのだけど、今回はWindows Vista, XP + Flash Player 10(Astro)環境で発生。

再現手順:
1. TextInputを作成する。
2. TextInputのプロパティをalphaに1未満の値を設定する。
3. コンパイルオプションに"-target-player=10.0.0"を付けてコンパイルする。
4. Windows環境のFlash Player 10.0.12上で実行し、TextInputに対して日本語入力モードに切り替えて入力する。

再現プログラム:
http://f.air-life.net/samples/flex/AlphaIMETest/

再現用コード:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:TextInput/>
<mx:TextInput alpha="0.99"/>
<mx:VBox alpha="0.99">
<mx:TextInput/>
</mx:VBox>
</mx:Application>

再現する条件としては、テキストコントロール、またはその親コンテナのプロパティalphaに1未満の値、例えば0.99を設定し、Flash Player 10以降をターゲットとしてビルドすることのようだ。

Flash Playerのバージョンは、Flex Builder上ではプロジェクトのプロパティ - Flexコンパイラ - HTMLラッパー から設定する。
なお、Flash Playerのバージョンに10以降を指定するにはFlex SDK 3.2以降が必要になる。

Adobeのバグデータベースを探したけど該当の報告はまだないようなので挙げておいた。
(もし既知バグだったらごめんなさい)

Inline input not supported in Flex text components when compiling for Flash Player 10
http://bugs.adobe.com/jira/browse/SDK-18444

バグデータベースを探していたところ似たような現象がDataGridでも発生するようで報告が挙がっていた。
(再現手順など似ていたので一部コピ)

DataGrid:内部データ編集で確定前の日本語入力が画面左上に表示される
DataGrid:When the internal data is being edited, input text in Japanese is shown in the top-left screen, if it's before being confirmed.
http://bugs.adobe.com/jira/browse/SDK-18317

このバグは入力確定すれば、しっかりとテキストコントロールに入力されるから致命的ではないのだろうけど痛い・・・。

2008/12/12

flinks - ディープリンクライブラリ

Flexで簡単にディープリンクを実現できるflinksというライブラリが公開された。
今のところバージョンは0.1である。
http://code.google.com/p/flinks/

Google Codeで公開されていたのでソースを眺めてみると。
DeepLinking.as, EnableDeepLinking.asの2クラスだけで構成されていた。
どうやらBrowserManagerによる面倒な処理を包み隠してくれているようだ。

試しにサンプルを作って動かしてみたよ。
http://f.air-life.net/samples/flex/flinksTest/

使い方としてはApplicationのmxml内にEnableDeepLinkingを定義してディープリンク機能を初期化し、ディープリンクを適用するState毎にDeepLinkingを定義する。
<riaspace:EnableDeepLinking defaultState="" defaultTitle="でふぉると" autoDeepLinkStates="true"/>

全体のコードはこんな感じ。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:riaspace="net.riaspace.deepLinking.*"
backgroundGradientColors="[#6CFF00, #6CFF00]" viewSourceURL="srcview/index.html">
<riaspace:EnableDeepLinking defaultState="" defaultTitle="でふぉると" autoDeepLinkStates="true"/>
<mx:states>
<mx:State name="state1">
<riaspace:DeepLinking title="title1"/>
<mx:SetProperty target="{kanban}" name="text" value="state1だよ"/>
</mx:State>

<mx:State name="state2">
<riaspace:DeepLinking title="title2"/>
<mx:SetProperty target="{kanban}" name="text" value="state2だよ"/>
</mx:State>

<mx:State name="stateX">
<riaspace:DeepLinking exclude="true"/>
</mx:State>
</mx:states>
<mx:Label id="kanban" text="でふぉ" verticalCenter="0" horizontalCenter="0" fontSize="36"/>
<mx:ApplicationControlBar horizontalCenter="0" top="0" width="100%" dock="true" fillColors="[#34B700, #34B700]" fillAlphas="[1.0, 1.0]">
<mx:Button label="State1" click="currentState='state1'"/>
<mx:Button label="State2" click="currentState='state2'"/>
<mx:Button label="対象外" click="currentState='stateX'"/>
</mx:ApplicationControlBar>
</mx:Application>

「Mashup Seminar in FUKUI」これは行っとかないと

Mashup Seminar in FUKUI」というイベントが来月開催されるみたい。
アップグレードふくいのメールでお知らせが届いたよ。

北陸では数少ない(?)楽しそうなイベントだから行っとかないと。
【日時】2009年1月17日(土)
【会場】Aossa(福井県福井市手寄1丁目4) - 福井駅から徒歩1分
【スケジュール】<セッション>15:00-18:50、<交流会>19:00-20:30
【参加料】2,000円<学生は無料(学生証の提示、もしくはコピーの提出が必要です。)>
  ※セミナー参加料、交流会飲食費を含みます。(当日、受付にてお支払いください。)
【定員】100名(予定)
セミナーの内容 http://www.fisc.jp/mashup/event.html
・「Mashup Awards 4と最新IT事情について」
・「マッシュアップで技術革新!〜MA4最優秀賞作品ChaMap〜」
・「iPhone/Android/jiglet、モバイルマッシュアップセミナー」
・「ふくいソフトウェアコンペティション2008 入賞作品発表会」
・「未定」

当日会場でお会いしましょ。

Spring ActionScript - Prana 作者による紹介

Prana goes Spring - Introducing Spring ActionScriptと題したスライド資料を作者がブログで公開してくれてます。

Spring ActionScript at FlexCamp 2008 Belgium
http://www.herrodius.com/blog/158

サンプルコードを用いて紹介してくれているので、どんなもんかわかりやすいかと。

2008/12/11

Flash Player 10依存のFlexプロジェクトをAntでビルド

Flash Player 10(Astro)依存のAPIを使ったコードをAntでビルドしようとしたら、mxmlcタスクで下記のようなエラーに遭遇したよ。
エラー: 未定義である可能性が高いプロパティ data に静的型 flash.net:FileReference の参照を使用してアクセスしています。
エラー: 未定義である可能性のあるメソッド load を、静的型 flash.net:FileReference の参照を使用して呼び出しました。

なんでだろうと調べてみると、flex-config.xmlにしっかりとFlash Playerのバージョンが設定されていたことにより、「このSWFは9.0.124から実行できますよ」となっていたことが原因だった。

C:¥Program Files¥Adobe¥Flex Builder 3¥sdks¥3.2.0¥frameworks¥flex-config.xml
<flex-config>
<!-- Specifies the minimum player version that will run the compiled SWF. -->
<!-- 9.0.124 is the April 2008 security release -->
<target-player>9.0.124</target-player>

そこで、「このSWFは10.0.12からじゃないと実行できませんよ」と書いてあげれば解決するのだけど、このファイルを変更した場合、他のプロジェクトも影響を受けてしまうので対象プロジェクト専用にflex-config.xmlを作ってあげる。
<flex-config>

<target-player>10.0.12</target-player>

</flex-config>

Flex Builder上では下記のように追加コンパイルオプションを設定する。

プロジェクトのプロパティ - Flexコンパイラ - 追加コンパイル引数
-load-config+=C:¥workspace¥hoge¥flex-config.xml

build.xmlには、mxmlcタスクにload-configを追加してflex-config.xmlをロードさせる。
 <target name="build">
<mxmlc file="src/Hoge.mxml"
actionscript-file-encoding="UTF-8"
debug="false" optimize="true"
output="bin-release/Hoge.swf">
<load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>
<load-config filename="flex-config.xml"/>
<source-path path-element="${FLEX_HOME}/frameworks"/>
<source-path path-element="resources/locale/{locale}" />
<compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
<include name="libs" />
</compiler.library-path>
<compiler.library-path dir="libs" append="true">
<include name="swc" />
</compiler.library-path>
</mxmlc>
</target>

こんなんでFlash Player 10依存のプロジェクトをビルドできたよ。

2008/12/10

AdobeとSpringSourceの蜜月、そしてPranaは変化

BlazeDSとの統合を目的としたSpring BlazeDS Integrationの開発が進められるらしい。

米AdobeとSpringSource、エンタープライズ向けJava RIAで提携
http://www.itmedia.co.jp/enterprise/articles/0812/09/news104.html

それとPrana frameworkがSpring ActionScriptに変わるようだ。
SpringOne Brings a New Tomcat Server, VMware Partnership, and ActionScript Offerings
http://www.infoq.com/news/2008/12/springone-2008
Spring/Adobe - The Spring ecosystem continued to broaden at SpringOne with two key Flex related announcements. The Prana framework was officially renamed Spring Actionscript. As part of the move the project gains official SpringFramework.org forums, JIRA access, and Fisheye integration. SpringSource also announced a partnership with Adobe integrating Spring with BlazeDS:

こちらはPranaの日本語紹介記事。
ActionScript 3 を使ったアプリケーション開発をサポートする Prana フレームワーク
http://www.infoq.com/jp/news/2008/11/prana-framework-actionscript-3

BlazeDS 3.2が先月リリースされてたっぽい

昨日、ふらっとAdobe Open SourceにあるBlazeDSのwikiを見たところリリースビルドが3.2.0.3978に更新されてることに気付いた。
ページのLast Modifiedを見ると先月20日になっているので、リリースされてからだいぶ時間が経っていたみたい。
気づいてなかったんで、さっそく更新してみたよ。

BlazeDS 3.2リリースノート
http://opensource.adobe.com/wiki/display/blazeds/Release+Notes

BlazeDS 3.2 Fixed Issues
http://opensource.adobe.com/wiki/display/blazeds/Release+Notes#ReleaseNotes-BlazeDS3.2FixedIssues

BlazeDSの以前のリリースビルドは確か3.0.0.544。
Adobe LiveCycle Data Services ES 2.6.1のリリースノートにBlazeDS関連の修正を含めた日本語訳があったよ。
英語読解が面倒なときはこちらを見るとイイ。
http://help.adobe.com/ja_JP/livecycle/8.2/lcds_releasenotes.html

2008/12/09

FlexのFileReferenceクラスが憎たらしい

気をつけないとFirefox + SSLだとuploadのリクエストがサーバーに届かんし・・・。
今度はHTTPステータスコードが取れん。

HTTPStatusEventクラスのstatusプロパティ
http://www.adobe.com/livedocs/flex/3_jp/langref/flash/events/HTTPStatusEvent.html#status
Flash Player または AIR がサーバーからステータスコードを取得できなかった場合、またはサーバーと通信できなかった場合、記述したコードにデフォルト値の 0 が渡されます。値 0 は、どのプレーヤーでも生成される可能性があります (たとえば、正しくない形式の URL が要求された場合など)。また、特定のブラウザで実行される Flash Player プラグインでは、HTTP ステータスコードをプレーヤーに渡すことができないので、常に値 0 が生成されます。該当するブラウザには、Netscape、Mozilla、Safari、Opera および Internet Explorer for the Macintosh があります。

通りでサーバー側からHTTPステータスコードを返してもブラウザによっては必ず0が返ってくるわけだ。
くぅー。

as3httpclientas3httpclientlibで代用できないか調べてみよう。
as3httpclientlibのプロジェクトの方は活動してるようだけど、as3httpclientは活動停止中かな。

2008/12/08

Flexでブラウザ判定

Flex上でブラウザがFirefoxかどうか判定する必要があって、Flexから(JavaScriptを経由して)ブラウザを判別するコードを書いたのでメモ。

ActionScriptだけではブラウザの情報が得られなかったため、JavaScriptでブラウザ情報を判別させるファンクションを作って、それをExternalInterfaceクラスを使用して呼ぶようにした。

判別は結構適当。
だって、Firefoxかどうか分かればイイのだから。
そういう意味ではisFirefox()でも良かったかも。

Flexプロジェクトにある html-template/index.template.htmlファイルに以下を追記する。
<script language="JavaScript" type="text/javascript">
<!--
function getBrowserType() {
if(navigator.userAgent.indexOf("msie") != -1) {
return "ie";
} else if(navigator.userAgent.indexOf("firefox") != -1) {
return "firefox";
} else if(navigator.userAgent.indexOf("chrome") != -1) {
return "chrome";
} else {
return "other";
}
}
// -->
</script>

Flex側からは下記のように呼び出す。
ExternalInterface APIがブラウザでサポートされているかavailableプロパティで確認するのはお約束。

下記のサンプルでは、その後はExternalInterface.call()メソッドの戻り値をAlert.show()で表示している。
if(ExternalInterface.available) {
var browserType:String = ExternalInterface.call("getBrowserType");
Alert.show(browserType);
}

2008/12/03

大量にaddChild()したCanvasにマウスオーバーすると…

Flexのお話ですが、大量にコンポーネントをaddChild()したCanvas(他のコンテナも??)にマウスオーバーするとCPU使用率が跳ね上がる現象に遭遇しました。

指定数のコンポーネントをCanvasに貼付けるサンプル
http://f.air-life.net/samples/flex/AddChildTest/

例えば上記のサンプルで3000と指定してaddChildボタンをクリック。
その後、Canvasの隙間にマウスオーバーをするとこの現象が発生します。
Firefoxさん、90%超えです。

特にイベントをリスンするように指定してないしシンプルなのだけれど…。
なぜ??

2008/12/02

Ruboss - Flex, AIRアプリをRails, Merbと連携

ちょいと気になってたFlexフレームワークRuboss。
Rubossアプリの構成は「Flex + Simple RESTful CRUD」のようになる。
MateやCairngorm、PureMVCと競合するフレームワークではないらしい。

Ruboss
http://ruboss.com/

Ruboss – A Flex Framework on Rails(InfoQの記事)
http://www.infoq.com/news/2008/12/ruboss-on-rails

記事の中で作者は「Flex + RailsアプリをRubossを使うと5分で作れるよ。」と言ってる。
Getting Startでは簡単なCRUDアプリの作成手順が紹介しているので後でTRYしてみよう。(全部入力したら5分じゃ済まなそう・・・)

Getting Started with Ruboss and Ruby on Rails
http://github.com/ruboss/ruboss4ruby/wikis/getting-started-with-ruboss-and-ruby-on-rails

ちなみに関連する本も既に出版されている(英語だけど)。
Flexible Rails: Flex 3 on Rails 2(本の紹介)
http://www.amazon.co.jp/Flexible-Rails-Flex-2/dp/1933988509

----2008/12/17 追記
InfoQで記事の日本語訳が出ていた。

Ruboss - Railsでも使えるFlexフレームワーク
http://www.infoq.com/jp/news/2008/12/ruboss-on-rails