メイン

「AIR」のアーカイブ

2008年1月 7日

EclipseでFlex

去年から触ってみようとしていたFlexにようやく着手。

Flex Builderを買ってみようかとも思ったけど、まずはフリーのツールで環境構築してみようかなと。

ということで慣れ親しんだEclipseちゃんでFlexの開発環境と整えてみることにしました。

 

0.Eclipseがない人はまずEclipseをダウンロード

http://www.eclipse.org/downloads/ とか http://www.bea.com/distros/eclipse.html とかから。

Eclipseは解凍するだけでOKなので、解凍後Cドライブ直下とかに配置。
(ちなみに僕はC:\programming\eclipse の下にeclipse320 とか eclipse330とか複数バージョンが入ってます。)

 

1.AdobeのサイトからFlex3 SDKをダウンロード

http://labs.adobe.com/technologies/flex/sdk/flex3sdk.html から。

" I have read the Adobe Flex Beta and Early Build Access License, and by downloading the software listed below I agree to the terms of the agreement. " にチェックを入れて、"Download Flex 3 SDK 3 beta 3 for all platforms" からダウンロード。

 

2.ダウンロードしたファイルを解凍して、都合の良い場所に移動。

僕は C:\flex3sdk に配置したので、以下の説明はすべてそのディレクトリで行います。適宜読み替えてください。

 

3.Eclipseを起動して、普通のプロジェクトを作成

ナビゲーターパースペクティブ上で、右クリック→「新規」→「プロジェクト」

flexoneclipse_000.png

ポップアップで表示されたウィンドウで、「一般」→「プロジェクト」

flexoneclipse_001.png

ここで、今回はHelloWorldという名称のプロジェクトを作成します。

 

4.作成したプロジェクト内に、以下の図の用にフォルダとファイルを作成

flexoneclipse_002.png

各ファイルの中身はとりあえず空っぽで。

 

5.build.properties と build.xmlを以下のように記述

build.properties (Flex sdkのbinディレクトリの絶対パスを指定)

FLEX3_HOME=C:/flex3sdk/bin

build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloWorld" default="build.swf" basedir=".">
    <property file="build.properties" />
    <property name="dist.dir" value="dist" />
    <property name="src.dir" value="src" />
    <property name="height" value="100" />
    <property name="width" value="200" />
    <property name="framerate" value="30" />
    <property name="bgcolor" value="0xFFFFFF" />
   
    <!-- create swf-->
    <target name="build.swf" depends="clean">
        <exec executable="${FLEX3_HOME}/amxmlc.bat" failonerror="true">
            <arg line="-default-size ${width} ${height}" />
            <arg line="-default-frame-rate ${framerate}" />
            <arg line="-default-background-color ${bgcolor}" />
            <arg line="-output ${dist.dir}/HelloWorld.swf" />
            <arg line="${src.dir}/HelloWorld.as" />
        </exec>
    </target>

    <!-- clean dist directory -->
    <target name="clean">
        <delete>
            <fileset dir="${dist.dir}" includes="HelloWorld.swf" />
        </delete>
    </target>

</project>

 

6.HelloWorld.as と index.htmlを以下のように記述

HelloWorld.as

package {
    import flash.display.*; 
    import flash.text.*; 
    public class HelloWorld extends Sprite {
        public function HelloWorld() {
            var textField:TextField=new TextField();
            textField.text="Hello World!";
            textField.autoSize=TextFieldAutoSize.CENTER;
            addChild(textField);
        }
    }
}

index.html

<html>
<head>
<title>Sample Page</title>
</head>
<body>
<object width="100%" height="100%">
<param name="movie" value="HelloWorld.swf"></param>
<embed src="HelloWorld.swf" type="application/x-shockwave-flash" width="100%" height="100%"></embed>
</object>
</body>
</html>

 

7.Eclipse で Ant ビューを開く

「ツール」→「ビューの表示」→「その他」(ここで「Ant」があったらそれをクリック)

flexoneclipse_003.png

「Ant」→「Ant」を選択

flexoneclipse_004.png

 

8.Antビューにbuild.xmlのファイルをドラッグ&ドロップ

すると↓こんな感じでターゲットが表示される。

