アンドロイド (Android)

Related Post

> オペレーティングシステム (OS) > アンドロイド (Android)

Android(アンドロイド)は、Googleによってスマートフォンやタブレットなどの携帯情報端末を主なターゲットとして開発されたプラットフォームである。カスタマイズ版Linuxカーネル、ライブラリやフレームワークその他のミドルウェア、ART仮想マシン、主要なアプリケーションからなるソフトウェアスタック(集合)パッケージで構成されている。2015年現在、スマートフォン用のオペレーティングシステム (OS) としては、世界シェア1位である。

【概要】

2003年にアンディ・ルービン、リッチ ・マイナー、ニック・シアーズ、クリス・ホワイトがアメリカカリフォルニア州パロアルトに携帯電話向けソフトウェアプラットフォームを開発するAndroid社を設立した。2005年にGoogleがAndroid社を買収し、一時はGoogleが「gPhone」という独自の携帯電話端末の開発を進めているという憶測が流れた。
2007年11月5日 携帯電話用ソフトウェアのプラットフォームであるAndroidを、Google、米クアルコム、独通信キャリアのT-モバイル (T-Mobile International) などが中心となり設立した規格団体 「Open Handset Alliance」(オープン・ハンドセット・アライアンス、OHA)が発表した。
無償で誰にでも提供されるオープンソースであり、Apache v2ライセンスで配布される。2008年10月からは対応する携帯電話が多数販売されている。
Androidのロゴには緑色のロボットのキャラクター「Bugdroid」が使われており、日本では「ドロイド君」の愛称で呼ばれている。
競合するモバイル向けプラットフォームは、マイクロソフトのWindows Phone、アクセンチュアのSymbian OS、クアルコムのBrew MP、アップルのiOS、ブラックベリーのBlackBerry、Linux FoundationのTizenなどがある。
Googleはスマートフォン・タブレット・腕時計以外にもゲーム機・冷蔵庫といった領域にもAndroidを搭載させる考えである。

【特徴】

通知バーは上部から下にスライドして展開する。それぞれの通知をタップすると、それらに最適なアプリが開くようになっている。それぞれの通知を左右にスライドして削除する。

この節では、Android Developersから発表されている標準のAndroid(AOSP)について記述する。サードパーティーが独自に追加(カスタマイズ)した機能は含まない。

【ユーザインターフェース】

Androidのユーザインタフェース (UI) はメーカーごとに異なり、それぞれが独自のUIを開発している。カスタマイズが施されていない標準のAndroidは通称AOSP版と言われ、Android Open Source Projectのソースコードから直接ビルドしたものを指す。また、メーカーやサードパーティーが開発したものはカスタムROMと言われている。
Androidの基本操作はタッチインタフェースとなっており、指を使って直感的な操作ができるようになっている。表示されたボタン類を押すタップ、長押しタップ(つまむ)、画面端からタップスライドしてメニュー類を表示するスワイプ、マルチタッチによるピンチや回転などができるようになっている。画面をタップした際に、ボタンを押したという感覚を起こさせるために、本体をバイブで振動させる機能を持ち合わせる。ジャイロスコープやGPS、加速度計などのハードウェアをサポートしており、アプリケーション側からそれらにアクセスして活用する事もある。ジャイロスコープは端末を縦向きから横向きに変更する際に使われる事が多い。ゲームの例ではレースゲームで車をハンドル操作する際、端末を傾けてハンドル操作に当てはめるものがある。
ホームスクリーン上には、パソコンのデスクトップ画面のようにアプリケーションのアイコンが並び、アプリをインストールするとホームスクリーン上に自動的に配置される。また長押しタップでアイコンを移動したり、フォルダを作成して格納する機能を持つ。これに加えてウィジェットを配置できるようになっている。ウィジェットは、天気予報やニュースなどのライブ情報などがあり、ホームスクリーンから直接見ることが出来る。ホームスクリーンは画面外にも複数用意されており、画面を左右にスワイプすることで複数のホームスクリーン間を移動出来る。
画面上部にはステータスバーが配置されている。ステータスバーは、新着メールやSMSを受信したりデバイスを接続した時に、ユーザーに作業を中断させることなく知らせるシステムとして使われる。また、多くのAndroid端末には、通信の切り替え、機内モード、システム設定など、頻繁に使われる機能も、この通知バーに格納されているものが多くある。日本国内では通称として通知バーと呼ばれている。
画面下部には「戻る」、「ホーム」、「アプリケーションリスト」の操作を実行できるナビゲーションバーが、Android 3.x、及び4.0以降から配置されている。これ以前のバージョンでは、主にハードウェアキーが主流であった。

【文字の入力】

Androidには文字入力のためのIMEを搭載しており、テキストボックスを開くと画面上に仮想キーボードが表示される。この仮想キーボードを、タップやスワイプ操作する事によって文字を入力できるようになっている。サードパーティ製のIMEをインストールする事も可能になっている。IMEとハードウェアが対応していれば、BluetoothやUSB接続の外付けキーボードを接続して入力することができる。また発声によって文字入力を行う音声入力システムも備える。

