ラベル AIR の投稿を表示しています。 すべての投稿を表示
ラベル AIR の投稿を表示しています。 すべての投稿を表示

2009/11/27

Adobe AIR Dayレポート - SORAAIセッションやってきた

2009/11/26に開催されたAdobe AIR Dayにてセッションを担当&参加させていただいたので、そのイベントの報告です。


公式サイト
http://www.info-event.jp/adobe/air/

AIR Day関連レポートのはてブ
http://b.hatena.ne.jp/shoito/AIRDAY

AIR Dayでセッションを行うことになった理由
 Flex勉強会@北陸(金沢)にて、Adobeの轟さんから「AIR 2.0を使ったサンプルアプリケーションの開発と記事の執筆をしませんか?」とお話を頂いたのがキッカケです。
 FxUG北陸は他の地域と違っていて、北陸3県のそれぞれに主催者がいて活動を行っています(対外的には北陸代表が私となっています)。この背景には、北陸の各県だけで閉じて活動を行ってはメンバーが集まらないのではないか?という北陸の勉強会事情があります。せっかく頂いたお話なので、私1人でやらずに3人で協力した方が面白いものができるだろうと協力を仰いだのでした。

Adobe AIR Day
 会場のネットワークの都合上、イベントのUstはなかったのですが、MineAPさんがAIR Day中のtwitter上での発言をまとめてくれているので、そちらも見ると雰囲気が少しでも分かると思います。
 イベント公式ハッシュタグ #AIRDAY

 <開催プログラム>
 1. AIR 2.0がどんなテクノロジーなのか、1.xから2.0でどう変わるのかを解説 by Adobe 轟さん
 2. 我々が実際にAIR 2.0を使用して開発したサンプルアプリケーションの紹介とAIR 2.0 新APIの使用方法、Tipsを解説。
 ・airPort by 宮田さん
 ・CommOn AIR by 有川さん
 ・Touch Viewer by 廣畑さん
 ・SORAAI by 伊藤(私)、盛川さん、西村さん
 ・VoiceLauncher by 山本さん
 3. AIRコンテスト優勝作品 ブログパーツデスクトップの紹介 by quq.jp 飯田さん
 4. Q & A - 轟さん、Flash Playerチーム

 ここで紹介したサンプルアプリケーションに関しては全てAdobe AIRデベロッパーセンターに記事が掲載されています。
 全てのアプリケーションのインストーラー&ソースコードがダウンロード可能ですので、興味のあるものがあれば是非ご覧ください。
 http://www.adobe.com/jp/devnet/air/

AIR 2.0プレス説明会
 Adobeがプレス関係者を招いてAIR 2.0を解説するイベントをAIR Day前に行いました。
 プレス関係者の方々が既に記事を書いてくださってるので、そちらも是非ご覧ください。

 <アジェンダ>
 1. AIR 2.0がどんなテクノロジーなのか、1.xから2.0でどう変わるのかを詳説 by Adobe 轟さん
 2. 我々が実際にAIR 2.0を使用して開発したサンプルアプリケーションを紹介(AIR Dayよりも短く1人5分程度で簡潔に)
 ・airPort by 宮田さん
 ・VoiceLauncher by 山本さん
 ・CommOn AIR by 有川さん
 ・SORAAI by 伊藤(私)
 3. AIRコンテスト優勝作品 ブログパーツデスクトップの紹介 by quq.jp 飯田さん

Flash Catalyst座談会
 Adobe AIR Day終了後、Flash Catalystのローカライズ担当チームと日本語ラベルの表記をどうすべきか自由闊達な意見交換を行いました。AdobeはFlash, Illustrator, Photoshop, ....と数えきれない程の製品を抱えているので、既存のAdobe製品とかけ離れないことが条件となり、ローカライズは大変だろうなと思います。しかし、既存のAdobe製品でも分かりにくい表記があるので、ラベルの改善、ユーザーインターフェースの改善などのフィードバックなども行われました。
 一方的なアンケートだけでなく、”製品を使用している”デザイナー/開発者を招いてその声を聞く、リアルタイムにコミュニケーションを取れるのでフィードバックを得る良い手段でしたね。是非、今回の声を少しでも反映していただきたいです。

懇親会
 全国のFxUG(Flex User Group)の代表者が集まるということで、東京のFxUGメンバーが懇親会を開いてくれました。仙台、東京、北陸、大阪のメンバーが集まり顔合わせ、情報共有、今後の活動、ON/OFFのことをワイワイがやがやと話し合う良い機会となりました。
 ちなみに会場の食べ物がすこぶる旨かった! ← taigaさんのおかげ

