ネイティブ拡張について

Adobe AIR とは

Adobe® AIR® は、コンテンツ開発者がリッチインターネットアプリケーション(RIA)を構築できる、クロスオペレーティングシステムのランタイムです。開発者はデスクトップ、モバイルデバイスおよびデジタルホームデバイスに RIA をデプロイできます。AIR アプリケーションは Adobe® Flex® および Adobe® Flash®(SWF ベース)を使用して構築でき、HTML、JavaScript および Ajax(HTML ベース)でも構築できます。AIR アプリケーションの構築に使用できる Adobe Flash Platform ツールについて詳しくは、『 Adobe AIR アプリケーションの構築 』の「 AIR 開発用の Adobe Flash Platform ツール 」を参照してください。

Adobe ActionScript とは

SWF ベースの AIR アプリケーションは Adobe ActionScript® 3.0 を使用できます。ActionScript 3.0 は、RIA にインタラクティブ性とデータハンドリングを追加できるオブジェクト指向言語です。この言語について詳しくは、『 ActionScript 3.0 の学習 』および『 ActionScript 3.0 開発ガイド を参照してください。

ActionScript では多くのビルトインクラスが用意されています。例えば、MovieClip、Array、NetConnection はビルトインの ActionScript クラスです。さらに、コンテンツ開発者はアプリケーション固有のクラスを作成できます。アプリケーション固有のクラスはビルトインクラスの派生クラスとなる場合もあります。

ランタイムは ActionScript クラスのコードを実行します。また、ランタイムは HTML ベースのアプリケーションで使用される JavaScript コードも実行します。

ネイティブ拡張とは

ネイティブ拡張とは、次の 2 つを組み合わせたものです。

  • ActionScript クラス

  • ネイティブコードネイティブコードは、ここではランタイムの外部で実行するコードとして定義されます。例えば、C で記述されたコードはネイティブコードです。一部のプラットフォームでは、Java コードによる拡張もサポートされています。このドキュメントでは、Java コードも「ネイティブ」コードと見なされます。

ネイティブ拡張を記述する理由としては、以下があります。

  • ネイティブコード実装を使用すると、デバイス固有の機能にアクセスできます。これらのデバイス固有の機能はビルトイン ActionScript クラスでは利用できません。また、アプリケーション固有の ActionScript クラスで実装することもできません。ネイティブコード実装では、デバイス固有のハードウェアおよびソフトウェアにアクセスできるので、このような機能を提供できます。

  • ネイティブコード実装は ActionScript のみを使用する実装よりも速い場合があります。

  • ネイティブコード実装によって既存コードを再利用できます。

例えば、アプリケーションで次のことを実行するネイティブ拡張を作成できます。

  • モバイルデバイスの振動

  • デバイス固有のライブラリおよび機能の操作

ActionScript およびネイティブの実装を完了したら、拡張をパッケージ化します。次に、AIR アプリケーション開発者はこのパッケージを使用して、拡張の ActionScript API を呼び出し、デバイス固有の機能を実行することができます。拡張は、AIR アプリケーションと同じプロセスで実行されます。

ネイティブ拡張と NativeProcess ActionScript クラスの比較

ActionScript 3.0 では、NativeProcess クラスが提供されます。このクラスを使用すると、AIR アプリケーションで、ホストオペレーティングシステム上でネイティブプロセスを実行できます。この機能はネイティブ拡張と類似しており、デバイス固有の機能およびライブラリにアクセスできます。NativeProcess クラスを使用するかネイティブ拡張を作成するかを判断する際には、次の点を考慮してください。

  • NativeProcess クラスをサポートするのは extendedDesktop AIR プロファイルのみです。したがって、AIR プロファイル mobileDevice および extendedMobileDevice を使用しているアプリケーションの場合は、ネイティブ拡張が唯一の選択肢です。

  • ネイティブ拡張の開発者は、多くの場合、様々なプラットフォーム用のネイティブ実装を提供しますが、ネイティブ拡張の開発に伴って提供される ActionScript API は、通常、どのプラットフォームでも同じになります。NativeProcess クラスを使用する場合、ネイティブプロセスを開始するための ActionScript コードは、プラットフォームによって異なることがあります。

  • NativeProcess クラスは別プロセスを開始します。一方、ネイティブ拡張は AIR アプリケーションと同じプロセスで実行されます。そのため、コードの失敗が懸念される場合は、NativeProcess クラスを使用する方が安全です。ただし、別プロセスになると、通常はプロセス間通信処理を実装することになります。

ネイティブ拡張と ActionScript クラスライブラリ(SWC ファイル)の比較

ネイティブ拡張と SWC ファイルの最大の違いは、SWC ファイルにはネイティブコードが含まれていないことです。そのため、ネイティブコードを使用しなくても目的を達成できると判断した場合は、ネイティブ拡張ではなく SWC ファイルを使用してください。

サポートされているデバイス

次のデバイス向けのネイティブ拡張を作成できます。

  • Android デバイス(AIR 3 および Android 2.2 以降)

  • iOS デバイス(AIR 3 および iOS 4.0 以降)

  • iOS シミュレーター(AIR 3.3 以降)

  • Blackberry PlayBook(AIR 2.7 以降)

  • AIR 3.0 をサポートする Windows デスクトップデバイス

  • AIR 3.0 をサポートする Mac OS X デスクトップデバイス

拡張は複数のプラットフォームをターゲットにできます。詳しくは、 複数プラットフォームのターゲット を参照してください。

サポートされているデバイスプロファイル

ネイティブ拡張は以下の AIR プロファイルでサポートされています。

  • extendedDesktop (AIR 3.0 以降)

  • mobileDevice (AIR 3.0 以降)