Androidの組み込み用途プログラミングと、開発環境

HT-03Aの存在を始めて知った時から、むしろ使う事よりAndroinのプログラミングについても
興味を持ち始めてはいたのですが、ようやっと、少しずつ調べているところです。


実際にHT-03Aを使ってみて、ツールやプログラムの構造を見ていると、ハードウェアのアクセスについて
既存のOSに比べ、かなり効率が良かったり、OS上での共用についても良く出来ているとは思っていたのですが、
やはり、組み込み用途での業界の動きが活発な事から、その考えは間違って無かった事は確かなようです。


昨日、たまたま書店で、今月号のInterfaceを見掛けたところ、組み込み用Androidの開発環境について
特集が組まれていたので、面白そうだったので、買おうかなと思ったものの、
後半の具体的な開発例が、専用のボードコンピューター上での話だったので、購入には至りませんでしたけど。


プログラムの内容に比較して、それ以前にプログラミングをした事のある、
シングルタスクのOSや、テキストベース環境のBASIC言語や、アセンブラ、80系マイコン等と比べて
プログラムしたいアプリそのものの内容と比べ、あまりにも手間の掛かるWindows上での開発や、
C言語上の一部の存在意義が理解出来ない概念については正直、生理的に受け付けないんですけど、
(それでも以前無理して多少はやりましたが・・・)
むしろ、組み込みマイコンでのハードウェアの制御や、アセンブラの方が楽なぐらいですけど、
それとJavaについても、概念としては現在主流となっている開発環境としては一番好きだったことも、
始めようと思ったきっかけな訳です。


で、取り敢えず、SDKキットと、NDKをダウンロードしてきました。
意外とサイズは小さいですね。NDKという言葉は始めて聞きましたが、NDKとは、Native Development Kit
の略だそうで、互換性と引き換えに、高速なプログラミング、
C、C++でのCPU依存(例えばARM5とか)のネイティブプログラミングが出来る環境のようです。
C言語がネイティブコードというのは、ちょっとまだ私には違和感がある言い回しなのですが、
昨今、この分野はRISCプロセッサが基本ですから、昨今はアセンブラ=C言語的な意味合いで使われてるので、
今風な表現なのかもしれません。
自分がRISCプロセッサ興味持った頃は、まだC言語等のコンパイラも発展途上で、実用になるレベルの
効率的なプログラムを書くとなると、アセンブラインラインアセンブラ)で、命令の並びを考えたり
そういった事をする必要があるというのが、通常の話の流れでしたが、最近はC言語、C++だけでも
勝手に並び替えやってくれたり、最適化したアセンブラと同等な速度のプログラミングが
出来るという事なんでしょうか?だとすれば、嬉しいんですけどね。
それとも、単に十分速くなったCPUパワーの力技だったりして(笑)
まぁ、とりあえずそんな内容のものだそうなので、取り敢えずSDKだけで進めてみようかと思います。


Java環境自体は、JavaSEというかJDKそのもののようです。それをAndroid用ライブラリにリンクする感じかな、
JDKについては、資料も沢山出揃っているので、困る事は無いでしょう。
そもそも、Java自体、仮想環境上のものなので、そうでないと変なんでしょうが(笑)
考えというか、プログラムのコードの書き方の手順はXwindowに近いというか、そのもの?
なんか、そんな感じもします。それで十分だと思うんですけどね。
繰り返すようですが、とかくWindows関係は余計な手間が掛かりすぎです。


上記でも書いたように、Windows XPなりWindows Mobile環境上では、もっぱらシリアルポート経由で、
直接アクセスして、1つのアプリ上で使うと他のソフトからは利用できないGPSや、各種センサ、
無線LANそのものの制御なんかも、Androidだと、複数のアプリから利用出来ているのですから、
そこらへんのAPIの用意も、Windowsの開発環境から比べると、格段に期待が出来そうです。


あとはセオリー通り、自分の書きたい用途に近い既存アプリの、公開されてるソースコードでも
眺めてみるところから入ってみようかと思います。