連載
» 2011年04月28日 16時26分 UPDATE

Embedded Android for Beginners(Android基礎講座):第10回 どうやってAndroidに移行するか (1/3)

限られたハードウェアリソースの中で動作する組み込みソフトウェアをAndroidに移行するためには、幾つかの押さえどころがあり、十分な考察と技術が必要になります。Linuxベースからの移行の他、Javaベースからの移行とRTOSベースからの移行方法を紹介します。

[金山二郎(イーフロー),EE Times Japan]

 Androidを搭載した携帯電話機やタブレット端末が大手メーカーから毎日のように発表されています。市場は活況を呈しており、Androidの将来性を確かに感じます。売れ筋だと年間500万台もの出荷台数になりますから、大手メーカーの力の入れようもうなずけます。

 一方、出荷数こそ少ないものの、一般の組み込み機器でも「Android化」が進んでいます。組み込み機器をAndroid化しようとすると、多くの場合は既存製品のバージョンアップという形を取ります。限られたハードウェアリソースの中で動作する組み込みソフトウェアをAndroidに移行するためには、幾つかの押さえどころがあり、十分な考察と技術が必要になります。今回は既存の組み込み機器をAndroid化する手法を扱います。

Androidに飛び移る前に考えること

 「いま流行のAndroidを使いたい」。多少、俗っぽい感じはありますが、組み込み機器を手掛けるベンダーのごく自然な発想です。Androidは、エンドユーザーだけでなく開発者や製造者にとっても魅力的な環境です。ただし、実際にAndroidを導入する前に、Androidを採用したときの利点と欠点をよく見定めておく必要があります。既存製品のAndroid化に限ったことではありませんが、この段階で見落としがあると挽回できない失敗につながります。

 そもそもなぜAndroidなのか。まず、すぐに思い付く利点を挙げてみましょう。

  • 流行っている
  • Googleが自ら切り回している
  • 組み込み機器向けである
  • Linuxベースである
  • 無料である

 エンドユーザーは、Android自体にも、Googleにも良いイメージを持っています。しかし、本連載でも繰り返し取り上げているように、この場合のエンドユーザーは携帯電話機やタブレット端末を購入して使うユーザーです。そして、ユーザーは常に最新のバージョンを求めます。携帯電話機やタブレット端末の場合は不特定多数のアプリケーション開発者が参加するため、互換性(Androidのバージョン)も重要です。

 しかし組み込み機器の多くは特定の用途を持ち、アプリケーション開発者の人数は限られています。限られた開発者の要件さえ満たせば良いため、最新バージョンも互換性も、必要不可欠ではないのです。仮にAndroidの旧バージョンを搭載していても、後ろ向きの情報としてそれを示すのではなく、Androidを採用したためにアプリケーションが良くなったことを製品の特長としてアピールすることが肝要です。

 Linuxが組み込み機器の分野で採用され始めて、もう10年以上経過しています。ネットワークに強く、無料でシェアも高いことから、インターネットラジオなど、ネットワークを利用するような比較的安価な組み込み機器ではごく当たり前に使用されています。

 Androidも同様に…、と説明できれば良かったのですが、残念ながらそうはいきません。AndroidはLinuxの他に膨大なネイティブライブラリや上位層としてこれまた膨大なJava APIから成り立っています。組み込み機器向けとは言うものの、Windows XPが動作するPC並の処理性能を持ったハードウェアが必要です。

 Linuxはアーキテクチャの異なる多様なCPUに対応していますが、Androidは全体としてはARMをベースに育ったシステムであり、処理性能が出にくい部分をARMのアセンブリ言語で記述するなど、CPU依存の高速化が図られています。つまり、ARM以外のCPUを採用すると、ソフトウェアそのものの動作が遅くなる他、GoogleによるAndroidのカスタマイズが適用できないという、性能に関する二重の問題が起きます。

 ソフトウェアが大規模化したため、ROMや主記憶にも相応の容量が求められるようになりました。Android 3.0を採用したLG Electronicsのタブレット「Optimus Pad」は、CPUがTegra2(1GHz動作のARMデュアルコア)、主記憶は1Gバイト、ROMは32Gバイトです。Optimus Pad自体の動作は実に快適ですが、PC上でSDKを利用すると、Android 2.3と比べてAndroid 3.0が格段に重くなっていることが実感できます。

 Androidが無料という表現には、ただし書きがあります。リファレンス実装は確かに無料ですが、ポーティングにも修正にもコストが発生します。さらに、ハードウェア要件がLinuxよりも上がりますから、部材の調達費用も上がります。つまり、単なる乗り換えではAndroidは高くつき過ぎるのです。

 なぜAndroidなのか、高くつき過ぎるかどうかは、以下のような利点と考え合わせて判断するべきです。

  • 堅牢なアプリケーション実行環境
  • 生産性の高い開発環境・携帯電話機を丸ごと実現できる広範囲の機能実装とAPI
  • Java/Linuxの豊富なソフトウェア資産を利用可能
  • Googleサービスとの親和性
  • 流行っているだけに、新しいソフトウェアやサービスがAndroidに集中するという期待

 これらの利点を製品にうまく取り込むことができれば、乗り換えにはプラスαの価値が付きます。費用と得られる価値とのトレードオフについて検討し、採用するにしても見送るにしても、正しい選択ができるように、特に最終的なコストの見積もりには念を入れましょう。

Linuxからの移行

 さて、後半では具体的な移行手順を幾つか紹介していきます。

 LinuxはAndroidのベースになっているOSですから、LinuxベースのシステムをAndroid化することは、他の組み込みOSから移行する場合と比べれば容易です。例えば、ネイティブライブラリなどはそのままか、あるいは軽微な修正で移行できるでしょう。図1図2を見比べてみましょう。AndroidではアプリケーションをJavaで記述し、Linuxでは、C/C++で記述します。Linuxには標準のウィンドウシステムが存在しません。Linuxベースの開発の場合、まずどのウィンドウシステムを使うかを決めます。最近ではQtがよく使われています。

ALT 図1 Androidベースのソフトウェア構成 ネイティブアプリケーションを導入することもできるが、基本的にはJavaアプリケーションを開発する。
ALT 図2 Linuxベースのソフトウェア構成 Android APIがないため、図1と比較するとミドルウェア層が薄い。ウィンドウシステムとしてQtを使うことが多い。
       1|2|3 次のページへ

Copyright© 2014 ITmedia, Inc. All Rights Reserved.

All material on this site Copyright © 2005 - 2014 ITmedia Inc. All rights reserved.
This site contains articles under license from UBM Electronics, a division of United Business Media LLC.