flexoneclipse_005.png

9.Antビューの中のbuild.swf ターゲットをダブルクリック

amxmlc.batが実行されて、distディレクトリの下にHelloWorld.swfが生成されるので、index.htmlをブラウザで開いてチェック。

flexoneclipse_006.png

↓今回のファイル一式

HelloWorld.zip

 

これで、Eclipse上でソースを編集して、9の「Antビューの中のbuild.swf ターゲットをダブルクリック」を繰り返して開発してみようかな。

ActionScript3の良いEclipse pluginがないのが残念。地道にテキストエディタで書かないと・・・。

AIRアプリのコンパイルもbuild.xmlに書くんだけど、続きはまた今度。

HelloWorld以外のアプリを作るときは、

  1. HelloWorld.as のファイル名およびクラス名を修正
  2. build.xml 中の以下の項目を修正
  • <property name="height" value="100" /> : 生成されるswfファイルの高さ
  • <property name="width" value="200" /> : 生成されるswfファイルの幅
  • <property name="framerate" value="30" /> : 生成されるswfファイルのフレームレート
  • <property name="bgcolor" value="0xFFFFFF" /> : 生成されるswfファイルの背景色
  • <arg line="-output ${dist.dir}/HelloWorld.swf" /> : 出力されるswfファイル名
  • <arg line="${src.dir}/HelloWorld.as" /> : ソースのasファイル名
  • <fileset dir="${dist.dir}" includes="HelloWorld.swf" /> : buildの度にdistディレクトリから削除するファイル名

これでOKです。

2007年12月24日

AIRについて最近知ったこと

ちょっと前に、会社にAdobeの人が来て、デモとか技術的な解説とかしてくれました。

で、そのとき知ったこと、思ったことのメモ。

・Flash と Flex の違い
→開発環境の違い。Flash はタイムラインにライブラリから表示するものを乗せていく作り方で、Flexは描画するものをmxmlで記述する(かなりざっくり言うとだけど)。できあがるものは両方とも.swfファイル。ただし、Flexでしか利用できない機能があるらしい。
※この辺を分かりにくくしているのは、Adobe / Macromedia のネーミングセンスが悪いからだと、個人的に思ってます。

・AIRアプリケーションには、AIR(実行環境)のインストールモジュールも含めることができる。
→なので、AIRがインストールされていない人がAIRアプリをインストールするときに、わざわざ別にAIRをインストールする必要がない。

・「ブラウザの制約を受けたくない」「ローカルのファイルにアクセスしたい」ってときだけ、FlashのAIR化を検討すれば良いかも。

・AIRのHTML エンジンはSafariで使われているものと同じ。

・AIR で使われるFlash Player のバージョンは、当面、通常のFlash Player のリリースの後追いになる(けど、いづれは同期をとる予定だとか)。

・AIR の売りの一つは、Web系のシステムを作ってきた人で、VBとかの知識がなくてもデスクトップアプリを作れる点。

2007年11月 5日

AIR MAX Japan 2007

僕的には AIR MAX って言ったらこういうやつなんですけどね。わざとかけてあるのかな。

AIRが変える日本のネットサービス--Adobe MAX Japan 2007:ニュース - CNET Japan

サイバーエージェントが現在AIRベースで開発を進めているのが、「voq photo AIR」。このツールは、デスクトップで写真を整理するためのアプリケーションで、デスク上に写真を広げ、実際に写真を並べたり重ねたりするように直感的に操作できるのが特徴だ。

AIR じゃなくて、こういうインタフェースの奴、前にいくつか紹介されてましたね。

デジタルになって、整然と一覧で見ることが出来るようになったのに、わざわざ「雑然」と「ざっくり」と整理できるようなアナログチックなインタフェースが流行だすってなんかおもしろ。


一方、ヤフーは現在、Flex 2による日本独自のウェブメールサービスを開発している。

WebメールがFlashになるのかー。

ヤフーメールがもはやスパムの温床にしかなってないからなぁ。Gmail 様々な今では、ヤフメがFlashになったところで乗り換える気は毛頭ないんだけど、どうなんだろ。やっぱり3ペインのデスクトップアプリ的なインタフェースを目指すところに限界を感じてしまうなぁ。


