Android (オペレーティングシステム)
Android(アンドロイド)は、Googleが開発した汎用モバイルオペレーティングシステムである2022年3月現在、公式サイトでは、Androidとは「モバイルの可能性を広げるプラットフォーム」(The platform changing what mobile can do.)であると銘打たれている。。Linuxカーネルやオープンソースソフトウェアがベースで、主にスマートフォンやタブレットなどのタッチスクリーンモバイルデバイス向けにデザインされている。PC用にはAndroid-x86、テレビ用にはAndroid TV、自動車用にはAndroid Auto、ウェアラブルデバイス用にはWear OS(旧称Android Wear)がある。世界で最もよく使われているオペレーティングシステムであり、2021年5月時点で30億台を超えるアクティブデバイスがある。
iPhoneと区別する為に､Androidスマートフォンをさす呼称としても使われる｡
2003年にアンディ・ルービン、リッチ ・マイナー、ニック・シアーズ、クリス・ホワイトがアメリカカリフォルニア州パロアルトに携帯電話向けソフトウェアプラットフォームを開発するAndroid社を設立した。2005年にGoogleがAndroid社を買収し、一時はGoogleが「gPhone」という独自の携帯電話端末の開発を進めているという憶測が流れた。2007年11月5日、携帯電話用ソフトウェアのプラットフォームであるAndroidを、Google、米クアルコム、独通信キャリアのT-モバイル(T-Mobile International)などが中心となり設立した規格団体「Open Handset Alliance」(オープン・ハンドセット・アライアンス、OHA)が発表した。
無償で誰にでも提供されるオープンソース(オープンソースソフトウェア)であり、サードパーティーのベンダーが独自にカスタマイズしやすくすることを目的として、Apache License 2.0に基づいて配布されている。2008年10月からは対応する携帯電話が多数販売されている。
競合するモバイル向けプラットフォームは、AppleのiOS/iPadOS/watchOS/tvOSがある。過去の競合にはマイクロソフトのWindows Mobile/Windows Phone/Windows 10 Mobile、アクセンチュアのSymbian OS、クアルコムのBrew MP、ブラックベリーのBlackBerry、Linux FoundationのTizenなどがあった。Googleはスマートフォン・タブレット・腕時計(スマートウォッチ)以外にもゲーム機・冷蔵庫といった領域にもAndroidを搭載させる考えである。
Android OSを搭載するスマートフォンとタブレットはベンダー各社から発売されており、それぞれベンダー固有のブランド名が付けられている。これらはAndroidスマートフォンやAndroidタブレットというような総称で呼ばれる。主な競合はiOSあるいはiPadOSを搭載するiPhoneおよびiPadである。
この節では、 から発表されている標準のAndroid(AOSP)について記述する。サードパーティーが独自に追加(カスタマイズ)した機能は含まない。
Androidのユーザーインターフェース(UI)はサードパーティーの端末メーカーによるカスタマイズが許可されており、通例メーカーごとに独自のUIが搭載されている。カスタマイズが施されていない標準のAndroidは通称AOSP版と言われ、Android Open Source Projectのソースコードから直接ビルドしたものを指す。また、メーカーやサードパーティーが開発したものはカスタムROMと言われている。
Androidの基本操作はタッチインターフェースとなっており、指を使って直感的な操作ができるようになっている。表示されたボタン類を押すタップ、長押しタップ(つまむ)、画面端からタップスライドしてメニュー類を表示するスワイプ、マルチタッチによるピンチや回転などができるようになっている。画面をタップした際に、ボタンを押したという感覚を起こさせるために、本体をバイブで振動させる機能を持ち合わせる。ジャイロスコープやGPS、加速度センサーなどのハードウェアをサポートしており、アプリケーション側からそれらにアクセスして活用する事もある。ジャイロスコープは端末を縦向きから横向きに変更する際に使われる事が多い。ゲームの例ではレースゲームで車をハンドル操作する際、端末を傾けてハンドル操作に当てはめるものがある。
ホームスクリーン上には、パソコンのデスクトップ画面のようにアプリケーションのアイコンが並び、アプリをインストールするとホームスクリーン上に自動的に配置される。また長押しタップでアイコンを移動したり、フォルダを作成して格納する機能を持つ。これに加えてウィジェットを配置できるようになっている。ウィジェットは、天気予報やニュースなどのライブ情報などがあり、ホームスクリーンから直接見ることができる。ホームスクリーンは画面外にも複数用意されており、画面を左右にスワイプすることで複数のホームスクリーン間を移動できる。
画面上部にはステータスバーが配置されている。ステータスバーは、通知やシステムの状態情報を表示するためのシステムUIである。ステータスバーには通信状態やシステムサービス(Google Mobile Serviceなど)の稼働状況、バッテリー残量、時刻などが表示される。ステータスバーを下方にスワイプすることでクイック設定パネルが表示され、頻繁に使われる機能や各種システム設定(例えばWi-Fi/Bluetooth/機内モード/画面自動回転のON/OFFボタンなど)に素早くアクセスすることができる。クイック設定パネルの下部には通知ドロワーが表示され、通知の詳細を確認したり、各通知からのアプリ操作につなげたりすることができる。通知はステータスバーにもアイコンとして表示され、例えば新着のメールやSMSを受信したりデバイスを接続したりしたときに、ユーザーに作業を中断させることなく知らせることができる。
画面下部には「戻る」ボタン/「ホーム」ボタン/「マルチタスク」(アプリケーションリスト)ボタンによる各操作を実行できるナビゲーションバーが、Android 3.x、および4.0以降から配置されている。これ以前のバージョンでは、ハードウェアキー(物理ボタン)方式が主流であった。Android 9 Pieでは「ホーム」ボタンと「マルチタスク」ボタンが削除され、スワイプジェスチャーに置き換えられた。ただし、端末メーカーによっては従来のナビゲーションバーを採用しているものや、設定によって従来のナビゲーションバーを利用できるようになるものもある。Android 10では「戻る」ボタンも削除された。
Androidには文字入力のためのIMEを搭載しており、テキストボックスや検索ボックスなどの入力エリアをタップするなどしてフォーカスを当てると画面上に仮想キーボードが表示される。この仮想キーボードを、タップやスワイプ操作することによって文字を入力できるようになっている。IMEはサービスアプリケーションとして動作し、エンドユーザーが自由にサードパーティー製のIMEをインストールすることも可能になっている。IMEとハードウェアが対応していれば、BluetoothやUSB接続の外付けキーボードを接続して入力することができる。また発声によって文字入力を行う音声入力システムも備える。Googleあるいはサードパーティー製の手書き入力アプリを利用して、指やスタイラスペンなどで書いた文字を認識させることもできる。
なお2018年現在、Android OSには標準で日本語入力用のIMEが搭載されていない。そのため、日本語入力を行うには、Google 日本語入力やATOKなどのサードパーティー製IMEをインストールする必要がある。日本国内で販売されている端末は、最初から日本語入力できるようにiWnn、POBox Touch、S-Shoin、ATOK、FSKARENなどが、メーカーによって搭載されている。一部のAndroidデバイスでは、Google純正の新たなIMEであるGboardが最初から搭載されており、また2017年11月にはGboardが日本語に対応し、追加の言語およびキーボードレイアウトをダウンロードするだけで日本語入力ができるようになった。
Googleの認可を受けた端末には、アプリケーションマーケットとしてGoogle Play(旧 Androidマーケット)がインストールされている。多くの端末では、このGoogle Playからアプリコンテンツをダウンロードして使えるようになっている。2019年9月時点のGoogle Play内では、280万本を超えるアプリケーションが提供されている。
GoogleはGoogle Playを経由しないアプリ配布も認めており、APKファイルから直接インストールできるようになっており、それらのアプリは野良アプリと呼ばれる。ただし一見普通のアプリに見える悪質なアプリ(マルウェア)も存在するため、公式マーケット以外からのダウンロードには細心の注意が必要である。
Androidで表示されるホーム画面を表示させるアプリケーションのことはホームアプリと呼ばれる。たくさんのアプリが公開されており、ユーザーは好きなものを選ぶことができる。別名、ランチャー(Launcher)とも呼ばれる。
Androidは、カーネルからミドルウェア、ユーザーインターフェース、ウェブブラウザ、電話帳などの標準的なアプリケーション・ソフトウェア群までを1つのパッケージにして提供されている。
カーネルにはLinuxの関連技術が使用されているが、その他の部分は様々な技術が用いられており、例えば標準Cライブラリ(libc)のBionic libcはNetBSDのlibcとLinuxのlibcを組み合わせたものをベースにしている。
カーネルとライブラリ、ランタイムはほとんどがC言語またはC++で記述されているが、2021年から新規コードのデフォルト言語をRustにしており、2022年12月現在では新規コードのRustの占める割合が21%に達している。アプリケーションとアプリケーション・フレームワークは、Google独自に構築した仮想マシンであるDalvik仮想マシンまたはAndroid Runtime(ART)上の「Java Platform, Standard Edition(Java SE)のサブセット+Android拡張」環境で記述する。プリインストールされたアプリ、エンドユーザーが後からインストールするアプリを問わず、共通の仮想マシンおよびフレームワークを使用する。
Googleが公式サポートしているCPUはARM(ARMv5以降)、MIPS、x86である。ARM以外の環境はAndroid 2.3から対応した。端末シェアの多くはARMv7とARMv8が占めているが、日本においては2014年3月に大手家電量販店のビックカメラが自社ブランド製品としてIntel Atom搭載のタブレットを発売するなど、x86による製品もあった。
ChromeOSにはAndroidアプリケーションの実行環境としてAndroid Runtime for Chrome(ARC)が搭載されており、x86ベースやARMベースのCPUを搭載するChromebook端末上でAndroidアプリケーションを動作させることもできる。
Microsoft Windows 11では、専用のAndroidサブシステム(Windows Subsystem for Android:WSA)をインストールすることで、x86ベースやARMベースのCPUを搭載するWindows PC上にて、Amazon Appstore経由で入手したAndroidアプリケーションを動作させることもできる。
Androidアプリケーションのパッケージ(APK)には、各種プロセッサのアーキテクチャ固有命令を含むネイティブライブラリを複数含めることができる。エミュレーションにより、x64プロセッサ上でARM32/ARM64ネイティブライブラリのみを含むAndroidアプリケーションを動作させることもできるが、オーバーヘッドを伴う。
Android 4.4以前のバージョンで動作するアプリケーションは、基本的にはDalvik仮想マシン(VM)上で動作する。DalvikはJavaのオープン実装であるApache Harmonyをベースとしているが、Java APIセットからはSwingやAWTなどが除去され、Android専用のUIフレームワークや独自ライブラリなどが追加されている。Java CDCのAPIは、全てではないが、概ね含まれている。なお、オラクル(旧:Sun)Javaの互換性テストを通過していないため、正式なJavaではない。APIセットはJava Platform, Micro Edition(Java ME)とも異なる。Android 7.0 Nougat以降はJava APIライブラリの実装がOpenJDKベースになった。
Googleから提供されているソフトウェア開発キットでは、Javaプラットフォームによるプログラミング環境と、C/C++による開発がサポートされている。Java以外にも、Javaプラットフォーム向けの複数の言語(Scala、Kotlin)で書かれたプログラムがDalvik/ART上で動作する。Java Native Interface(JNI)を利用して、JavaとC/C++間で相互運用することも可能である。Android 2.3以降ではNative Activityのサポートにより、使用可能なAPIの制約はあるもののC/C++のみでアプリケーションを開発することも可能になっている。また、.NET Framework互換環境の1つであるMonoもAndroidに対応しており、XamarinとMicrosoft Visual Studioを利用することで、.NET言語(C#/F#)を使用してAndroidアプリケーションを開発することができる。
Android 4.4(KitKat)からは、デベロッパー向けに新たな仮想マシンAndroid Runtime(ART)が実装された。ARTは、Dalvikよりもアプリケーションの動作効率などを向上させることを目的に開発された。Dalvikの場合、多様なハードウェアに対応できるよう、アプリを中間コードの状態で保管しておき、実行直前にネイティブコードに変換して動作させるJITコンパイル方式が採用されている。一方でART仮想マシンは、予め最初からネイティブコードに変換しておくため(ahead-of-time:AOT)、実行速度や動作速度が向上する。Android 7.0以降のARTではAOTとインタープリタとJITをミックスしたハイブリッド手法が採用された。
なお、Android 4.4では依然としてDalvikが標準となっており、ARTを用いるためには開発者向けオプションで設定が必要である。ただし、アプリケーションによってはART上では正常動作しないものもあり、Dalvikとの完全互換は保証されていない。
Android 5.0からは、ART仮想マシンが標準となった。5.0に搭載されたバッテリー改善システムと、ARTの効率性の良さという組み合わせによって、バッテリー持続時間がAndroid 4.4と比較して1.37倍と大幅に伸びた。
ブートローダー(bootloader)とは、デバイスの電源を入れた際にフラッシュメモリ上にインストールされたLinuxカーネルを読み込み、そこからAndroidを起動させるシステムである。パソコンで例えると、BIOSという部分に相当する。ブートローダーのインターフェースは、一部の端末でアクセス可能である。多くの場合は、電源ボタンと音量ダウンボタンを同時押ししながら電源を入れて起動させる事ができる。起動後に表示されるインターフェースは、fastbootモードとも呼ばれる。ほとんどの携帯端末ではブートローダーにUbootが使用される。
アプリケーション開発用にはAndroid SDK(Software Development Kit)が、ランタイムとライブラリの開発用にはAndroid NDK(Native Development Kit)が無償提供されている。SDKとツール類は後述のAndroid Studioに含まれているほか、単独のコマンドラインツールも利用可能である。Android SDKに含まれる通信ツール「Android Debug Bridge」(adb)によって、Androidデバイス(携帯電話機/タブレットなど)とホストPCとをUSBで接続して、アプリケーションプログラムをデバイス上で実行しながらPC上でデバッグすることができる。Googleが有償で提供するSIMロックフリーの開発専用携帯電話機や他社の専用の携帯電話機エミュレータでないと、低レベルのランタイムとライブラリを書き換えることはできない。統合開発環境は、Android Studioが推奨されている。Android Studioの実行環境つまりホストとして対応しているOSは、Microsoft Windows、macOS、Linux(Ubuntuなど)、ChromeOSである。Visual Studio、IntelliJ IDEA、RAD Studioなど他の統合開発環境もAndroid開発に対応しているものがある。
当初はアプリケーション開発にEclipseと専用プラグイン(Android Development Tools:ADT)が利用されていた。Googleは、2013年5月15日に開催されたGoogle I/OでAndroid Studioと称する新たな統合開発環境を開発中であることを表明した。これはIntelliJ IDEAをベースにしたオープンソースによるAndroid専用の開発環境であり、ビルドツールとして従来のApache AntではなくGradleを採用している。また、レイアウトのデザインもよりグラフィカルで端末実機のイメージに近くなるとされる。2014年12月8日に正式版1.0がリリースされた。これに伴い、Eclipse用プラグインのサポートは2015年に終了した。
Android SDKでは、Android Virtual Device(AVD)と呼ばれるPC上で動作する仮想デバイスを用いることができる。対応CPUと同様にARM、MIPS、x86の3種類のアーキテクチャをエミュレーションするソフトウェアがSDKに同梱されており、これにロードされるシステムイメージもAndroidバージョンごとにそれぞれ提供されている。ユーザーがこれらを選択して、任意のAndroidバージョンとCPUエミュレータの組み合わせによるAVDを作成する。ただし、一般的なエミュレータと同様、他のコンピュータシステムをエミュレーションするために動作が非常に重く、快適なデバッグを行うことは難しい。これをカバーするため、仮想化支援機能をサポートしているx86アーキテクチャのCPUが搭載されたホストマシン上では、x86システムイメージによるAVDを高速化することができる。WindowsおよびmacOSにおいては、インテルが提供するIntel Hardware Accelerated Execution Manager(HAXM)によってIntel VTによるサポートを有効にすることができる。また、Linux版のSDKにおいては、x86エミュレータ自体がKVM上で動作させることが可能となっており、Intel VTまたはAMD-Vによるサポートによって高速化することができる。
ほとんどのAndroid端末には、プロプライエタリソフトウェアのGoogle Mobile Service(GMS)アプリがプリインストールされている。Google Play、マップ、ギャラリー、カレンダー、Gmail、トークなどが含まれる。GMSアプリの搭載は互換性テストのCompatibility Test Suite(CTS)を通過し、Googleにライセンスを与えられた端末のみ認められている。オープンソースのAndroidから派生して、これらのアプリが入っていない場合は、CyanogenMod Gappsなどからroot権限で /system フォルダにコピーしてインストール可能。
基本ハードウェアを「goldfish」と定義しており、SDKのQEMUエミュレータはそれを踏襲している。サポートしているスペックは下記の通り。ただし、2007年10月当時のスペックである。
メインメモリ:96MB
VRAM:8MB
画面サイズ:480×320画素(HVGA)、または320×240画素(QVGA)、ともに縦長または横長配置
歴代のコードネームのうち、バージョン1.5から9までは頭文字がバージョンの発表順にCからPまでのアルファベット順で始まる菓子の名前が付けられており、Androidロボットが各コードネームの菓子に扮していた。また、コードネームがエンドユーザー向けの製品別名として使われることもあった。バージョン10からはそのようなコードネームは付けられなくなり、コードネームはアルファベット1文字だけになった。また、バージョン10以降では、コードネームはエンドユーザー向けの製品別名としては使われなくなっている。
世界でのスマートフォンの販売台数のシェアの推移は以下の通り。
日本国内でのスマートフォンの利用者数(契約者数)の推移は以下の通り。
世界のタブレット出荷台数(電子書籍端末を除く)
日本国内のタブレット出荷台数(電子書籍端末を除く)
Android Studioでプロジェクトを新規作成するときに確認可能な、バージョンごとの世界シェア(2021年7月時点でのデータ)。
Androidのソースコードは、アプリケーション・フレームワークから標準ライブラリ、ランタイム、カーネルまでのすべてが公開され、改変も自由である。基本的にAndroidのソースコードのライセンスは、Apache License 2.0に準じるため、Androidを採用した企業・個人が改変部や付加部分をGPLのように公開する必要はない。ただし、WebKitのライセンスはLGPLであり、カーネルとそのライブラリなどのLinuxに基づく部分のライセンスはGPLであるため、公開が求められる。
Gmail、Googleマップ、Google検索、Google Playなどの一部のGoogle製アプリケーションは、Androidと密に連携しているがプロプライエタリなライセンスで提供されている。これらのGoogle製アプリケーションはGoogle Mobile Service認証をGoogleから受けた端末に対してのみ供給され、それらの端末でのみ動作が認められる。したがってカスタマイズしたAndroidに、これらのアプリケーションを載せるためには、カスタマイズを施したプロジェクトが個別にGoogleの許諾を得る必要がある。なお、アプリケーションをGoogle提供のファームウェアからバックアップし、権利を侵害していないカスタム版に再インストールする(カスタム版にはアプリケーションをバンドルしない)手法が説明される場合もあるが、Google Mobile Service認証を経ておらず、ライセンス違反の行為となる。
タブレット向けのバージョンであるAndroid 3.xはスマートフォンへの対応が不完全であるということを理由としてソースコードの公開が見送られていたが、4.0.1から再度公開に戻った。ただし、3.xのソースコードはGitの履歴の中に存在するだけで、Gitのタグとしては割り振られていない。
アンディ・ルービンが設立したプラットフォームベンダーである米Android社を、2005年にGoogleが買収したことから一時はGoogleが「gPhone」と呼ばれる独自の携帯電話端末の開発を進めているという憶測が流れた。2007年11月に「Open Handset Alliance」(オープン・ハンドセット・アライアンス、以下OHAと表記)を通じて新規プラットフォームの概要のみが発表される結果となった。
2007年11月5日 - 携帯電話用ソフトウェアのプラットフォームであるAndroidを、米検索最大手Google、米クアルコム、独通信キャリアのT-モバイル(T-Mobile International)などが中心となり設立した規格団体 OHAが発表した。
9月23日 - 米T-Mobile USA社は世界初の商用Android搭載端末としてT-Mobile G1を発表した。OHAはソフトウェア開発キット(SDK)の正式版「Android 1.0 SDK, Release 1」を発表した。OHAはAndroidの全ての動作環境を、2008年中にオープンソースライセンスの1つであるApacheライセンス Ver.2.0の下で公開する方針だとしている。OHAには上記の企業以外にも、日本のNTTドコモ、KDDI、テレフォニカなどの電気通信事業者や、米モトローラ、韓国サムスン電子、LGエレクトロニクスなどの携帯端末メーカー、米インテル、ブロードコム、NVIDIA、テキサス・インスツルメンツ、マーベルなどの半導体メーカーなど、大手企業が合わせて34社も参加している。
10月22日 - 世界初のAndroid搭載スマートフォン、「T-Mobile G1」がT-Mobile USAから全米向けに発売された。同時に、Googleはアプリケーションを販売するためのマーケット「Android Market」を開設した。
12月9日 - 新たにソフトバンクモバイル、ボーダフォン、東芝、ソニー・エリクソン・モバイルコミュニケーションズ、華為技術、エリクソン、オムロン、ASUS、ガーミン、ARMなどの14社がOHAに加わった事が発表された。
6月24日 - ソフトフロント、Android上で双方向VoIP通話に成功を発表。
9月 「Android 1.6 SDK」の提供を開始。
10月23日 - HT-03AでAndroid 1.6が提供開始。
11月8日 - 米国のベライゾン・ワイヤレスよりモトローラ製Android 2.0搭載のスマートフォン、「Motorola Droid」がアメリカで販売される。
1月5日 - Googleより、世界初のAndroid 2.1を搭載したNexus Oneが発売された。
12月16日 - Googleより、世界初のAndroid 2.3を搭載したNexus Sが米国で発売された。
2月24日 - モトローラ・モビリティより、世界初のAndroid 3.0を搭載したMotorola Xoomが米国で発売された。
11月17日 - Googleより、世界初のAndroid 4.0を搭載したGalaxy Nexusのグローバルモデル(GT-i9250)が欧州で発売された。
7月10日 - Android 4.1が公開された。最初にGalaxy Nexus、Motorola Xoom、Nexus Sのグローバルモデル向けにアップデートを開始した。
11月13日 - Android 4.2が公開された。Nexus 4とNexus 10に標準搭載されて発売された。
7月24日 - Android 4.3が公開された。Nexus 4、Nexus 7、Nexus 10向けのアップデートを開始。
11月1日 - Googleより、世界初のAndroid 4.4を搭載したNexus 5が発売された。
3月18日 - スマートウォッチ向けにカスタマイズされたAndroid Wearをリリース。
6月25日 - カーナビゲーションシステムのAndroid Autoを発表。
6月26日 - Android Lのデベロッパープレビュー版を、Nexus 5とNexus 7向けに提供開始。
9月15日 - Googleより、新興国市場向け低価格帯スマートフォンのAndroid Oneが発表された。
10月15日 - Android Lの正式版となるAndroid 5.0が発表された。