■ 内蔵コンピュータがそのまま実行できるプログラム
|
M1000向けネイティブアプリケーションの開発が可能となった
|
ネイティブアプリケーションとは、実行するコンピュータのCPU、ソフトウェアプラットフォーム、API向けに特化したアプリケーションです。ネイティブなコード、つまり携帯電話やコンピュータが読み込むと、内蔵しているプロセッサ(コンピュータのプログラムを処理する部分、演算装置)がそのまま実行できる形でメモリ中に置かれ、実行されます。
現在まで、携帯電話用のアプリケーションにはネイティブなものと、Javaなど非ネイティブなものがありましたが、メーカーや携帯電話事業者が関わる形でなければネイティブアプリケーションは作ることができず、ユーザーが開発できるアプリケーションは、iアプリのような非ネイティブなものだけでした。
しかし、7月に発売されたNTTドコモのビジネスFOMA端末「M1000」では、このネイティブアプリケーションをユーザーが作って、実行できるようになりました。作ったアプリをインターネットなどで配布することも自由です。
M1000の場合、携帯電話の製造者であるモトローラから、M1000向けのアプリケーションを作るための資料(英語です)が公開され、また、ドコモからもネイティブアプリの作成方法とサンプルプログラムが含まれる「FOMA M1000アプリケーション開発技術資料およびサンプルプログラム」が提供され、Webサイトから無料で入手できるようになっています。
M1000用のネイティブアプリケーションは、UIQから配布されている「UIQ 2.0 SDK」と、モトローラから配布されている「FOMA M1000 SDK」を利用することで開発できるようになります。
■ コンピュータの性能をフルに使うことができる
ネイティブアプリケーションの特徴は、プロセッサやハードウェアの持つ性能をフルに発揮でき、また非常に柔軟にプログラムを行なえることです。非ネイティブアプリケーションよりも非常に高速なプログラムや、ハードウェアを駆使したプログラムが実現可能で、非ネイティブなアプリケーションの数倍から数百倍のパフォーマンスをたたき出すプログラムが現われることも珍しくありません。
非ネイティブな携帯電話やコンピュータのプログラムは、メモリ中にあるプログラムのデータがプロセッサに読み取られて実行されますが、コンピュータは全てのプログラムをそのまま読んで実行できるわけではありません。
たとえば、携帯電話では、iアプリをはじめとするJavaアプリケーションに対応した機種が多くありますが、これらの機種のコンピュータは、“Java仮想環境”を実現するためのプログラムを実行しており、Javaアプリケーションは仮想環境中に作られたJava仮想計算機によって実行される、というようにワンクッションを経て動作しているのです。
ネイティブアプリケーションと、非ネイティブアプリケーションの特徴の違いは、この「ワンクッションがあるかないか」の差によるものです。
M1000用のネイティブアプリの場合には、内蔵されているプロセッサの持つプログラムの実行スピードを100%活かすことができますし、あるいはビデオメモリ(ディスプレイに表示される内容を蓄えているメモリ)に直接データを書き込むことも可能です。
|
ネイティブアプリケーションは、ネイティブコード、つまり、メモリに読み込めばそのままプロセッサが実行可能なコードで書かれている。プロセッサのパワーを活かしたソフトを作ることが可能だ
|
たとえば、3Dゲームで、物体を画面に描画する場合を考えてみましょう。アプリケーションプログラム内部では、画面に表示したい物体の位置が画面上のどこになるかを計算し、物体が表示される部分を、物体の画像で塗りつぶすという作業が必要になります。
非ネイティブなJava環境では、プログラムに書かれた情報は仮想計算機に読める形で書かれているので、それを携帯電話内蔵のプロセッサが読める形に一度直してプロセッサに計算させなくてはなりません。ネイティブプログラムでは、プロセッサが直接プログラムを読み取って計算しますので、その分、早く計算が完了します。
さらに、ネイティブプログラムでは、メモリ内の画像をビデオメモリへダイレクトに転送可能です。しかも、ゲームの場合、画像をビデオメモリに書き込む作業はある程度手順が決まっているので、その手順に最適化した転送アルゴリズムを利用することも可能です。
非ネイティブなプログラムでは、ビデオメモリに直接アクセスはできませんから、汎用の転送ルーチンを使用せざるを得ません。一般的に、汎用ルーチンは、どんな転送の仕方にも応えられる代わりに、スピードは最適化されたものより遅くなります。
M1000の場合、Javaで書かれたMIDletアプリのほかに、互換性のあるUIQ向けネイティブアプリケーションが実行できます。
ゲームなどのアプリケーションでは、非常に多くのネイティブアプリケーションが配布、販売されています。ゲームでは、ユーザーの反応にできるだけ早く反応し、スムーズに対応することが必要であり、そのためにはネイティブアプリケーションのほうが有利だからです。
■ 互換性と堅牢性という弱点も
ただし、ネイティブアプリケーションにはいくつか弱点があります。
まず、互換性の問題があります。ネイティブアプリケーションは、コンピュータの持っているプロセッサ、OS、ハードウェアなどの環境に依存したプログラミングが行なわれるために、異なる部分があると動かすことができません。
たとえば、ARM互換プロセッサ用のプログラムであれば、パソコンなどで使われているインテルのx86互換CPUなどでは当然動きません。
たとえばソニーエリクソンのGSM端末であるP800などや、モトローラのGSM端末であるA925などで実行できるネイティブアプリケーションは、M1000と共通部分のみを利用していれば動作するのですが、M1000にはない仕組みを利用しているネイティブアプリケーションは動きません。
また堅牢性の問題もあります。ネイティブアプリケーションでは、Java仮想環境と違って、万一プログラムに間違いがあっても、基本的にプロセッサと、OSの保護しか受けることができません。Javaであれば「強制的に携帯電話を再起動する」といったことはできませんが、ネイティブアプリケーションでは、パニックを起こして再起動、というようなプログラミングのミスは、割に簡単に起こすことができてしまいます。そのようなことがないように、M1000の開発環境では、パソコン上で携帯電話の動きを模倣するエミュレーターが添付されており、開発時にはこちらを使うことが推奨されています。
■ URL
作ろうM1000アプリ(NTTドコモ)
http://www.mopera.net/b-foma/PC/application/m1000.html
■ 関連記事
・ ドコモ、M1000向けアドインアプリの開発資料を公開
(大和 哲)
2005/08/03 12:23
|