【アプリケーション】

Googleの認可を受けた端末には、アプリケーションマーケットとしてGoogle Playがインストールされている。多くの端末では、このGoogle Playからアプリコンテンツをダウンロードして使えるようになっている。
GoogleはGoogle Playを経由しないアプリ配布も認めており、APKファイルから直接インストールする事ができるようになっており、それらのアプリは野良アプリと呼ばれる。ただし一見普通のアプリに見える悪質なアプリも存在するため、公式マーケット以外からダウンロードには細心の注意が必要である。

【構成】

Androidは、カーネルからミドルウェア、ユーザインタフェース、ウェブブラウザ、電話帳などの標準的なアプリケーション・ソフトウェア群までを1つのパッケージにして提供されている。
カーネルにはLinuxの関連技術が使用されているが、その他の部分は様々な技術が用いられており、例えば標準Cライブラリ (libc) のBionicはNetBSDのlibcとLinuxのlibcを組み合わせたものをベースにしている。

Androidのアーキテクチャ

機能
携帯電話網への対応 GSM、UMTS、CDMA2000、EV-DO、LTE、3G、4G
その他のネットワーク対応 Bluetooth、無線LAN
各種ハードウェアへの対応 GPS、加速度センサ、磁気センサ、2D/3D描画支援ハードウェア (GPU) など
ウェブブラウザ WebKitベースのブラウザが組み込まれている(4.4 KitKatからはChromiumベース)。WebKitの機能は、他のアプリケーションからも利用可能である。
メール ショートメッセージサービス (SMS) 及びマルチメディアメッセージングサービス (MMS) が利用可能である。
その他のアプリケーション Javaで作成されたアプリケーションをDalvik仮想マシン上で動かすことができる。Dalvikは通常のJava仮想マシンとは異なり、メモリの消費が低く抑えられているなど、モバイル向けに最適化された設計となっている。
アプリケーションマーケット Googleにより、Android用アプリケーションを配布、販売するGoogle Play Storeが運営されている。
マルチタッチ ネイティブに対応しており、HTC Heroなどの機種でサポートされている。ただし、アップルによる特許訴訟を避けるため、2010年2月までは、初期的にはカーネルレベルで無効化されていた[19]
データストレージAPI データ保存用にSQLiteが組み込まれている。
マルチメディアAPI Media Frameworkと呼ばれる映像と音声用のライブラリにより、H.263、H.264(3GPP/MP4コンテナ)、 MPEG-4 SP、WebM、AMR、AMR-WB(3GPPコンテナ)、AAC、HE-AAC(MP4/3GPPコンテナ)、MP3、MIDI、Vorbis、WAV、JPEG、PNG、GIF、BMP、WebPなどに対応している。
フォント FreeTypeフォントライブラリーにより、TrueType、Type1、OpenTypeなどのフォント形式に対応している。
その他のライブラリー OpenGL ES、OpenSL ES、OpenMAX AL、Skia (SGL)、SSL、zlib、標準Cライブラリ (Bionic)、標準C++ライブラリ (libstdc++) など

【プログラミング言語】

カーネルとライブラリー、ランタイムはほとんどがC言語またはC++で記述されている。アプリケーションとアプリケーション・フレームワークは、Google独自に構築した仮想マシンであるDalvik仮想マシン上の「Java Platform, Standard Edition (Java SE) のサブセット+Android拡張」環境で記述する。

【対応CPU】

Googleが公式サポートしているCPUはARM(ARMv5以降)、MIPS、x86である。ARM以外の環境はAndroid 2.3から対応した。端末シェアの多くはARMv7が占めているが、日本においては2014年3月に大手家電量販店のビックカメラが自社ブランド製品としてIntel Atom搭載のタブレットを発売するなど、x86による製品も徐々に広がっている。

【仮想マシン】

Android 4.4以前のバージョンで動作するアプリケーションは、基本的にはDalvik仮想マシン (VM) 上で動作する。Android OSは、プレ・インストール・アプリと、後からインストールするアプリを、公平に扱うのが特徴である。Apache HarmonyからSwingやAWTなどの一部のAPIを除去し、UIなどのAPIを追加したライブラリである。 Java CDCのAPIは、全てではないが、概ね含まれている。Sun Javaの互換性テストを通過していない。
Googleから提供されているSDKでは、Javaプラットフォームによるプログラム環境と、C/C++による開発がサポートされている。Java以外にも、Javaプラットフォーム向けの複数の言語(Scala、Hecl)で書かれたプログラムがDalvik上で動作する。また、.NET Framework互換環境の1つであるMonoもDalvikに対応する計画がある。
Android 4.4 (KitKat) からは、デベロッパー向けにART仮想マシンが実装された。ARTはAndroid Runtimeの略で、Dalvikよりもアプリケーションの動作効率などを向上させることを目的に開発された。Dalvikの場合、多様なハードウェアに対応できるよう、アプリを中間コードの状態で保管しておき、実行直前にネイティブコードに変換して動作させるJITコンパイル方式が採用されている。一方でART仮想マシンは、予め最初からネイティブコードに変換しておくため、実行速度や動作速度が向上する。
なお、Android 4.4では依然としてDalvikが標準となっており、ARTを用いるためには開発者向けオプションで設定が必要である。ただし、アプリケーションによってはART上では正常動作しないものもあり、Dalvikとの完全互換は保障されていない。
Android 5.0からは、ART仮想マシンが標準となった。5.0に搭載されたバッテリー改善システムと、ARTの効率性の良さという組み合わせによって、バッテリー持続時間がAndroid 4.4と比較して1.37倍と大幅に伸びた。