朝5時起きして福井から東京へ向かって十二分に満足できた1日でした。
ほんと楽しかったです!
イベントに関わったみなさんに感謝かんしゃです。

2009/11/17

11/21(Sat) Flex勉強会第87回@北陸(福井)やりますよー

11/21(土)PMに、FxUG(Flex User Group)87回目、北陸では5回目のFlex勉強会を開催します。

本日リリースされたAdobe AIR 2.0βとそれを使ったアプリケーション開発プロジェクト、Progression、Arduino・・・Flex/AIR, Flashをテーマにしています。
参加費は無料ですので、お気軽にご参加ください。
懇親会参加予定者の割合がほぼ100%と今回はちょっと異例w

11/26(木)に東京で開催されるAdobe AIR Day(#AIRDAY)で講演予定の内容もやっちゃいます。
http://www.info-event.jp/adobe/air/

<セッション内容>
「デザイナー視点のFlash制作。Progressionで作る、10分でできる画像スライドショー」 by @shirokuro331
「Flashでフィジカルコンピューティング的な何か」 by @itsuki_kosen
「某リモコン的な何か」 by @rch850
「ユーザーインターフェースの何か」 by @checkela
「Adobe AIR 2.0 - AIR Day miniセッション」 by @keisuke322(Adobe 轟さん), @shoito, @coelacanth, @hikaruworld
「(ショートセッション)」 by @katzchang

目的:北陸をもっともっと盛り上げていこう!
対象者:デベロッパー&デザイナー(Flash, ActionScript, Flex, Java, PHP, Rubyなど)
   Flex/AIR, ActionScirpt初心者
定員:25名程度

日時:11月21日(土) 14:30~
      受付:14:00~
場所:(株)サーフボード 1階会議室
住所:〒910-0842 福井県福井市開発2丁目614
最寄駅:えちぜん鉄道勝山永平寺線「越前開発駅」徒歩5分
地図:http://www.surfboard.jp/profile/map_fukui.asp
懇親会(お店): とり元 千乃夢 http://www.hotpepper.jp/strJ000349150/

参加費:無料
参加方法:ATNDで参加登録お願いします
http://atnd.org/events/1814

2009/05/26

Flex Applicationを自動生成 〜Balsamiq Mockups〜

手書き感いっぱいのUIモックアップ作成ソフトBalsamiq Mockupsに、もうすぐ「Generate Flex Application (WebORB)」メニューが追加されます。

これはUIモックアップを作成した後、[Help]-[Generate Flex Application (WebORB)]を選択するとユーザーインターフェースのMXMLとクライアント/サーバーの通信部分(雛形)のコード生成をしてくれる機能です。

この機能は現在、「Balsamiq Mockups Next Release Preview」で試すことができます。
http://www.balsamiq.com/products/mockups/desktop/next

自動生成されるコードは、クライアント側はMXML/ActionScript、サーバー側はJava, C#/VB.Net, PHPとなっているのでサーバー環境にあったものが利用できます。

FAQを見たところ対応しているUIコンポーネントが結構ありますね。
accordion, barchart, button, buttonbar, calendar, canvas, checkbox, colorpicker, columnchart, combobox, datagrid, datechooser, hslider, label, linechart, list, numericstepper, piechart, radiobutton, rule, tabbar, textinput, title, verticaltabbar, vslider

いくつかスクリーンショットを載せておきます。
LabelとButtonだけのシンプルなHello World Flexアプリをデザインしました。

Generate Flex Application (WebORB)メニュー

Flex Applicationの生成

Flex Applicationのダウンロード
Flex Applicationの生成はThe Midnight Codersのサーバー側で行われるようで、zipにまとめられたものをダウンロードできます。

Flex BuilderにMXMLをインポートしデザインモードで表示


自動生成されたクライアント側のコード(もちろん雛形だけ)
MockupSampleView.mxml
<?xml version="1.0" encoding="utf-8"?>
<MockupSampleController xmlns="sampleBalsamiqClient.*" xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%">
<mx:Button x="309" y="107" width="73" height="28">
<mx:label>sayHello</mx:label>
</mx:Button>
<mx:Label x="216" y="109" width="-1" height="-1">
<mx:text>Hello World!</mx:text>
</mx:Label>
</MockupSampleController>
MockupSampleController.as
        package sampleBalsamiqClient
{
import mx.containers.Canvas;
import mx.rpc.remoting.RemoteObject;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.AsyncToken;
import mx.rpc.IResponder;
import mx.collections.ArrayCollection;

public class MockupSampleController extends Canvas
{
[Bindable]
public var model:MockupSampleModel = new MockupSampleModel();

private var remoteObject:RemoteObject;

public function MockupSampleController()
{
super();
remoteObject = new RemoteObject("GenericDestination");
remoteObject.source = "sampleBalsamiqServer.MockupSampleService";



remoteObject.addEventListener("fault", onFault);

initializeController();
}

public function onFault (event:FaultEvent):void
{
Alert.show(event.fault.faultString, "Error");
}

public function initializeController():void
{

}
}
}
MockupSampleModel.as
        package sampleBalsamiqClient
{
import mx.collections.ArrayCollection;

public class MockupSampleModel
{

}
}

ちなみにBalsamiq MockupsはAdobe AIRで作られていますのでMac OS X, Windowsでも動作しますし、Web版も公開されています。
日本語が使用できない場合は[View]-[Use System Fonts]にチェックを入れてお試しください。

Balsamiq MockupsはUIモックアップの定義だけであって、Flash Catalystのようにインタラクションの定義は今のところできません。
なお、ライセンスは有償で79ドルとなっていますが評価利用は可能です。
Balsamiq Mockups
http://www.balsamiq.com/products/mockups

From Mockups to Flex in Seconds! - The Midnight Coders: Balsamiq Integration
http://www.themidnightcoders.com/develop-ria/balsamiqapp

Weekly Release: New Default Font (on OS X) and more -Coming soon: WebORB integration!-
http://www.balsamiq.com/blog/2009/05/25/newfont/

2009/05/24

twitterアカウントまとめ - ActionScript, Flex, AIRのフレームワーク関連

Mate FrameworkやHydra Frameworkのサイトを訪れると「Follow us on Twitter」のリンクを見かけたので、他にも興味のあるフレームワークがtwitterアカウントを持っていないか調べてみました。

今は新バージョンのリリース告知等をtwitterでも行うからアカウントを取得しているところが多いんですね。

Flash Platform
http://twitter.com/Flash_Platform

Flex Framework
http://twitter.com/flex

AIR
http://twitter.com/air

Degrafa
http://twitter.com/degrafa

Spring ActionScript
http://twitter.com/springas

PureMVC
http://twitter.com/puremvc

Mate Framework
http://twitter.com/MateFramework

Gaia Framework
http://twitter.com/gaiaframework

Hydra Framework
http://twitter.com/HydraFramework

Hydra MVC
http://twitter.com/HydraMVC

FlexUnit
http://twitter.com/FlexUnit

Adobeanのtwitterリスト
http://blog.air-life.net/2009/02/adobeantwitter.html

2009/05/01

AS3, Flex最適化テクニック&プラクティス総まとめ

InsideRIAで公開されていたSean Moore氏による記事「Round up of ActionScript 3.0 and Flex optimization techniques and practices」をだいぶ適当に訳してみた。

Round up of ActionScript 3.0 and Flex optimization techniques and practices
http://www.insideria.com/2009/04/51-actionscript-30-and-flex-op.html


AS3, Flex最適化テクニック&プラクティス総まとめ
1. Avoid the new operator when creating Arrays
Arrayを生成する際に、new演算子の使用は避ける。
var a = []; 

悪い例:
var a = new Array();


2. Arrays are expensive to create, do so conservatively
Arrayの生成コストは高いので、控える。
var vanityCollection01 : Array = new Array(); 
var vanityCollection02 : Array = new Array();
var vanityCollection03 : Array = new Array();
var vanityCollection04 : Array = new Array();


3. Fastest way to copy an array:
Arrayをコピーする最速の方法。
var copy : Array = sourceArray.concat(); 


4. Setting values in Arrays is slow
Arrayへの値の設定は遅い。
employees.push( employee ); 
employees[2] = employee;


5. Getting values from Arrays is twice as fast as setting
Arrayから値を取得するのは設定より2倍ほど速い。
var employee : Employee = employees[2]


6. Use static for properties methods that do not require an object instance
インスタンスを必要としないプロパティ、メソッドにはstaticを使う。
StringUtils.trim( "text with space at end " ); 
Class definition:
package
{
public final class StringUtils
{
public static function trim( s : String ) : String
{
var trimmed : String;
// implementation...
return trimmed;
}
}
}


7. Use const for properties that will never change throughout the lifecycle of the application
アプリケーションのライフサイクルを通して、変更の無いプロパティにはconstを使う。
public const APPLICATION_PUBLISHER : String = "Company, Inc."; 


8. Use final when no subclasses need to be created of a class
サブクラスを作成する必要がないクラスにはfinalを使う。
public final class StringUtils 


9. Length of method/variable names doesn't matter in ActionScript 3.0 (true in other langs)
メソッド名/変数名の長さはActionScript 3.0では問題にはならない。
someCrazyLongMethodNameDoesntReallyImpactPerformanceTooMuch(); 


10. One line assignments DO NOT buy any performance (true in other langs)
代入を1行にまとめたところでパフォーマンスは向上しない。
var i=0; j=10; k=200; 


11. No difference in memory usage between an if statement and a switch statement
if文とswitch文では、メモリ使用量に差はない。
if ( condition ) 
{
// handle condition
}

まったく同じ:
switch ( condition ) 
{
case "A":
// logic to handle case A
break;

case "B":
// logic to handle case B
break;
}


12. Rank your if statements in order of comparisons most likely to be true
if文の条件はtrueとなる可能性の高い順に並べる。
if ( conditionThatHappensAlot ) 
{
// logic to handle frequently met condition
}
else if ( conditionThatHappensSomtimes )
{
// handle the case that happens occaisonally
}
else
{
// handle the case that doesn’t happen that often
}


13. AVM promotes int to Number during calculations inside loops
(VM has been changing, from 9 to 10, so int, uint and number conversions aren't as slow as they used to be.)
AVMはループ内での計算中にintをNumberに変換する。(VMが9から10に代わって、int, uint, Numberの変換はそれほど遅くはなくなった。)

14. Resolve issues of promotion, unknown, or incorrect object types
変換、未知の型、不正な型の問題を解決すること

15. Use uint sparingly, it can be slow (VM has been changing, from 9 to 10, so int, uint and number conversions aren't as slow as they used to be.)
uintは慎重に使う。注意しないと遅くなることがある。(VMが9から10に代わって、int, uint, Numberの変換はそれほど遅くはなくなった。)
var footerHex : uint = 0x00ccff; 


16. Use integers for iterations
反復の判定にはintを使う。
(var i: int = 0; i < n; i++) NOT for (var i: Number = 0; i < n; i++) 


17. Don't use int with decimals
少数値を扱うためにintを使わない。
var decimal : Number  = 14.654; 

悪い例:
var decimal : int  = 14.654; 


18. Multiply vs. Divide: instead of 5000/1000 use: 5000*0.001
乗算 vs 除算: 5000/1000の代わりに、5000*0.001を使う。

19. Locally store function values in for and while statements instead of repeatedly accessing them
for、while内で繰り返し計算させるよりも、ループ外でローカル変数に入れておき、それを使用する。
for (..){ a * 180 / Math.PI; }  
declare: toRadians = a*180/Math.PI; outside of the loop


20. Avoid calculations and method calls in loops
ループの中で計算やメソッド呼び出しをしない。
var len : int = myArray.lengh;  
for (var i=0;i<len;i++){ }

悪い例:
for (var i=0;i< myArray.lengh;i++){ } 


21. Use RegEx for validation, use string methods for searching
バリデーションにはRegEx(正規表現)を使い、検索にはStringのメソッドを使う。
// postal code validation example using regular expressions 
private var regEx:RegExp = /^[A-Z][0-9][A-Z] [0-9][A-Z][0-9]$/i;
private function validatePostal( event : Event ) : void
{
if( regEx.test( zipTextInput.text ) )
{
// handle invalid input case
}
}

// search a string using String methods
var string : String = "Search me";
var searchIndex : int = string.indexOf( "me" );
var search : String = string.substring( searchIndex, searchIndex + 2 );


22. Reuse objects to maintain a “memory plateau” DisplayObjects, URLLoader objects
メモリ使用量を抑えるために、DisplayObject、URLLoaderオブジェクトは再利用する。

23. Follow the Flex component model:
Flexのコンポーネントモデルに従う。
createChildren(); 
commitProperties();
updateDisplayList();


24. Only use Datagrids as a last resort (make sure you can’t implement in a regular List first)
DataGridは最後の手段として使う。(まずは通常のListで実現できないか確かめる)

25. Avoid Repeaters for scrollable data
スクロールデータにRepeaterの使用は避ける。

26. Avoid the setStyle() method (One of the most expensive calls in the Flex framework)
setStyle()メソッドの使用は避ける。(setStyle()メソッドはFlexフレームワークの中で高コストな呼び出しの一つ)

27. Using too many containers dramatically reduces the performance of your application
使用するコンテナが多過ぎるとパフォーマンスが著しく低下する恐れがある。
<mx:Panel> 
<mx:VBox>
<mx:HBox>
<mx:Label text="Label 1" />
<mx:VBox>
<mx:Label text="Label 2" />
</mx:VBox>
<mx:HBox>
<mx:Label text="Label 3" />
<mx:VBox>
<mx:Label text="Label 4" />
</mx:VBox>
</mx:HBox>
</mx:HBox>
</mx:VBox>
</mx:Panel>


28. You do not need to always use a container tag as the top-level tag of components Totally valid component, no top level container needed:
コンポーネントのトップレベルに、常にコンテナを使う必要はない。
<mx:Image xmlns:mx="http://www.adobe.com/2006/mxml"  
source="avatar.jpg" width="200" height="200" />


29. Remove unnecessary container wrappers to reduce container nesting
コンテナのネストを減らし、不必要なコンテナを削除する。

30. Avoid: The VBox container inside an tag, (eliminates redundancy)
コンテナタグ内の無駄なVBoxの使用は避ける。
<mx:Panel> 
<mx:Label text="Label 1" />
<mx:Label text="Label 2" />
</mx:Panel>
<mx:Panel>
<mx:VBox>
<mx:Label text="Label 1" />
<mx:Label text="Label 2" />
</mx:VBox>
</mx:Panel>


31. Avoid: VBox container inside an mx:Application tag, (eliminates redundancy)
mx:Applicationタグ内の無駄なVBoxの使用は避ける。
<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml>
<mx:Label text="Label 1" />
<mx:Label text="Label 2" />
</mx:Application>

悪い例:
<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml>
<mx:VBox>
<mx:Label text="Label 1" />
<mx:Label text="Label 2" />
</mx:VBox>
</mx:Application>


32. Set the recycleChildren property to true to improve a Repeater object's performance (re-uses previously created children instead of creating new ones)
Repeaterオブジェクトのパフォーマンス向上のため、recycleChildrenプロパティにtrueを設定する。(新しいRepeater対象オブジェクトを生成する代わりに、前に生成されたオブジェクトを再利用する)
<mx:Script> 
<![CDATA[
[Bindable]
public var repeaterData : Array = ["data 1", "data 2"];
]]>
</mx:Script>

<mx:Repeater id="repeater" dataProvider="{repeaterData}">
<mx:Label text="data item: {repeater.currentItem}"/>
</mx:Repeater>


33. Keep framerate set at 60 fps or lower
フレームレートは60fpsかそれ以下にする。
<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml
frameRate="45">
</mx:Application>


34. Avoid multiple display manipulations per frame
フレーム毎に複数の表示操作を行うのは避ける。

35. Code against ENTER_FRAME events instead of Timer events
Timerイベントの代わりに、ENTER_FRAMEイベントを使う。
public function onEnterFrame( event : Event ) : void 
{
}
private function init() : void
{
addEventListener( Event.ENTER_FRAME, onEnterFrame );
}

悪い例:
public function onTimerTick( event : Event ) : void 
{
}
private function init() : void
{
var timer : Timer = new Timer();
timer.start();
timer.addEventListener( TimerEvent.TIMER, onTimerTick );
}


36. To defer object creation over multiple frames use:
複数フレームに及ぶオブジェクト生成を遅らせる際に、"queued"を指定する:
<mx:Container creationPolicy="queued"/>


37. Alpha = 0 is not the same as visible = false (Objects marked invisible are passed over)
Alpha = 0は visible = falseと同等ではない。(非表示マークが付けられることではない)
loginButton.visible = false;

悪い例:
loginButton.alpha = 0; 


ここに挙げた以外にFlex/AIR, ActionScriptのパフォーマンス最適化についてまとめられている記事がいくつかあるのでリストしておきます。
Flex アプリケーションのパフォーマンス : クライアントアプリケーションのパフォーマンスチューンアップテクニック集
http://www.adobe.com/jp/devnet/flex/articles/client_perf.html

ActionScript 3.0におけるパフォーマンス向上のヒント
http://www.adobe.com/jp/devnet/flash/articles/ac3_performance.html

「Round up of ActionScript 3.0 and Flex optimization techniques and practices」記事の参照元
Sean Christmann: Optimizing Adobe AIR for Code Execution, Memory, and Rendering
http://www.craftymind.com/2008/11/20/max-2008-session-material/

Dennis Ippel: Some ActionScript 3.0 Optimizations
http://www.rozengain.com/blog/2007/05/01/some-actionscript-30-optimizations/

Shane McCartney: Tips on how to write efficient AS3
http://www.lostinactionscript.com/blog/index.php/2008/09/28/tips-on-how-to-write-efficient-as3/

Flex Application Performance: Tips and Techniques for Improving Client Application Performance
http://www.adobe.com/devnet/flex/articles/client_perf.html

Stephen Calender: ActionScript 3.0 Benchmarking
http://www.stephencalenderblog.com/?p=7

Grant Skinner: Types in AS3: ints not so fast, uints slow!
http://www.gskinner.com/blog/archives/2006/06/types_in_as3_in.html

Grant Skinner: Resource management strategies in Flash Player 9
http://www.adobe.com/devnet/flashplayer/articles/resource_management.html

Gary Grossman: ActionScript 3.0 and AVM2 Performance Tuning
http://www.onflex.org/ACDS/AS3TuningInsideAVM2JIT.pdf

Fastest way to copy an array
http://agit8.turbulent.ca/bwp/2008/08/04/flash-as3-optimization-fastest-way-to-copy-an-array/

Andre Michelle: AS3 optimations & suggestions
http://blog.andre-michelle.com/2005/as3-optimations-suggestions/

Package-level function closures in ActionScript
http://www.ericfeminella.com/blog/2008/05/06/package-level-function-closures-in-actionscript/

ActionScript 3 optimization techniques
http://blog.joa-ebert.com/2008/04/26/actionscript-3-optimization-techniques/

AS3 Performance Tester
http://businessintelligence.me/projects/performance_tester/performanceTester.html

2009/04/08

Adobe AIR開発者のための情報総まとめ

今日のSMASHING MAGAZINEでAdobe AIR開発者は読んどけ!的な情報がまとめられていました。

Adobe AIR Developer's Toolbox: Resources And Tutorials
http://www.smashingmagazine.com/2009/04/07/adobe-air-developers-toolbox-resources-and-tutorials/

記事中の項目をリストアップしてみました。
これは見といて損はないです。
1. What is AIR and How To Get Started?
2. Official Adobe AIR Resources
3. Adobe AIR Help, Support and Forums
4. Adobe AIR Development Tools and References
5. Adobe AIR Cheat Sheets
6. Adobe AIR Free Samples
7. Adobe AIR Beginner Tutorials
8. Adobe Air Tutorials
9. Adobe AIR Video Tutorials
10. Cool Adobe Air Applications
11. Further resources

2009/04/07

Durangoメモ 〜ComposableDragSupport〜

Durango対応アプリを作るには必須のComposableDragSupportクラスについて。
ComposableDragSupport Durangoサポートには必須
createDragSupportDonor(container, w, services)
container:ビジュアルコンポーネントが置かれているコンテナ
w:Native Window
services:サービスコンポーネント
createDragSupport(container, w, services)
container:ビジュアルコンポーネントが置かれているコンテナ
w:Native Window
services:サービスコンポーネント
createDropHandlerFor(droppableContainer, services)
droppableContainer:ビジュアルコンポーネントのドロップ先
services: サービスコンポーネントのドロップ先

2009/04/05

Durangoメモ 〜メタデータ〜

DynamicConfig.xml
バイナリに保持するAS3メタデータ定義

[AutoConnect] 他のコンポーネントと接続できることを示す
sink データ入力としてのプロパティであることを示す
source データ出力としてのプロパティであることを示す
nameMustMatch コンポーネント同士のプロパティ名が一致していることを条件とする
allowMultiple 複数接続可能であることを示す
order [AutoConnect(sink, order=2)] Propertiesにはorder順で表示される
ie.
[AutoConnect(sink, source)]
public function set text (val:String):void {

[PersistentStyles] ドロップ時に値を保持するスタイルを指定する
ie.
[PersistentStyles("color", "fontFamily", "fontSize")]
public class ReusableTextArea extends TextArea implements IComposable {

[PersistentProperties] ドロップ時に値を保持するプロパティを指定する
ie.
[PersistentProperties("text", "drawHello")]
public class ReusableTextArea extends TextArea implements IComposable {

[Persistent] ドロップ時に値を保存するプロパティであることを示す
ie.
[Persistent]
public function set fileName (name:String):void {

[Editable] デザインモードのプロパティ編集画面の編集対象であることを示す
sink データ入力としてのプロパティであることを示す
Name 表示名
type 型
Value 初期値
Values 選択オプション
ie.
[Editable(Name="Enumeration", type="Enum", Value="a", Values="a,b,c,d")]
public function set EnumExample(s:String):void {

ie.
[Editable(sink, type="File")]
override public function get source():Object {

[DesignModeOnly] サービスコンポーネントであることを示す
ie.
[DesignModeOnly]
public class HelloServiceComponent implements IComposable, IMXMLObject {

[ModuleFileName] 不明

[NoDesktopBorder] 不明

2009/04/03

Durangoメモ 〜TemplateLauncher〜

ショートカットから自動生成したプロジェクトにできるショートカットLaunchでは、TemplateLauncherにアプリケーション記述と実行ファイルのパスを渡している。

"C:\Program Files\Adobe\Durango\Support\bin\TemplateLauncher.exe" "C:\Users\hoge\workspace\Application-0000\bin\Main-app.xml" "C:\Users\hoge\ workspace\Application-0000\bin"

shoito専用ブラウザ - siBrowser

私が頻繁にアクセスするサイト専用のブラウザをAIRでちょちょっと作ってみた。
shoito、sho ito専用のブラウザってことでsiBrowserにしよう。

私以外の人にはこれっぽっちも何の役にも立ちません。
インストールして後悔しないでください。
URLとfaviconのリストとHTMLLoaderを利用しているだけなので、アドレスバーすらないですからね!

シームレスインストールを試してみたかっただけですもん。
http://help.adobe.com/ja_JP/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7e15.html


siBrowser
http://f.air-life.net/apps/siBrowser/

2009/03/31

Tour de FlexのFlex版が公開中

Tour de FlexはAdobe AIR版が今まで公開されていましたが、先日、Flex版も公開されました。

Tour de Flex
http://www.adobe.com/devnet/flex/tourdeflex/web/

Flexのコンポーネントはもちろんのこと、Amazon, Flickr, Cocomo, Salesforce.comなどのCloud APIやGoogle Maps APIを利用したサンプルコードをブラウザ上で簡単に見て、試せますよ。

2009/03/22

Durangoメモ 〜レイアウト〜

Automatic Layoutを指定する場合は、Drop先にはCanvasではなく、DynamicPortalを使用する。

Automatic Layout
    <mx:Canvas id="container">
<Reuse:DynamicPortal id="dropHere">
<!-- Added Components Start Here -->
<!-- Added Components End Here -->
</Reuse:DynamicPortal>
</mx:Canvas>
Manual Layout
    <mx:Canvas id="container">
<mx:Canvas id="dropHere">
<!-- Added Components Start Here -->
<!-- Added Components End Here -->
</mx:Canvas>
</mx:Canvas>

2009/02/27

「文字化け」は「mojibake」

先日、AIR 1.5.1とFlash Player 10.0.22.87がリリースされたので、リリースノートでどんなバグFixされてるのかなーと確認していたら、「mojibake」という表記を多々発見。

http://www.adobe.com/support/documentation/en/flashplayer/10/Flash_Player_10_Release_Notes.pdf

ページ53/176
The following issues have been fixed in Flash Player 10.0.22.87:
• Flash Player 10 crashes in IE7 due to the use of a dynamic TextField as a mask on another display object when the field set to anti-alias for readability. (FP-1238/2256938)
• A sound stream error #2032 will cause the playback of a separate stream to stop playback. (FP-910/2251944)
• Japanese text mojibake (garbled) at Input Text in Flash 5 swf. (2223727)
......
おぉー、日本語の「文字化け」って、英語でも「mojibake」って表現するんですね。
「garbled」が括弧に書かれてるってことは主に使われるのは「mojibake」なんかな。

「mojibake」は世界共通語か。

2009/02/25

Clear Toolkitがオープンソースになったみたい

Clear Toolkitというツール群(Eclipse Plugin)はFarata Systemsという会社が提供している。
そこの社員さん達(?)のブログでは、よくFlexやAdobe AIRの情報を多々公開してくれている。
どうやらFarataのClear Toolkitが最近オープンソースになったようだ。

Flex framework Clear Toolkit goes open source
http://flexblog.faratasystems.com/?p=396

公開されたツール群がこちら。
  • Clear Toolkit 3.1
  • Clear Data Builder 3.1
  • DTO2Fx
  • Log4Fx
  • Fx2Ant
  • clear.swc

2009/02/19

Adobeanのtwitterリスト

Adobe on Twitter
http://www.webkitchen.be/2009/02/18/adobe-on-twitter/

「a list of Adobeans on Twitter.」と記事中にありますが、Adobeanって表現するんですね。
初めてみました。

Adobeanをググって見ると全世界で約336,000,000件も発見。
かなり使われてるみたいです。
日本語のページを検索したら、たった3件でしたけどね。

↓これだけフォローしときました。
AIR: http://twitter.com/air
Flash Platform: http://twitter.com/Flash_Platform

2009/02/15

HTTPStatusEventのstatusについて一言

詳説ActionScript 3.0を読んでいて、以前FlexでHTTPStatusEventのstatusを使いエラー有無を判別しようとして、とても残念な気持ちになったことを思い出した。

事実上、FlexではHTTPStatusEventは使い物にならないのだ。
その理由はリファレンスガイドを読むとわかるのだけど、ほとんどのブラウザではstatusは常に0になってしまうから。

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

この記述の最後のところを見ると…。
該当するブラウザには、Netscape、Mozilla、Safari、Opera および Internet Explorer for the Macintosh があります。

つまり、Windows上のInternet Explorer以外はダメなんじゃ?
要件でそこまでブラウザを限定できるのならかまわないけど、それは厳しいだろうと思う。

HTTPStatusEventはAIR用だと考えておくことにする。


同じ残念な思いをした方が他にもいた。
http://d.hatena.ne.jp/funnystone/20071018/1192696222

2009/02/10

Durangoの発表資料鋭意作成中

最近、投稿をサボってるのはFlex3勉強会北陸での発表資料を作ってるから。
タイトルは「マッシュアップフレームワークDurangoの紹介(~詳説?)」です。

Durango
http://labs.adobe.com/technologies/durango/

Durango(ドゥランゴ) - Adobe AIRフレームワーク
http://blog.air-life.net/2008/11/durango-adobe-air.html

※追記(2009/02/22)
勉強会が無事終わったので資料を公開します。
http://www.scribd.com/doc/12725795/DD-Mashup-Framework-Durango

2009/01/27

ポケットのiPhoneにAS3 APIリファレンスを

これで散歩中に突然、「mx.controls.DataGridのAPIって、どうなってたっけ?」という時も、ササっと調べられますよ。
なかなか、散歩中にそんなこと考えないですけど。

ActionScript 3 API Reference for the iPhone
http://www.mikechambers.com/blog/2009/01/26/actionscript-3-reference-for-iphone/

家帰ったらダウンロードしてみよう。
ipod touchだからWi-Fiがないと・・・。

日本語のリファレンスに取り換えられないだろうか。

Colabolo - Adobe AIR製のコラボレーションツール

イマヒマ株式会社がColabolo(コラボロ)というAdobe AIR製のアプリを公開しています。
名前はColalobo(コラロボ)やColaboro、Coraboroではなく、Colabolo(コラボロ)ですのでお間違いなく。
これはチーム(25人以下対象)のタスク管理とコミュニケーションを一体化したコラボレーションツールです。

Colabolo(コラボロ)
http://www.colabolo.com



特長:
・メールクライアントのような誰でも使える操作性
・オフラインでも利用できる(SQLite)
・ゼロインストール(AIR)

現在は0.4ベータ版ということで無償で試用できますので、お試しあれ。
将来的には、ユーザー1人あたり3600円/月程度で提供予定らしいです。

試用してみた印象としては、UIは既存のWebベースのITS(課題管理システム)がAIR上で実現されて、サクサク動く感じでした。
課題やそれに付けられるコメントは履歴管理がなされていてGoodです!

以前、echo - Adobe AIR製のTODO管理サービスという投稿で、株式会社トラストコンベクションが開発しているechoを紹介しました。
echoは、スタイルが新しい(過ぎるほど)ので好き嫌いが分かれそう(私は大好き)でしたが、ColaboloはUIが既存のITSっぽいので、取っ付きやすいと思います。

ちなみに、Colaboloは@ITの記事でも紹介されています。
こちらでは、AIR+SQLiteによるC/SのリアルタイムDB同期についても書かれているので、AIRアプリ開発者は見ておくとイイと思いますよ。
AIR+SQLiteで実現するGTDアプリ -「Colabolo」から見るRIAのこれから

イマヒマ株式会社って、JIRA(ジラ)とConfluence(コンフルエンス)を扱うAtlassian社の日本総代理店もしてるんですね。

2009/01/24

FUnit - Metadata Driven Unit Testing for Flex

Fluintじゃなくて、FUnitっていうFlex用のテストフレームワークがありました。

FUnit
http://blog.funit.org/

FAQにFlexUnitとコードを用いた比較が掲載されてます。
テスト対象に[Test]、例外の検出に[ExpectedError("XxxError")]などのメタタグをつけて、テストコードをよりシンプルにしている辺りが、JUnit 4(アノテーション利用)やNUnit(メタタグ利用)に似てますね。