Androidの基本構成(図2)についての情報は、Webや専門書などで詳しく触れられているので、本稿では割愛するが、基本構成の中には組み込みデバイスとして必要な機能が多く含まれている。
Android標準のアプリケーションであるホーム画面や連絡先などは非携帯電話での必要性は低い。
しかし、アプリケーション・フレームワークから下の部分には、GUIを持つOSプラットフォームとして、携帯電話以外の組み込みデバイスでも利用可能な重要なモジュールが存在している。
Androidは、携帯電話向けのプラットフォームとして非常に多くの機能を有しているが、組み込みデバイスにおけるさまざまなカテゴリのデバイスに搭載するには不足している機能もある。
ある意味、Androidはクライアントとしての機能は多く持っているが、サーバ機能はほとんど搭載されていない。Windows CEや組み込みLinuxは、HTTPサーバやFTPサーバなどのサーバ機能も搭載可能であり、それらがサービス・デーモンといった形で実行され、アプリケーションとの通信方法も確立されている。
また、最近のデジタル家電デバイスによくあるホームネットワーク機能を実現する「DLNA」プロトコルなどもAndroidには実装されていない。
これらは既存の資産として存在するが、多くはJava言語で記載されておらず、C/C++での実装が多い。また、「DalvikVM」(注)上では処理し切れないようなパフォーマンスを必要とする処理などについても、既存のLinux資産としては多く存在する。
このようなAndroidの不足機能を追加するために「Java Native Interface(JNI)」によるネイティブコードとの連携が提供されている(図3)。
「Android 1.5 SDK」が発表される前は、独自でJNIの設計と実装を行う必要があったが、現在、「Android 1.5 NDK(Native Developer Kit)」が標準でネイティブコードとの連携をサポートしている。
NDKには以下のような機能が提供されている。
NDKで今回提供されるライブラリについては、“ネイティブ”であるため、CPUアーキテクチャに依存する。また、今回のライブラリはARMv5TE(ARMv5 Thumb Enhance)の命令セットに依存している。
NDKで提供されているライブラリは、以下のとおりだ。
参考URL: | |
---|---|
⇒ | Android 1.5 NDK, Release 1 |
一般的な携帯電話では、このNDKによるネイティブコードの実装は、開発面、デバッグ面、ソースコードの互換性面でマイナスとなることがある。しかし、組み込みデバイス開発では、CPU以外の周辺デバイスへのアクセスやJavaでは処理し切れないパフォーマンスを必要とする処理が存在するため、重要なポイントといえる。
Androidは、携帯電話のプラットフォームとして登場したが、Android自身が持つ機能や表現力によって、携帯電話以外の組み込みデバイスでも新しい可能性が見えてきた。カーナビゲーションデバイス、デジタルテレビ、セットトップボックス、デジタルフォトフレームなどのコンシューマ機器から、工場で利用されるパネルコンピュータなどのFA機器まで、さまざまなデバイスが新しいインターフェイスと開発スタイルを手に入れることができる。
さて次回は、NDKを利用して実際にAndroidにネイティブコードを実装し、Androidを拡張する方法について具体的に触れていく。お楽しみに!(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.