FlexベースのAIRプログラミングの知識が必要です。ただし、FlashおよびAjaxベースのAIR開発者も十分理解できる内容です。
初級
Adobe AIR2 SDK
Adobe Flash Builder4
重要: このサンプルアプリケーションは、AIR 2 betaの機能を体験するために作成されています。お試しになる場合は、AIR 2 beta ランタイムを先にインストールする必要があります。なお、既にAIR 1.xのランタイムがOSにインストールされている場合は、上書きされてしまいますのでご注意ください。元に戻す場合は、AIR 2 beta ランタイムをアンインストールし、AIR 1.5.2 ランタイムをインストールします。詳細はリリースノート(英語) をご覧ください。
アプリケーションのダウンロード(.air) beta 2対応
ソースコードのダウンロード beta 2対応
AIR 2.0で追加されるAPIにより、これまでよりも一層拡張性があるアプリケーションの作成ができます。
その能力を活用してAIRアプリケーションどうしでデータの送受信やチャットを可能にするコミュニケーションアプリがairPortです。
今回は、このairPortをサンプルとして新しいAIR APIの使用方法をご紹介します。
対象とする読者は次のような方です。
AIR2.0で拡張された次のAPI の使用手順と方法
今回作成した、AIRの新しいAPIを活用するコミュニケーションアプリ「airPort」の概要ご紹介します。
airPortユーザどうしでファイルの送受信やリアルタイムのチャットなどを行う機能を提供します。
Adobe AIR SDK2.0 Beta1
Adobe Flash Builder 4 Beta2
Adobe Illustrator CS4
Adobe Flash Catalyst Beta2
airPortのコアはネットワークAPIによるデータ転送で提供されます。その基本機能を実現するAPIをサンプルを交えてご紹介します。
flash.net.NetworkInfoクラスとflash.net.NetworkInterface クラスにより、ネットワークインタフェースの情報を取得できます。
OS上のネットワークインタフェースについて以下の情報を取得できます。
次の手順により、ネットワーク情報を取得できます。
flash.net.NetworkInfo クラス
システムのネットワークインタフェース情報を取得するためのメソッドを提供します。
findInterfaces()メソッドは NetworkInterfaceオブジェクトが格納されたベクターオブジェクトを返します。ベクターに格納された各NetworkInterfaceオブジェクトが1つのネットワークインタフェース情報を提供します。
flash.net.NetworkInterface クラス
ネットワークインタフェース個別の情報を格納するオブジェクトとして次のプロパティを提供します。
| 情報 | プロパティ名 | 例 |
| アクティブ | active | true |
| アドレスのリスト | addresses | |
| 表示名 | sidplayName | |
| MACアドレス | hardwareAddress | 00-22-15-68-BC-61 |
| MTUサイズ | mtu | 1500 |
| インタフェース名称 | name | {A7BDF3D2-6A85-11DB-B5AE-806E6F6E6963} |
| デフォルト | networkInterfaceDefault | false |
flash.net.interfaceAddressクラス
NetworkInterface.addressesプロパティで参照できるflash.net.interfaceAddressオブジェクトでインタフェースが持つアドレスを調べることができます。オブジェクトはVectorに格納されます。
次のコードを実行すると、実行環境のネットワークインタフェース情報がすべて出力されます。
networkInfo = NetworkInfo.networkInfo;
trace( "The network interfaces Information:" );
var interfaces:Vector.<NetworkInterface> = networkInfo.findInterfaces();
for each(var networkInterface:NetworkInterface in interfaces)
{
trace( "Active:" + networkInterface.active );
trace( "Display Name:" + networkInterface.displayName );
trace( "Hardware Address:" + networkInterface.hardwareAddress );
trace( "MTU:" + networkInterface.mtu );
trace( "Name:" + networkInterface.name );
var addresses:Vector.<InterfaceAddress> = networkInterface.addresses;
for each(var interfaceAddress:InterfaceAddress in addresses)
{
trace( " Address:" + interfaceAddress.address );
trace( " Broadcast:" + interfaceAddress.broadcast );
trace( " Prefix Length:" + interfaceAddress.prefixLength );
}
}
flash.net.Socket やflash.net.DatagramSocket クラスにより、TCP/IPによるデータ送受信がおこなえます。airPortでは、効率の良いテキストデータ転送のためにDatagramSocketを使用しています。ここではDatagramSocketの使用方法についてご紹介します。
次の手順により、DatagramSocketによるデータ送受信を行うことができます。
flash.net.DatagramSocket クラス
Universal Datagram Protocol (UDP) によるパケットの送受信を可能にします。UDPはTCPに比べて信頼性は保証されませんが、スピードが要求されるデータ転送に使用されます。たとえばDomain Name Systemサーバへの参照にはUDPが使用されます。
次のサンプルコードでは、init()ファンクションでソケットのバインドを行い、受信用リスナーの登録も行います。writeStr()ファンクションでデータを送信できます。
private var socket:DatagramSocket;
public function init( port:int, address:String ):void {
socket.addEventListener(DatagramSocketDataEvent.DATA, socketDataHandler);
try {
socket.bind( port, address );
socket.receive();
} catch ( event:ArgumentError ) {
trace("ArgumentError: " + event);
} catch ( event:SecurityError ) {
trace("SecurityError: " + event);
} catch ( event:IOError ) {
trace("IOError: " + event);
} catch ( event:RangeError ) {
trace("RangeError: " + event);
}
}
public function socketDataHandler(event:DatagramSocketDataEvent):void {
var data:String = event.data.readUTFBytes(event.data.bytesAvailable);
trace( data );
}
private function writeStr( port:int, address:String ):void {
var str:String = "Hello AIR2.0¥n";
try {
var ba:ByteArray = new ByteArray();
ba.writeMultiByte( str, "UTF-8");
socket.send( ba, 0, 0, address, port );
}
catch(event:IOError) {
trace("IOError:" + event);
}
}
OSで関連付けられているファイルタイプに従い、デフォルトのアプリケーションを起動してファイルを開くことができます。たとえば、「.txt」という拡張子がメモ帳と関連付けされている場合、ファイルへの参照を持つFileオブジェクトでメソッドを実行すると、メモ帳を起動してそのファイルを開くことができます。
airPortアプリケーションの画面イメージに ⑥ 受信したファイルのリスト表示 がありますが、ユーザはこのリストからファイルを選択して、ボタンを押すことにより、デフォルトのアプリケーションでそのファイルを開くことができます。
次の手順により、デフォルトアプリケーションでファイルをオープンできます。
flash.net.File クラス
AIR1.0より提供されるFileクラスは、ローカルファイルに関するあらゆる処理を可能にしますが、今回追加されたopenWithDefaultApplication() メソッドにより、アプリケーションから直接ファイルを開くことが可能になりました。
次のサンプルコードでは、C: ドライブにある myText.txtファイルをデフォルトのアプリケーションで開きます。Windowsのデフォルトでは、メモ帳が開きます。ファイルが存在しない場合や.txt に関連付けがされていない場合などでアプリケーションを開けない場合、IOErrorが発生します。
try {
var f:File = new File( "C:¥¥myText.txt" );
f.openWithDefaultApplication();
} catch( error:IOError ) {
trace(" IOError:" + error.message );
} catch( error:IllegalOperationError ) {
trace(" IllegalOperationError:" + error.message );
} catch( error:ReferenceError ) {
trace(" ReferenceError:" + error.message );
} catch (error:Error) {
trace(" Error:", error.message);
}
今回はAIR 2.0 で追加された新APIの一部をご紹介しましたが、これら以外にもアプリケーションの可能性を格段に広げるAPIが提供されています。ネットワークインフラの定着により、クラウドのような形態が示唆されていますが、どのような状況になっても主役は利用者であるクライアントです。OSやブラウザの制限を受けることがないAIRはWeb環境のデスクトップアプリケーションインフラとして最適な選択肢であることは間違いありません。その可能性を示す例としてairPortを作成しました。airPortはAIR APIの可能性を示すアプリケーションとして、LCDS3への対応など、今後も機能拡張を続けてゆきます。
Tutorials and samples |
AIR blogs |
More |
AIR Cookbooks |
More |
| 01/20/2012 | Skinnable Transform Tool |
|---|---|
| 01/18/2012 | Recording webcam video & audio in a flv file on local drive |
| 12/12/2011 | Date calculations using 'out-of-the-box' functions |
| 11/29/2011 | Button compatibility with NativeComboBox |