連載
» 2009年07月27日 00時00分 公開

Androidがもたらす組み込み開発の新たな可能性(1):Androidが組み込みで注目される3つの理由 (2/2)

[細川 勲 株式会社富士通ソフトウェアテクノロジーズ,@IT MONOist]
前のページへ 1|2       

Androidの基本構成と組み込みデバイス

 Androidの基本構成(図2)についての情報は、Webや専門書などで詳しく触れられているので、本稿では割愛するが、基本構成の中には組み込みデバイスとして必要な機能が多く含まれている。

 Android標準のアプリケーションであるホーム画面や連絡先などは非携帯電話での必要性は低い。


Androidのホーム画面 画像4 Androidのホーム画面

 しかし、アプリケーション・フレームワークから下の部分には、GUIを持つOSプラットフォームとして、携帯電話以外の組み込みデバイスでも利用可能な重要なモジュールが存在している。


Androidの基本構成 図2 Androidの基本構成
出典:富士通ソフトウェアテクノロジーズ

Androidの拡張

 Androidは、携帯電話向けのプラットフォームとして非常に多くの機能を有しているが、組み込みデバイスにおけるさまざまなカテゴリのデバイスに搭載するには不足している機能もある。

 ある意味、Androidはクライアントとしての機能は多く持っているが、サーバ機能はほとんど搭載されていない。Windows CEや組み込みLinuxは、HTTPサーバやFTPサーバなどのサーバ機能も搭載可能であり、それらがサービス・デーモンといった形で実行され、アプリケーションとの通信方法も確立されている。

 また、最近のデジタル家電デバイスによくあるホームネットワーク機能を実現する「DLNA」プロトコルなどもAndroidには実装されていない。

 これらは既存の資産として存在するが、多くはJava言語で記載されておらず、C/C++での実装が多い。また、「DalvikVM」(注)上では処理し切れないようなパフォーマンスを必要とする処理などについても、既存のLinux資産としては多く存在する。

※注:
小メモリ、低速CPU環境でも効率的に動作するバーチャルマシン。


 このようなAndroidの不足機能を追加するために「Java Native Interface(JNI)」によるネイティブコードとの連携が提供されている(図3)。

JINによるネイティブコード連携による独自機能の開発 図3 JINによるネイティブコード連携による独自機能の開発
出典:富士通ソフトウェアテクノロジーズ

 「Android 1.5 SDK」が発表される前は、独自でJNIの設計と実装を行う必要があったが、現在、「Android 1.5 NDK(Native Developer Kit)」が標準でネイティブコードとの連携をサポートしている。

 NDKには以下のような機能が提供されている。

  • C/C++で記述されたソースコードからAndroid用のネイティブコードライブラリを作成するためのツールキット群
  • ネイティブコードを含むアプリケーションを配布する方法
  • ネイティブのシステムヘッダ・ライブラリとドキュメントとサンプルコード(将来のAndroidでも互換性を保証するとのこと)

 NDKで今回提供されるライブラリについては、“ネイティブ”であるため、CPUアーキテクチャに依存する。また、今回のライブラリはARMv5TE(ARMv5 Thumb Enhance)の命令セットに依存している。

 NDKで提供されているライブラリは、以下のとおりだ。

  • 標準Cライブラリ(libc)
  • 標準数値演算ライブラリ(libm)
  • JNIインターフェイス
  • zLib圧縮ライブラリ(libz)
  • Kernelへのlogcatメッセージ送信ライブラリ(liblog)
参考URL:
Android 1.5 NDK, Release 1

 一般的な携帯電話では、このNDKによるネイティブコードの実装は、開発面、デバッグ面、ソースコードの互換性面でマイナスとなることがある。しかし、組み込みデバイス開発では、CPU以外の周辺デバイスへのアクセスやJavaでは処理し切れないパフォーマンスを必要とする処理が存在するため、重要なポイントといえる。



 Androidは、携帯電話のプラットフォームとして登場したが、Android自身が持つ機能や表現力によって、携帯電話以外の組み込みデバイスでも新しい可能性が見えてきた。カーナビゲーションデバイス、デジタルテレビ、セットトップボックス、デジタルフォトフレームなどのコンシューマ機器から、工場で利用されるパネルコンピュータなどのFA機器まで、さまざまなデバイスが新しいインターフェイスと開発スタイルを手に入れることができる。

 さて次回は、NDKを利用して実際にAndroidにネイティブコードを実装し、Androidを拡張する方法について具体的に触れていく。お楽しみに!(次回に続く)


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.