【ブートローダ】ブートローダー (bootloader) とは、デバイスの電源を入れた際にフラッシュメモリ上にインストールされたLinuxカーネルを読み込み、そこからAndroidを起動させるシステムである。パソコンで例えると、BIOSという部分に相当する。ブートローダーのインタフェースは、一部の端末でアクセス可能である。多くの場合は、電源ボタンと音量ダウンボタンを同時押ししながら電源を入れて起動させる事ができる。起動後に表示されるインタフェースは、fastbootモードとも呼ばれる。

【開発環境】

アプリケーション開発用にはAndroid SDK (Software Development Kit) が、ランタイムとライブラリの開発用にはAndroid NDK (Native Development Kit) が無償提供されている。Android SDKによって、Android携帯電話機とホストPCとをUSBで接続して、アプリケーションプログラムを携帯電話機上で実行しながらPC上でデバッグすることができる。Googleが有償で提供するSIMロックフリーの開発専用携帯電話機や他社の専用の携帯電話機エミュレータでないと、低レベルのランタイムとライブラリーを書き換えることは出来ない。対応しているオペレーティングシステムはLinux(Ubuntu 8.04以降など)、Mac OS X v10.5.8以降 (Intel Mac)、Windows XP以降である。開発環境には、Android Studioが推奨されている。Visual Studio、IntelliJ IDEAなど他の統合開発環境も対応している。
Googleは、2013年5月15日に開催されたGoogle I/OでAndroid Studioと称する新たな統合開発環境を開発中であることを表明した。これはIntelliJ IDEAをベースにしたオープンソースによるAndroid専用の開発環境であり、ビルドツールとして従来のApache AntではなくGradleを採用している。また、レイアウトのデザインもよりグラフィカルで端末実機のイメージに近くなるとされる。2014年12月8日に正式版1.0がリリースされた。
Android SDKでは、Android Virtual Device (AVD) と呼ばれるPC上で動作する仮想デバイスを用いることができる。対応CPUと同様にARM、MIPS、x86の3種類のアーキテクチャをエミュレーションするソフトウェアがSDKに同梱されており、これにロードされるシステムイメージもAndroidバージョンごとにそれぞれ提供されている。ユーザーがこれらを選択をして、任意のAndroidバージョンとCPUエミュレーターの組み合わせによるAVDを作成する。ただし、一般的なエミュレーターと同様に他のコンピューターシステムをエミュレーションするために動作が非常に重く、快適なデバッグを行うことは難しい。これをカバーするため、仮想化支援機能をサポートしているx86アーキテクチャのCPUが搭載されたホストマシン上では、x86システムイメージによるAVDを高速化することができる。WindowsおよびMac OSにおいては、インテルが提供するIntel Hardware Accelerated Execution Manager (HAXM) によってIntel VTによるサポートを有効にすることができる。また、Linux版のSDKにおいては、x86エミュレーター自体がKVM上で動作させることが可能となっており、Intel VTまたはAMD-Vによるサポートによって高速化することができる。

【Google Mobile Service】

ほとんどのAndroid端末には、プロプライエタリ・ソフトウェアのGoogle Mobile Service (GMS) アプリがプリインストールされている。Google Play 、マップ、ギャラリー、カレンダー、Gmail、トークなどが含まれる。GMSアプリの搭載は互換性テストのCompatibility Test Suite (CTS) を通過し、Googleにライセンスを与えられた端末のみ認められている。オープンソースのAndroidから派生して、これらのアプリが入っていない場合は、CyanogenMod Gappsなどからroot権限で /system フォルダにコピーしてインストール可能。

【エミュレーションモデル】

基本ハードウエアを「goldfish」と定義しており、SDKのQEMUエミュレータはそれを踏襲している。サポートしているスペックは下記の通り。ただし、2007年10月当時のスペックである。

  • goldfishモデル
    • メインメモリ:96MB
    • VRAM:8MB
    • 画面サイズ:480×320画素 (HVGA)、または320×240画素 (QVGA)、ともに縦長または横長配置