楽天は、開発中の楽天市場用デスクトップアプリケーションを披露した。AIRをベースにしたこのツールはデスクトップに常駐し、楽天市場で検索した商品の中からお気に入りのものをウィンドウ内にドラッグ&ドロップで登録することが可能となる。


こういうのは面白いんだけど、○○専用ブラウザって時点で、OSにインストールするデスクトップアプリとしてはちょっと限界がある気がする。

かっこよく整理されたインタフェースで、Amazon や楽天とかが見ることができるようになったら、いよいよAIR 、いやWebサービスの本領発揮なんじゃないかなぁ。

一応アプリのイメージは頭の中にあって、Amazonで検索していて、この商品に似たものが楽天市場でないかなと、ワンクリック(或いはマウスジェスチャー)すると、画面がシュイってなって、シュッと楽天の検索結果が出てきて、それでいてさっきのAmazonの画面は半透明になって背景にとけ込んでいる、みたいな。作ってみろよって話ですね、はい、すみません。

2007年10月 5日

AIR ベータ2 公開

そろそろ AIR アプリの開発に手を出してみようかなと思ってます。

先日、AIR のベータ2が公開されたので、どんなもんなのかと思ったら↓下記ページに変更点が詳しく紹介されていました。


Adobe AIRで作るデスクトップアプリケーション:第10回 Adobe AIR ベータ2公開|gihyo.jp

  • ByteArray.inflate()とByteArray.deflate()の両メソッドが無くなり,代わりにByteArray.compress()とByteArray.uncompress()メソッドで引数を指定する形式になりました。引数にはCompressionAlgorithm.DEFLATEまたはCompressionAlgorithm.ZLIBを渡します。
  • TransferableDataクラスとClipboardManagerクラスが無くなり,代わりにClipboardクラスを使うことになりました。クリップボードの読み書きを行う際は,ClipboardManager.accessClipboard()ではなくClipboard.generalClipboardというシングルトンオブジェクトを使います。
  • DragManager.isDraggingはメソッドからプロパティに変更になりました。
  • Doorクラスが無くなり,LoaderInfoクラスのDoor関連APIの名前が変更されました。
    • LoaderInfo.parentDoor → LoaderInfo.parentSandboxBridge
    • LoaderInfo.childDoor → LoaderInfo.childSandboxBridge
  • ・File APIのメソッド名がいくつか変更されました。
    • File.listDirectories() → File.getDirectoryListing()
    • File.listDirectoriesAsync() → File.getDirectoryListingAsync()
    • File.listRootDirectories() → File.getRootDirectories()
    • File.relativize() → File.getRelativePath()
    • File.resolve() → File.resolvePath()
  • NativeWindowコンストラクタのvisibleパラメータが無くなりました。NativeWindowオブジェクトを生成してからvisibleプロパティを設定することになります。
  • NativeWindowCapabiltiesクラスが無くなり,各プロパティはNativeWindowクラスに移動しました。
    • NativeWindowCapabilities.hasWindowIcon → NativeWindow.supportsIcon
    • NativeWindowCapabilities.hasMenu → NativeWindow.supportsMenu
    • NativeWindowCapabilities.windowMinSize → NativeWindow.systemMinSize
    • NativeWindowCapabilities.windowMaxSize → NativeWindow.systemMaxSize
  • Stage.windowプロパティはStage.nativeWindowプロパティに変更されました。
  • System.pause(),System.resume(),System.gc()の各メソッドは,デバッグモードでのみ有効になりました。ADLでの動作確認中はデバッグモードになります(-nodebugオプションを指定しない場合)。
  • System.exit()メソッドはAIRでは使えなくなりました。代わりにShell.exit()メソッドを使います。
  • Beta 1までは相対URLはapp-resource:/ディレクトリを基準としていましたが,Beta 2からはSWF/HTMLコンテンツが基準となります。

結構大幅に変わってますね。

特に、File クラス周りとNativeWindow クラス周り。

デスクトップアプリケーションとして、これまでFlash でなかった辺りの仕様がまだ固まっていない感じなのかなぁ。

まあ、勉強の意味でサンプルアプリでも作ってみようかな。

アーカイブ