Androidのシステムアーキテクチャ 〜全体像を理解するために〜Android技術者認定試験「ACE」ドリル(1)(2/2 ページ)

» 2011年05月20日 00時00分 公開
[奥 崇(elan),@IT MONOist]
前のページへ 1|2       

解答

演習1:答え(2)

 この問題は、Androidのシステムアーキテクチャ概要の問題です。この問題で利用した図1は、非常に重要なものでありACEにも頻出しますし、そもそもAndroidエンジニアとしても必ず知っておくべき内容の1つです。

 Androidのシステムアーキテクチャのうち、まずは一番ハードウェア寄りの所から見ていきましょう。

 空欄(a)に当たる部分ですが、これは「Linuxカーネル」となります。Androidのカーネル層は独自のカーネルというわけではなく、Linuxを採用しています。また、バージョンはLinuxの“2.6”をベースとしております。細かくいいますと、Linuxカーネルを携帯端末用にメモリや電源周りを主とした修正を行っていますが、ACE対策としてはそこまで覚える必要はないでしょう。

 次に空欄(b)に当たる部分です。これは「ライブラリ」となります。機能ごとにまとめられた汎用性の高いプログラム群が、ライブラリだという理解で結構です。具体的には、HTMLレンダリングエンジンの「WebKit」や組み込み型データベースエンジンの「SQLite」などが挙げられます。C言語やC++言語で作られており、アプリケーションを作る上で必須となる各機能を提供していますが、アプリケーションフレームワーク経由で利用するため、アプリケーションエンジニアが直接的にライブラリの操作をする必要は基本的にはありません。まずは、“Linuxカーネルの上にはライブラリがあり、各種の機能を提供している”ということを覚えましょう。

 空欄(c)には「Androidランタイム」が入ります。Androidランタイムは仮想マシンである「Dalvik VM」と、基本的なAPIを提供する「コアライブラリ」で構成されています。Dalvik VMは、Androidのために新たに作られた“仮想マシン”となります。基本的には、Java VMと同様であるという理解で結構ですが、正確には動作するバイトコードがJavaバイトコードではなく、またJava互換性テストも通過していませんのでJavaを名乗ることはできません。ただ、まずは“Dalvik VMは携帯端末用にチューンされたJava VM”だと理解しておけばよいでしょう。また、今回は主題からそれるので詳細は触れませんが、Javaのライセンスを持つOracle社はJavaの特許侵害でGoogle社を提訴していることも、Androidエンジニアとしてはアンテナを張っておくべき事柄でしょう。

 空欄(d)には「アプリケーションフレームワーク」が入ります。アプリケーションフレームワークは、Javaで構築されたアプリケーション用のフレームワークとなります。私たち、アプリケーションを作る者は、このアプリケーションフレームワークの理解をすればよいということになります。Androidのアプリケーションを作るには、まずはこのフレームワークの機能を理解する必要があります。なお、空欄(a)から空欄(d)までが、Androidとして提供されているものとなります。最下層のカーネル層からアプリケーション用のフレームワークまで、完全にフルスタックで用意したOSS(オープン ソース ソフトウェア)は、かつて存在しませんでした。ここまでできる企業は、世界広しといえどもGoogle社しかないでしょう。

 最後の空欄(e)は用語の問題になりますが、「アプリケーション」となります。私たちが作るのはこの部分(アプリケーション)となります。

演習1(解答):フレームワーク構成 図2 演習1(解答):フレームワーク構成

 Androidのシステムアーキテクチャの図は、Androidエンジニアなら何も見ないで書けるくらいになるべきですね。これを機会にぜひ覚えてしまいましょう!

演習2:答え(4)

 この問題は、Androidのアプリケーションの常識的問題です。実際にACEに出題されるレベルよりはやさしい問題だと思いますが、これを知っていなければ始まらないので、取り上げました。

 Androidのアプリケーションを開発する際には、「Java言語」を用います。先述の通り、Javaを名乗ることはできないのですが、私たちAndroidエンジニアは、まずはベーシックとしては“AndroidのアプリケーションはJava SEで開発できる”と理解しておけば十分です。なので、もし皆さんのようにAndroidのアプリケーション開発のモチベーションがある方で、Java SEを学ばれたことがない方は、まずはJava SEの学習をしましょう。ACEもJava SEが一通り理解しているという前提で、問題が作成されています。

演習3:答え(1)

 Androidのライセンス形態を問う問題です。昨今はさまざまなOSSを利用する機会が多いこともあり、たとえ技術者といえども、OSSの主要ライセンスとその特徴を知っておかなければなりません。気付かないうちにライセンスに抵触していた場合は自分ばかりか、お客さまや自社に多大な損害を及ぼす可能性も大いにあります。ACEテスト対策としてもそうですが、一技術者なら必ず覚えておきましょう。

 さて、Androidのライセンスですが、ほとんどが「Apache License 2.0」で管理されています。例外としては、LinuxカーネルはGPL、ライブラリでは一部LGPLやBSDライセンスのものが存在します。では、なぜAndroidではApache License 2.0を主要なライセンスとして利用しているのでしょうか。その理由は、Apache License 2.0はそのソースコードを改変した際も、公開する義務が一切ありません。そのため、業務用で非常に使いやすいライセンス形態となります。一方、GPLは改変時に公開義務が発生します(表2)。そのため、業務で工数を掛けて改変しても、その成果は全て公開する必要が出てくるため、業務利用は二の足を踏みやすいライセンス形態です(もちろん、その場合は違う方法でビジネスをする方法があるのですが、それは本筋と離れますので割愛します)。ただし、Apache License 2.0だから自由に使ってもいいのかといえば、そういうわけでもありません。OSSには「誰がそのコードの品質を担保するか」などの問題が常に付きまといます。社内やお客さまと十分にコンセンサスが取れた上で、利用するようにしましょう。

ライセンス 改変時の公開義務
Apache License 2.0 なし
GPL あり
表2 改変時の公開義務:Apache License 2.0とGPL



 いかがでしたでしょうか。先にも書いていますが、現状ではAndroidエンジニアは業界で枯渇している状況です。ここまで、ある特定の分野でエンジニアが枯渇することは、類を見ないといってもよいくらいの状況です。これは逆にいえば、皆さんのチャンスです。ぜひとも皆さんもAndroidを学び、ACE合格を果たしてご自身の市場価値を今まで以上に高めましょう!

 次回は、「ユーザーインタフェース」を取り上げたいと思います。ご期待ください! (次回に続く)

ACEアプリベーシック試験対応イーラーニング(サンプルIDプレゼント中)



前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.