Androidの導入
1
導入
Androidの概要とアーキテクチュア
この章ではAndroidという名のモバイルデバイス向けソフトウェアプラットフォームの概要について解説していきます。
Android 概要
Androidはモバイルデバイス向けのソフトウェアプラットフォームで、オープンソースかつ無償です。アプリケーション開発キットであるAndroid SDK、モバイルデバイスを動作させるLinuxベースのモバイル用オープンソースOSとミドルウェア、開発作業を円滑に行うツール類で構成されています。

日本とアメリカのモバイルデバイス向けのOSのシェアでは、2012年の段階でiOSやBlackBerryを抑え1位でした。これはOSにAndroidを搭載している機種が多数存在しているからとも言えます。
Android SDK
Android SDK(Software Development Kit.)は、様々な対象に対応するアプリケーションを作成するための開発ツールのセットです。Android SDKにはAndroidプラットフォーム上で動作するアプリケーションを開発するためのライブラリ、エミュレータ(PC上で動作する仮想のAndroid)、サンプルソースやデバッガなどの開発ツールが含まれています。
Androidの開発ライブラリはJavaのライブラリとして提供されており、このライブラリを使用することで、開発者はJavaでAndroidアプリケーションを開発することができます。また、Android SDKはwindows,Linux,Macといった主要3種類のOS上で動作します。
このSDKのバージョンアップは頻繁に行われていますが、新しいバージョンは必ず古いバージョンとの互換性をもっています。そのため、古いバージョン特有の機能を使用しない場合、古いバージョンに合わせて作成した方が幅広く対応できるといっても過言ではないでしょう。
| OS | APIレベル | コードネーム |
|---|---|---|
| Android 1.0 | 1 | 非公開 |
| Android 1.1 | 2 | |
| Android 1.5 | 3 | Cupcake |
| Android 1.6 | 4 | Donut |
| Android 2.0 | 5 | Eclair |
| Android 2.0.1 | 6 | |
| Android 2.1 | 7 | |
| Android 2.2 | 8 | Froyo |
| Android 2.3 | 9 | Gingerbread |
| Android 2.3.3 | 10 | |
| Android 3.0 | 11 | Honeycomb |
| Android 3.1 | 12 | |
| Android 3.2 | 13 | |
| Android 4.0 | 14 | IceCreamSandwich |
| Android 4.0.3 | 15 | |
| Android 4.1 | 16 | Jelly Bean |
| Android 4.2 | 17 |
Android アーキテクチュア
Androidの基本構成は図のようになっています。
それでは一つ一つ確認していきましょう。
Linuxカーネル
Linuxカーネルは以下のものを含んでおり、いずれも通常のディストリビューションと同様に必要不可欠な機能です。
- メモリ管理
- プロセス管理
- ファイル
- システム
- セキュリティ
- Androidが動作するハードウェアの機能に必要なドライバー

ライブラリ
「Linuxカーネル」層の上位層となるのは「ライブラリ」層です。
これらのライブラリはC/C++言語で作成されていて、アプリケーション開発者が直接使用することはできません。しかしながら、上位層である「アプリケーションフレームワーク」層を通じて間接的に使用されます。
これらのライブラリはC/C++言語で作成されていて、アプリケーション開発者が直接使用することはできません。しかしながら、上位層である「アプリケーションフレームワーク」層を通じて間接的に使用されます。
| ライブラリ名 | 概要 |
|---|---|
| Surface Manager | 2D、3Dグラフィックレイヤーを合成する |
| Media Framework | オーディオとビデオの再生と記録をサポートする(AAC, MP3, MPEG4, H.264) |
| SQLite | 実行負荷が少なく、使用方法が簡単なRDB |
| OpenGL ES | ハードウェアの3Dアクセラレーション、3Dソフトウェアラスタライザ |
| Free Type | フォントのレンタリングを行う |
| WebKit | HTMLレンタリングエンジンWebブラウザにページの基本的なレンダリング機能を提供 |
| SGL | 2Dグラフィックエンジン |
| libc | 標準的なCライブラリをAndroid向けに最適化したもの |
Androidランタイム
Androidランタイムは、Oracle Java言語に準拠した基本的なAPIを提供するコアライブラリと、Androidアプリを実行するDalvik仮想マシン(DVM)により構成されています。
Dalvik仮想マシンとはGoogle社のエンジニアが、Androidプラットフォームの為に設計・開発したレジスタベースの仮想マシンです。低メモリシステムに最適化されており、OSによるプロセス管理、メモリ管理、スレッドのサポートを用いて、複数のアプリケーションが同時に動作できるように設計されています。
Dalvik仮想マシンとはGoogle社のエンジニアが、Androidプラットフォームの為に設計・開発したレジスタベースの仮想マシンです。低メモリシステムに最適化されており、OSによるプロセス管理、メモリ管理、スレッドのサポートを用いて、複数のアプリケーションが同時に動作できるように設計されています。

アプリケーションフレームワーク
Android SDKに含まれるAPI(Application Program Interface)の大部分は、アプリケーションフレームワークです。「ガラケー」と呼ばれる携帯電話とは異なり、システム標準のアプリケーションも、サードパーティーの開発者が作成したアプリケーションも、すべて同じAPIが使用可能です。
| ライブラリ名 | 概要 |
|---|---|
| Activity Manager | アプリケーションのライフサイクルを管理 |
| Content Providers | アプリケーション間で共有するデータ管理 |
| View System | リスト、テキストボックス、ボタンなどを含むアプリケーション構築に使用するウィジェットのセット |
| Window Manager | ユーザーインタフェースの基本的な機能を提供 |
| Notification Manager | ステータスバーへのアラートやLED、バックライトなどを使用して通知する機能 |
| Package Manager | 全アプリケーションパッケージの管理 |
| Resource Manager | ローカライズされた文字列やグラフィックス、レイアウトファイルなどの管理 |
| Location Manager | モバイルデバイスの位置情報を提供 |
| Telephony Manager | 電話機そのものの機能にアクセスする |
アプリケーション
Androidアーキテクチャの最上位層となるのは「アプリケーション」層です。
ホーム、コンタクト、電話といったアプリケーションがあらかじめ含まれています。
アプリケーション開発者が作成した様々なアプリケーションもこの層に位置づけられています。
ホーム、コンタクト、電話といったアプリケーションがあらかじめ含まれています。
アプリケーション開発者が作成した様々なアプリケーションもこの層に位置づけられています。