「Android」のその他の用法については「アンドロイド」をご覧ください。LGPLなど[1]ウェブサイトandroid.comテンプレートを表示Android(アンドロイド)は、Googleによってスマートフォンやタブレットなどの携帯情報端末を主なターゲットとして開発されたプラットフォームである。カスタマイズ版Linuxカーネル、ライブラリやフレームワークその他のミドルウェア、ART仮想マシン[2]、主要なアプリケーションからなるソフトウェアスタック(集合)パッケージで構成されている。しては、世界シェア1位である。・マイナー、ニック・シアーズ、クリス・ホワイトがアメリカカリフォルニア州パロアルトに携帯電話向けソフトウェアプラットフォームを開発するAndroid社を設立した。2005年にGoogleがAndroid社を買収[3]し、一時はGoogleが「gPhone」という独自の携帯電話端末の開発を進めているという憶測が流れた[4]。Alliance」(オープン・ハンドセット・アライアンス、OHA)が発表した。v2ライセンスで配布される。2008年10月からは対応する携帯電話が多数販売されている。Androidのロゴには緑色のロボットのキャラクター「Bugdroid」[7]が使われており、日本では「ドロイド君」の愛称で呼ばれている。FoundationのTizenなどがある。Googleはスマートフォン・タブレット・腕時計以外にもゲーム機・冷蔵庫といった領域にもAndroidを搭載させる考えである[8]。特徴[編集]通知バーは上部から下にスライドして展開する。それぞれの通知をタップすると、それらに最適なアプリが開くようになっている。それぞれの通知を左右にスライドして削除する。Developers[1]から発表されている標準のAndroid(AOSP)について記述する。サードパーティーが独自に追加(カスタマイズ)した機能は含まない。メーカーごとに異なり、それぞれが独自のUIを開発している。Projectのソースコードから直接ビルドしたものを指す。メーカーやサードパーティーが開発したものはカスタムROMと言われている。Androidの基本操作はタッチインタフェースとなっており、指を使って直感的な操作ができるようになっている。表示されたボタン類を押すタップ、長押しタップ(つまむ)、画面端からタップスライドしてメニュー類を表示するスワイプ、マルチタッチによるピンチや回転などができるようになっている[9]。画面をタップした際に、ボタンを押したという感覚を起こさせるために、本体をバイブで振動させる機能を持ち合わせる。ジャイロスコープやGPS、加速度計などのハードウェアをサポートしており[10]、アプリケーション側からそれらにアクセスして活用する事もある。ジャイロスコープは端末を縦向きから横向きに変更する際に使われる事が多い。ゲームの例ではレースゲームで車をハンドル操作する際、端末を傾けてハンドル操作に当てはめるものがある[11]。ホームスクリーン上には、パソコンのデスクトップ画面のようにアプリケーションのアイコンが並び、アプリをインストールするとホームスクリーン上に自動的に配置される。長押しタップでアイコンを移動したり、フォルダを作成して格納する機能を持つ。これに加えてウィジェットを配置できるようになっている。ウィジェットは、天気予報やニュースなどのライブ情報などがあり、ホームスクリーンから直接見ることが出来る。ホームスクリーンは画面外にも複数用意されており、画面を左右にスワイプすることで複数のホームスクリーン間を移動出来る[12]。画面上部にはステータスバーが配置されている[13]。ステータスバーは、新着メールやSMSを受信したりデバイスを接続した時に、ユーザーに作業を中断させることなく知らせるシステムとして使われる[14]。多くのAndroid端末には、通信の切り替え、機内モード、システム設定など、頻繁に使われる機能も、この通知バーに格納されているものが多くある。日本国内では通称として通知バーと呼ばれている。3.x、及び4.0以降から配置されている[15]。これ以前のバージョンでは、主にハードウェアキー(いわゆる押しボタン式)が主流であった。文字の入力[編集]Androidには文字入力のためのIMEを搭載しており、テキストボックスを開くと画面上に仮想キーボードが表示される。この仮想キーボードを、タップやスワイプ操作する事によって文字を入力できるようになっている。サードパーティ製のIMEをインストールする事も可能になっている。IMEとハードウェアが対応していれば、BluetoothやUSB接続の外付けキーボードを接続して入力することができる。発声によって文字入力を行う音声入力システムも備える。OSには標準で日本語入力用のIMEが搭載されていない。日本語入力やATOKなどのサードパーティー製IMEをインストールする必要がある。Touch、ATOKなどが、メーカーによって搭載されている。Playがインストールされている。Playからアプリコンテンツをダウンロードして使えるようになっている。Play内では、100万本を超えるアプリケーションが提供されている。Playを経由しないアプリ配布も認めており、APKファイルから直接インストールできるようになっており[18]、それらのアプリは野良アプリと呼ばれる。普通のアプリに見える悪質なアプリ(マルウェア)も存在するため、公式マーケット以外からのダウンロードには細心の注意が必要である。[19]構成[編集]Androidは、カーネルからミドルウェア、ユーザインタフェース、ウェブブラウザ、電話帳などの標準的なアプリケーション・ソフトウェア群までを1つのパッケージにして提供されている。BionicはNetBSDのlibcとLinuxのlibcを組み合わせたものをベースにしている。KitKatからはChromiumベース)。WebKitの機能は、他のアプリケーションからも利用可能である。その他のアプリケーションJavaで作成されたアプリケーションをDalvik仮想マシン上で動かすことができる。Dalvikは通常のJava仮想マシンとは異なり、メモリの消費が低く抑えられているなど、モバイル向けに最適化された設計となっている。Storeが運営されている。Heroなどの機種でサポートされている。アップルによる特許訴訟を避けるため、2010年2月までは、初期的にはカーネルレベルで無効化されていた[20]。データストレージAPIデータ保存用にSQLiteが組み込まれている。SP、WebM、AMR、AMR-WB(3GPPコンテナ)、AAC、HE-AAC(MP4/3GPPコンテナ)、MP3、MIDI、Vorbis、WAV、JPEG、PNG、GIF、BMP、WebPなどに対応している。フォントFreeTypeフォントライブラリーにより、TrueType、Type1、OpenTypeなどのフォント形式に対応している。プログラミング言語[編集]カーネルとライブラリー、ランタイムはほとんどがC言語またはC++で記述されている。サブセット+Android拡張」環境で記述する[21]。対応CPU[編集]Googleが公式サポートしているCPUはARM(ARMv5以降)、MIPS、x86である。Atom搭載のタブレットを発売[22]するなど、x86による製品も徐々に広がっている。OSは、プレ・インストール・アプリと、後からインストールするアプリを、公平に扱うのが特徴である。HarmonyからSwingやAWTなどの一部のAPIを除去し、UIなどのAPIを追加したライブラリである。CDCのAPIは、全てではないが、概ね含まれている。Javaの互換性テストを通過していない。Googleから提供されているSDKでは、Javaプラットフォームによるプログラム環境と、C/C++による開発がサポートされている。Java以外にも、Javaプラットフォーム向けの複数の言語(Scala、Hecl)で書かれたプログラムがDalvik上で動作する。Framework互換環境の1つであるMonoもDalvikに対応する計画がある[23]。デベロッパー向けにART仮想マシンが実装された。Runtimeの略で、Dalvikよりもアプリケーションの動作効率などを向上させることを目的に開発された[24]。Dalvikの場合、多様なハードウェアに対応できるよう、アプリを中間コードの状態で保管しておき、実行直前にネイティブコードに変換して動作させるJITコンパイル方式が採用されている。ART仮想マシンは、予め最初からネイティブコードに変換しておくため、実行速度や動作速度が向上する[25]。4.4では依然としてDalvikが標準となっており、ARTを用いるためには開発者向けオプションで設定が必要である。アプリケーションによってはART上では正常動作しないものもあり、Dalvikとの完全互換は保障されていない[26]。5.0からは、ART仮想マシンが標準となった。4.4と比較して1.37倍と大幅に伸びた[27]。デバイスの電源を入れた際にフラッシュメモリ上にインストールされたLinuxカーネルを読み込み、そこからAndroidを起動させるシステムである。パソコンで例えると、BIOSという部分に相当する。ブートローダーのインタフェースは、一部の端末でアクセス可能である。多くの場合は、電源ボタンと音量ダウンボタンを同時押ししながら電源を入れて起動させる事ができる。起動後に表示されるインタフェースは、fastbootモードとも呼ばれる[28]。無償提供されている[29]。SDKによって、Android携帯電話機とホストPCとをUSBで接続して、アプリケーションプログラムを携帯電話機上で実行しながらPC上でデバッグすることができる。他社の専用の携帯電話機エミュレータでないと、低レベルのランタイムとライブラリーを書き換えることは出来ない[21]。Studioが推奨されている。IDEAなど他の統合開発環境も対応している。Studioと称する新たな統合開発環境を開発中であることを表明した[30]。AntではなくGradleを採用している。レイアウトのデザインもよりグラフィカルで端末実機のイメージに近くなるとされる。2014年12月8日に正式版1.0がリリースされた[31]。呼ばれるPC上で動作する仮想デバイスを用いることができる。対応CPUと同様にARM、MIPS、x86の3種類のアーキテクチャをエミュレーションするソフトウェアがSDKに同梱されており、これにロードされるシステムイメージもAndroidバージョンごとにそれぞれ提供されている。ユーザーがこれらを選択をして、任意のAndroidバージョンとCPUエミュレーターの組み合わせによるAVDを作成する。一般的なエミュレーターと同様に他のコンピューターシステムをエミュレーションするために動作が非常に重く、快適なデバッグを行うことは難しい。これをカバーするため、仮想化支援機能をサポートしているx86アーキテクチャのCPUが搭載されたホストマシン上では、x86システムイメージによるAVDを高速化することができる。VTによるサポートを有効にすることができる。VTまたはAMD-Vによるサポートによって高速化することができる。アプリがプリインストールされている。マップ、ギャラリー、カレンダー、Gmail、トークなどが含まれる。通過し、Googleにライセンスを与えられた端末のみ認められている。フォルダにコピーしてインストール可能。エミュレーション・モデル[編集]基本ハードウエアを「goldfish」と定義しており、SDKのQEMUエミュレータはそれを踏襲している。サポートしているスペックは下記の通り。2007年10月当時のスペックである。歴代のコードネームのうち、1.5からは頭文字がバージョンの発表順にCからのアルファベット順で始まる菓子の名前が付けられており、それぞれにBugdroidがコードネームの菓子に扮している。(7.0)シェア[編集]スマートフォン[編集]ガートナーの調査によると、世界でのスマートフォンの販売台数のシェアの推移は以下の通り[33][34][35][36][37][38][39][40][41][42][43][44][45][46][47][48][49]。日本国内でのスマートフォンの利用者数(契約者数)の推移は以下の通り[50][51][52][53][54]。Storeへのアクセス統計によるバージョンごとの世界シェア[73]。Bean02012-07-09-2012年7月9日161.4%4.2.x02012-11-13-2012年11月13日173.9%4.302013-07-24-2013年7月24日180.2%4.4KitKat02013-10-31-2013年10月31日1910.7%5.0Lollipop02014-11-03-2014年11月3日2127.2%5.102015-03-09-2015年3月9日2212.0%6.0Marshmallow02015-10-05-2015年10月5日2342.8%7.0Nougat02016-08-23-2016年8月23日240.6%ライセンス[編集]Androidのソースコードは、アプリケーション・フレームワークから標準ライブラリ、ランタイム、カーネルまでのすべてが公開され、改変も自由である。WebKitのライセンスはLGPLであり、カーネルとそのライブラリなどのLinux部分のライセンスはGPLである。Androidのライセンスでは、Androidのオープンソースを採用した企業・個人が改変部や付加部分をGPLのように公開する必要がない。カーネル部とそのライブラリはLinuxに基づくので、GPL系オープンソースのライセンスが採用され、公開が求められる[21]。Storeなどの一部のGoogleアプリケーションは、Androidと密に連携しているがプロプライエタリなライセンスで提供されている[74]。したがってカスタマイズしたAndroidに、これらのアプリケーションを載せるためには、Googleの許諾を得るか、アプリケーションをGoogle提供のファームウェアからバックアップし、権利を侵害していないカスタム版に再インストールする(カスタム版にはアプリケーションをバンドルしない)必要がある(CyanogenModの項を参照)。3.xのソースコードはgitの履歴の中に存在するだけで、gitのタグとしては割り振られていない[77]。7.0アンディ・ルービンが設立したプラットフォームベンダーである米Android社を、2005年にGoogleが買収[78]したことから一時はGoogleが「gPhone」と呼ばれる独自の携帯電話端末の開発を進めているという憶測が流れた[79]。Alliance」(オープン・ハンドセット・アライアンス、以下OHAと表記)を通じて新規プラットフォームの概要のみが発表される結果となった。