page.title=Android とは
@jd:body
Android は、オペレーティング システム、ミドルウェア、主要なアプリケーションを含む、携帯電話向けのソフトウェア スタックです。Android SDK は、Java プログラミング言語を使用した Android プラットフォーム向けのアプリケーションの開発を始めるのに必要なツールと API を提供します。
特長
- コンポーネントの再利用と置換が可能なアプリケーション フレームワーク
- 携帯電話用に最適化された Dalvik 仮想マシン
- オープンソース WebKit エンジンをベースにした統合ブラウザ
- カスタム 2D グラフィックス ライブラリと OpenGL ES 1.0 仕様に基づいた 3D グラフィックスにより提供される最適化されたグラフィックス(オプションのハードウェア アクセラレーション)
- SQLite による構造化データ ストレージ
- 音声、映像、静止画の一般的なフォーマット(MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF)に対するメディア サポート
- GSM テレフォニー機能(ハードウェアに依存)
- Bluetooth、EDGE、3G、WiFi(ハードウェアに依存)
- カメラ、GPS、コンパス、加速度計(ハードウェアに依存)
- デバイス エミュレータ、デバッグ用ツール、メモリとパフォーマンスの分析、Eclipse IDE 用プラグインを含む機能の豊富な開発環境
Android アーキテクチャ
Android オペレーティング システムの主なコンポーネントを次の図に示します。それぞれのセクションには、各コンポーネントの詳細が記述されています。
アプリケーション
Android には、メール クライアント、SMS プログラム、カレンダー、地図、ブラウザ、連絡先などのコア アプリケーションのセットが付属しています。アプリケーションはすべて Java プログラミング言語で作成されています。
アプリケーション フレームワーク
デベロッパーは、コア アプリケーションによって使用されるフレームワーク API のすべてにアクセスできます。アプリケーション アーキテクチャは、コンポーネントの再利用を容易にするように設計されています。このため、どのアプリケーションも機能を公開し、別のアプリケーションがその機能を使用することが可能です(ただし、フレームワークによって実施されるセキュリティ制限の対象となります)。このメカニズムによって、ユーザーによるコンポーネントの入れ替えも可能です。
アプリケーションの基盤となるのは、次のサービスとシステムのセットです:
- アプリケーションの構築を可能にする、拡張可能で豊富なビューのセット。ビューには、リスト、グリッド、テキスト ボックス、ボタンだけでなく、埋め込み可能なウェブブラウザも含まれます。
- コンテンツ プロバイダを使用すると、アプリケーションのデータ(たとえば、連絡先アプリケーション)に、別のアプリケーションからアクセスしたり、データを共有させることができます。
- リソース マネージャは、ローカライズされた文字列、グラフィックス、レイアウト ファイルなどのコード以外のリソースへのアクセスを提供します。
- {@link android.app.NotificationManager 通知マネージャ}を使用すると、すべてのアプリケーションからステータス バーにカスタマイズした警告を表示することができます。
- {@link android.app.Activity アクティビティ マネージャ}は、アプリケーションのライフサイクルを管理し、共通のナビゲーション バックスタックを提供します。
アプリケーションの簡単な説明と詳細については、Notepad チュートリアルをご覧ください。
ライブラリ
Android には C/C++ ライブラリのセットが含まれており、Android システムのさまざまなコンポーネントにおいて使用されています。これらの機能は、Android アプリケーション フレームワークを介して、デベロッパーに公開されています。コア ライブラリの一部を次に示します:
- システム C ライブラリ - BSD による実装をベースにした標準の C システム ライブラリ(libc)です。埋め込み Linux ベースのデバイス用に最適化されています。
- メディア ライブラリ - PacketVideo の OpenCORE をベースにしたライブラリです。MPEG4、H.264、MP3、AAC、AMR、JPG、PNG などの多くの一般的な映像と音声のフォーマットと、静止画ファイルの再生と記録をサポートしています。
- サーフェス マネージャ - 表示サブシステムへのアクセスを管理し、複数のアプリケーションからの 2D と 3D のグラフィック レイヤーをシームレスに合成します。
- LibWebCore - 最新式のウェブブラウザ エンジンで、Android ブラウザと埋め込み可能な Web 表示の両方を提供します。
- SGL - ベースとなる 2D グラフィックス エンジンです。
- 3D ライブラリ - OpenGL ES 1.0 API をベースとして実装されたライブラリです。ハードウェア 3D アクセラレーション(可能な場合)か、高度に最適化された埋め込みの 3D ソフトウェア ラスタライザのいずれかを使用します。
- FreeType - ビットマップ フォントやベクタ フォントのレンダリングを行います。
- SQLite - すべてのアプリケーションで利用可能な強力で軽量のリレーショナル データベース エンジンです。
Android ランタイム
Android には、Java プログラミング言語のコア ライブラリで利用できる機能のほとんどを提供するコア ライブラリのセットが含まれています。
Android の各アプリケーションは、独自のプロセスとして実行され、Dalvik 仮想マシン(VM)の独自のインスタンスにより実行されます。Dalvik は、携帯電話で複数の VM を効率よく実行できるように設計されています。Dalvik VM は、メモリの使用量を最小にするように最適化された Dalvik 実行可能(.dex)フォーマットのファイルを実行します。この VM はレジスタベースであり、Java 言語コンパイラによりコンパイルされた組み込みの「dx」ツールにより .dex フォーマットに変換されたクラスを実行します。
Dalvik VM は、Linux カーネルを使用して、スレッディングや低レベルのメモリ管理などの基本機能を実行しています。
Linux カーネル
Android は、Linux バージョン 2.6 を使用して、セキュリティ、メモリ管理、プロセス管理、ネットワーク スタック、ドライバ モデルなどのコア システム サービスを提供します。このカーネルは、ハードウェアと他のソフトウェア スタックの間の抽象化レイヤーとしても機能します。