Android (オペレーティングシステム)

Googleが開発しているオペレーティングシステム

Android(アンドロイド)は、Googleが開発した汎用モバイルオペレーティングシステムである[3][4][注釈 1]Linuxカーネルオープンソースソフトウェアがベースで、主にスマートフォンタブレットなどのタッチスクリーンモバイルデバイス向けにデザインされている。PC用にはAndroid-x86、テレビ用にはAndroid TV、自動車用にはAndroid Auto、ウェアラブルデバイス用にはWear OS(旧:Android Wear)がある。世界で最もよく使われているオペレーティングシステムであり、2021年5月時点で30億台を超えるアクティブデバイスがある[7]iPhoneと区別する為に、Androidスマートフォンをさす呼称としても使われる[8]

Android
開発者
開発状況開発中
ソースモデルFOSS
初版2008年9月23日 (15年前) (2008-09-23)
最新安定版Android 14 - 2023年10月4日 (6か月前) (2023-10-04)[1] [±]
最新開発版なし [±]
リポジトリ ウィキデータを編集
プラットフォームARMMIPSx86x64
カーネル種別モノリシックカーネル
ライセンスApache 2.0、GPLv2、LGPLなど[2]
ウェブサイトandroid.com ウィキデータを編集
サポート状況
サポート中
テンプレートを表示

概要

2003年アンディ・ルービン、リッチ ・マイナー、ニック・シアーズ、クリス・ホワイトがアメリカカリフォルニア州パロアルトに携帯電話向けソフトウェアプラットフォームを開発するAndroid社を設立した。2005年にGoogleがAndroid社を買収[9]し、一時はGoogleが「gPhone」という独自の携帯電話端末の開発を進めているという憶測が流れた[10]。2007年11月5日、携帯電話用ソフトウェアのプラットフォームであるAndroidを、Google[11][12][13]、米クアルコム通信キャリアのT-モバイル(T-Mobile International)などが中心となり設立した規格団体「Open Handset Alliance」(オープン・ハンドセット・アライアンス、OHA)が発表した。

無償で誰にでも提供されるオープンソースオープンソースソフトウェア)であり[14]サードパーティーのベンダーが独自にカスタマイズしやすくすることを目的として、Apache License 2.0に基づいて配布されている。2008年10月からは対応する携帯電話が多数販売されている。

競合するモバイル向けプラットフォームは、AppleiOS/iPadOS/watchOS/tvOSがある。過去の競合にはマイクロソフトWindows Mobile/Windows Phone/Windows 10 MobileアクセンチュアSymbian OSクアルコムのBrew MP、ブラックベリーBlackBerryLinux FoundationTizenなどがあった。Googleはスマートフォンタブレット腕時計スマートウォッチ)以外にもゲーム機冷蔵庫といった領域にもAndroidを搭載させる考えである[15]

Android OSを搭載するスマートフォンとタブレットはベンダー各社から発売されており、それぞれベンダー固有のブランド名が付けられている。これらはAndroidスマートフォンやAndroidタブレットというような総称で呼ばれる[16][17][18][19][20]。主な競合はiOSあるいはiPadOSを搭載するiPhoneおよびiPadである。

特徴

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

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

Androidのユーザーインターフェース

Androidのユーザーインターフェース(UI)はサードパーティーの端末メーカーによるカスタマイズが許可されており、通例メーカーごとに独自のUIが搭載されている。カスタマイズが施されていない標準のAndroidは通称AOSP版と言われ、Android Open Source Projectのソースコードから直接ビルドしたものを指す。また、メーカーやサードパーティーが開発したものはカスタムROMと言われている。

Androidの基本操作はタッチインターフェースとなっており、指を使って直感的な操作ができるようになっている。表示されたボタン類を押すタップ、長押しタップ(つまむ)、画面端からタップスライドしてメニュー類を表示するスワイプ、マルチタッチによるピンチや回転などができるようになっている[21]。画面をタップした際に、ボタンを押したという感覚を起こさせるために、本体をバイブで振動させる機能を持ち合わせる。ジャイロスコープGPS加速度センサーなどのハードウェアをサポートしており[22]、アプリケーション側からそれらにアクセスして活用する事もある。ジャイロスコープは端末を縦向きから横向きに変更する際に使われる事が多い。ゲームの例ではレースゲームで車をハンドル操作する際、端末を傾けてハンドル操作に当てはめるものがある[23]

ホームスクリーン上には、パソコンデスクトップ画面のようにアプリケーションのアイコンが並び、アプリをインストールするとホームスクリーン上に自動的に配置される。また長押しタップでアイコンを移動したり、フォルダを作成して格納する機能を持つ。これに加えてウィジェットを配置できるようになっている。ウィジェットは、天気予報ニュースなどのライブ情報などがあり、ホームスクリーンから直接見ることができる。ホームスクリーンは画面外にも複数用意されており、画面を左右にスワイプすることで複数のホームスクリーン間を移動できる[24]

画面上部にはステータスバーが配置されている[25]。ステータスバーは、通知やシステムの状態情報を表示するためのシステムUIである[26][27]。ステータスバーには通信状態やシステムサービス(Google Mobile Serviceなど)の稼働状況、バッテリー残量、時刻などが表示される。ステータスバーを下方にスワイプすることでクイック設定パネルが表示され、頻繁に使われる機能や各種システム設定(例えばWi-Fi/Bluetooth/機内モード/画面自動回転のON/OFFボタンなど)に素早くアクセスすることができる。クイック設定パネルの下部には通知ドロワーが表示され、通知の詳細を確認したり、各通知からのアプリ操作につなげたりすることができる[28]。通知はステータスバーにもアイコンとして表示され、例えば新着のメールSMSを受信したりデバイスを接続したりしたときに、ユーザーに作業を中断させることなく知らせることができる。

画面下部には「戻る」ボタン/「ホーム」ボタン/「マルチタスク」(アプリケーションリスト)ボタンによる各操作を実行できるナビゲーションバーが、Android 3.x、および4.0以降から配置されている[29]。これ以前のバージョンでは、ハードウェアキー(物理ボタン)方式が主流であった。Android 9 Pieでは「ホーム」ボタンと「マルチタスク」ボタンが削除され、スワイプジェスチャーに置き換えられた[30]。ただし、端末メーカーによっては従来のナビゲーションバーを採用しているものや、設定によって従来のナビゲーションバーを利用できるようになるものもある。Android 10では「戻る」ボタンも削除された[31]

文字の入力

Androidには文字入力のためのIMEを搭載しており、テキストボックスや検索ボックスなどの入力エリアをタップするなどしてフォーカスを当てると画面上に仮想キーボードが表示される。この仮想キーボードを、タップやスワイプ操作することによって文字を入力できるようになっている。IMEはサービスアプリケーションとして動作し、エンドユーザーが自由にサードパーティー製のIMEをインストールすることも可能になっている。IMEとハードウェアが対応していれば、BluetoothUSB接続の外付けキーボードを接続して入力することができる。また発声によって文字入力を行う音声入力システムも備える。Googleあるいはサードパーティー製の手書き入力アプリを利用して、指やスタイラスペンなどで書いた文字を認識させることもできる。

なお2018年現在、Android OSには標準で日本語入力用のIMEが搭載されていない。そのため、日本語入力を行うには、Google 日本語入力ATOKなどのサードパーティー製IMEをインストールする必要がある。日本国内で販売されている端末は、最初から日本語入力できるようにiWnnPOBox TouchS-ShoinATOKFSKARENなどが、メーカーによって搭載されている。一部のAndroidデバイスでは、Google純正の新たなIMEであるGboardが最初から搭載されており[32]、また2017年11月にはGboardが日本語に対応し、追加の言語およびキーボードレイアウトをダウンロードするだけで日本語入力ができるようになった。

アプリケーション

Googleの認可を受けた端末には、アプリケーションマーケットとしてGoogle Play(旧 Androidマーケット)がインストールされている[33]。多くの端末では、このGoogle Playからアプリコンテンツをダウンロードして使えるようになっている。2019年9月時点のGoogle Play内では、280万本を超えるアプリケーションが提供されている[34]

GoogleはGoogle Playを経由しないアプリ配布も認めており、APKファイルから直接インストールできるようになっており[35]、それらのアプリは野良アプリと呼ばれる。ただし一見普通のアプリに見える悪質なアプリ(マルウェア)も存在するため、公式マーケット以外からのダウンロードには細心の注意が必要である[36]

Androidで表示されるホーム画面を表示させるアプリケーションのことはホームアプリと呼ばれる。たくさんのアプリが公開されており、ユーザーは好きなものを選ぶことができる。別名、ランチャー(Launcher)とも呼ばれる。

構成

Androidは、カーネルからミドルウェア、ユーザーインターフェースウェブブラウザ、電話帳などの標準的なアプリケーション・ソフトウェア群までを1つのパッケージにして提供されている。

カーネルにはLinuxの関連技術が使用されているが、その他の部分は様々な技術が用いられており、例えば標準Cライブラリ(libc)のBionic英語版NetBSDのlibcとLinuxのlibcを組み合わせたものをベースにしている。

Androidのアーキテクチャ[11]
機能
携帯電話網への対応GSMUMTSCDMA2000EV-DOLTE3G4G5G
その他のネットワーク対応Bluetooth無線LANNFC
各種ハードウェアへの対応衛星測位システム加速度センサ磁気センサ、2D/3D描画支援ハードウェア(GPU)など
ウェブブラウザChromiumベースのブラウザが組み込まれている(4.3まではWebKitベース)。この機能は、他のアプリケーションからも利用可能である。
メールショートメッセージサービス(SMS)及びマルチメディアメッセージングサービス(MMS)が利用可能である。
その他のアプリケーションJavaで作成されたアプリケーションを独自のDalvik仮想マシン/Android Runtime上で動かすことができる。Android 5.0以降では標準の仮想マシンがAndroid Runtime(ART)に変更された。Dalvik/ARTは通常のJava仮想マシンとは異なり、メモリの消費が低く抑えられているなど、モバイル向けに最適化された設計となっている。
アプリケーションマーケットGoogleにより、Android用アプリケーションを配布、販売するGoogle Play Storeが運営されている。
マルチタッチネイティブに対応しており、HTC Heroなどの機種でサポートされている。ただし、Appleによる特許訴訟を避けるため、2010年2月までは、初期的にはカーネルレベルで無効化されていた[37]
データストレージAPIデータ保存用にSQLiteが組み込まれている。
マルチメディアAPIMedia Frameworkと呼ばれる映像と音声用のライブラリにより、H.263H.2643GPP/MP4コンテナ)、H.265MPEG-4 SP、WebMAMR、AMR-WB(3GPPコンテナ)、AACHE-AAC(MP4/3GPPコンテナ)、MP3MIDIVorbisWAVJPEGPNGHEIFGIFBMPWebPなどに対応している。
フォントFreeTypeフォントライブラリ[38]により、TrueTypeType1OpenTypeなどのフォント形式に対応している。
その他のライブラリOpenGL ESVulkanOpenSL ESOpenMAX AL、Skia(SGL)、SSLzlib標準Cライブラリ(Bionic)、標準C++ライブラリ(libstdc++/libc++)など

プログラミング言語

カーネルとライブラリ、ランタイムはほとんどがC言語またはC++で記述されているが、2021年から新規コードのデフォルト言語をRustにしており[39]、2022年12月現在では新規コードのRustの占める割合が21%に達している[39]。アプリケーションとアプリケーション・フレームワークは、Google独自に構築した仮想マシンであるDalvik仮想マシンまたはAndroid Runtime(ART)上の「Java Platform, Standard Edition(Java SE)のサブセット+Android拡張」環境で記述する[40]プリインストールされたアプリ、エンドユーザーが後からインストールするアプリを問わず、共通の仮想マシンおよびフレームワークを使用する。

対応CPU

Googleが公式サポートしているCPUはARM(ARMv5以降)、MIPSx86である。ARM以外の環境はAndroid 2.3から対応した。端末シェアの多くはARMv7とARMv8が占めているが、日本においては2014年3月に大手家電量販店のビックカメラが自社ブランド製品としてIntel Atom搭載のタブレットを発売[41]するなど、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アプリケーションを動作させることもできる[42]

Androidアプリケーションのパッケージ(APK)には、各種プロセッサのアーキテクチャ固有命令を含むネイティブライブラリを複数含めることができる。エミュレーションにより、x64プロセッサ上でARM32/ARM64ネイティブライブラリのみを含むAndroidアプリケーションを動作させることもできるが、オーバーヘッドを伴う。

カーネル

AndroidのカーネルではLinuxカーネルに独自パッチ[1]を当てたAndroid共通カーネル(ACK)が使われている[43]

ACK 5.4より前は各プロセッサーベンダー毎にACKを派生したベンダーカーネルがあり[44]、製品メーカーは製品毎にベンダーカーネル派生のプロダクトカーネルを用意していた[44]が、ACK 5.4以降は外部モジュールを読み込むためのカーネルモジュールインターフェース(KMI)を提供する汎用カーネルイメージ(GKI)となり[44]、各プロセッサーベンダーはベンダーモジュールを提供する形となった[44]

種類カーネルのURL
Android共通カーネル(ACK)https://android.googlesource.com/kernel/common/
CodeLinaroのカーネル関連コード
Code Aurora Forumの後継[45]
https://git.codelinaro.org/clo/la/kernel/

ハードウェア寄りでは開発組織 Linaro英語版がベンダー固有コードの本家Linuxカーネルへの還元(アップストリーミング)を続けている[46]

またAndroid共通カーネルも少しずつ本家Linuxカーネルへの還元が進んでおり、本家Linuxで受け入れられなかった独自機能もだんだん標準機能やユーザー空間への置き換えが進んでいる。

機能過去のAndroidカーネルAndroidカーネル 6.1現在(太字はAndroidカーネル独自機能)
プロセス間通信(IPC)BinderBinder(./drivers/android/内)
匿名共有メモリashmemashmem(./drivers/staging/android/内)又は memfd
(ashmemは本家Linuxで削除された[47][48]もののアプリの一部で必要となる[49]
ログLoggerユーザー空間デーモン(logd)
早期OOMlow memory killerPSIモニター+ユーザー空間デーモン(lmkd)[50]
連続メモリアロケータCMEM/NVMAP/PMEM
ION[51]
DMA-BUF[52]
データ使用量モニタリングxt_qtaguideBPFベース[53]
ネットワーク権限Paranoid networkeBPFベース[53]
リモート操作(ADBのデバイス側)adb USB gadget[54]FunctionFS gadget+ユーザー空間デーモン(adbd)[55][54]

仮想マシン

Android 4.4以前のバージョンで動作するアプリケーションは、基本的にはDalvik仮想マシン(VM)上で動作する。DalvikはJavaのオープン実装であるApache Harmonyをベースとしているが、Java APIセットからはSwingAWTなどが除去され、Android専用のUIフレームワークや独自ライブラリなどが追加されている。Java CDCのAPIは、全てではないが、概ね含まれている。なお、オラクル(旧:Sun)Javaの互換性テストを通過していないため、正式なJavaではない。APIセットはJava Platform, Micro Edition(Java ME)とも異なる。Android 7.0 Nougat以降はJava APIライブラリの実装がOpenJDKベースになった[56]

Googleから提供されているソフトウェア開発キットでは、Javaプラットフォームによるプログラミング環境と、C/C++による開発がサポートされている。Java以外にも、Javaプラットフォーム向けの複数の言語(ScalaKotlin)で書かれたプログラムがDalvik/ART上で動作する。Java Native Interface(JNI)を利用して、JavaとC/C++間で相互運用することも可能である。Android 2.3以降ではNative Activityのサポートにより、使用可能なAPIの制約はあるもののC/C++のみでアプリケーションを開発することも可能になっている。また、.NET Framework互換環境の1つであるMonoもAndroidに対応しており、XamarinMicrosoft Visual Studioを利用することで、.NET言語(C#/F#)を使用してAndroidアプリケーションを開発することができる[57][58]

Android 4.4(KitKat)からは、デベロッパー向けに新たな仮想マシンAndroid Runtime(ART)が実装された。ARTは、Dalvikよりもアプリケーションの動作効率などを向上させることを目的に開発された[59]。Dalvikの場合、多様なハードウェアに対応できるよう、アプリを中間コードの状態で保管しておき、実行直前にネイティブコードに変換して動作させるJITコンパイル方式が採用されている。一方でART仮想マシンは、予め最初からネイティブコードに変換しておくため(ahead-of-time:AOT)、実行速度や動作速度が向上する[60]。Android 7.0以降のARTではAOTとインタープリタとJITをミックスしたハイブリッド手法が採用された[61]

なお、Android 4.4では依然としてDalvikが標準となっており、ARTを用いるためには開発者向けオプションで設定が必要である。ただし、アプリケーションによってはART上では正常動作しないものもあり、Dalvikとの完全互換は保証されていない[62]

Android 5.0からは、ART仮想マシンが標準となった。5.0に搭載されたバッテリー改善システムと、ARTの効率性の良さという組み合わせによって、バッテリー持続時間がAndroid 4.4と比較して1.37倍と大幅に伸びた[63]

ブートローダー

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

開発環境

アプリケーション開発用にはAndroid SDK(Software Development Kit)が、ランタイムとライブラリの開発用にはAndroid NDK(Native Development Kit)が無償提供されている。SDKとツール類は後述のAndroid Studioに含まれているほか、単独のコマンドラインツールも利用可能である[65]。Android SDKに含まれる通信ツール「Android Debug Bridge」(adb)によって、Androidデバイス(携帯電話機/タブレットなど)とホストPCとをUSBで接続して、アプリケーションプログラムをデバイス上で実行しながらPC上でデバッグすることができる。Googleが有償で提供するSIMロックフリーの開発専用携帯電話機や他社の専用の携帯電話機エミュレータでないと、低レベルのランタイムとライブラリを書き換えることはできない[40]統合開発環境は、Android Studioが推奨されている。Android Studioの実行環境つまりホストとして対応しているOSは、Microsoft WindowsmacOSLinuxUbuntuなど)、ChromeOSである[65]Visual StudioIntelliJ IDEARAD Studioなど他の統合開発環境もAndroid開発に対応しているものがある。

当初はアプリケーション開発にEclipseと専用プラグイン(Android Development Tools:ADT)が利用されていた。Googleは、2013年5月15日に開催されたGoogle I/OでAndroid Studioと称する新たな統合開発環境を開発中であることを表明した[66]。これはIntelliJ IDEAをベースにしたオープンソースによるAndroid専用の開発環境であり、ビルドツールとして従来のApache AntではなくGradleを採用している。また、レイアウトのデザインもよりグラフィカルで端末実機のイメージに近くなるとされる。2014年12月8日に正式版1.0がリリースされた[67]。これに伴い、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によるサポートによって高速化することができる。

Google Mobile Service

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

エミュレーション・モデル

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

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

バージョン

歴代のコードネームのうち、バージョン1.5から9までは頭文字がバージョンの発表順にCからPまでのアルファベット順で始まる菓子の名前が付けられており、Androidロボットが各コードネームの菓子に扮していた。また、コードネームがエンドユーザー向けの製品別名として使われることもあった。バージョン10からはそのようなコードネームは付けられなくなり[69]、コードネームはアルファベット1文字だけになった[70][71]。また、バージョン10以降では、コードネームはエンドユーザー向けの製品別名としては使われなくなっている。

シェア

スマートフォン

世界でのスマートフォンの販売台数のシェアの推移は以下の通り[72][73][74][75][76][77][78][79][80][81][82][83][84][85][86][87][88]

時期総数AndroidiOSSymbianBlackBerryBadaMicrosoftその他
2009年第2四半期40,971,8001.8%13.0%51.0%19.0%9.3%5.8%
2009年第3四半期41,093,3003.5%17.1%44.6%20.7%7.9%6.2%
2009年第4四半期
2010年第1四半期54,505,5009.6%15.3%44.2%19.7%6.8%4.4%
2010年第2四半期62,058,10017.2%14.1%40.9%18.7%0.9%4.9%3.2%
2010年第3四半期81,132,60025.3%16.6%36.3%15.4%1.1%2.7%2.5%
2010年第4四半期101,150,30030.5%15.8%32.3%14.6%2.0%3.4%1.5%
2011年第1四半期99,775,00036.4%16.9%27.7%13.0%1.9%2.6%1.5%
2011年第2四半期107,740,40043.4%18.2%22.1%11.7%1.9%1.6%1.0%
2011年第3四半期115,185,40052.5%15.0%16.9%11.0%2.2%1.5%0.9%
2011年第4四半期149,041,80050.9%23.8%11.7%8.8%2.1%1.9%0.8%
2012年第1四半期144,391,70056.1%22.9%8.6%6.9%2.7%1.9%0.9%
2012年第2四半期153,686,10064.1%18.8%5.9%5.2%2.7%2.7%0.6%
2012年第3四半期169,178,60072.4%13.9%2.6%5.3%3.0%2.4%0.4%
2012年第4四半期207,662,40069.7%20.9%1.2%3.5%1.3%3.0%0.3%
2013年第1四半期210,046,10074.4%18.2%0.6%3.0%0.7%2.9%0.3%
2013年第2四半期225,326,20079.0%14.2%0.3%2.7%0.4%3.3%0.2%
2013年第3四半期250,231,70081.9%12.1%0.2%1.8%0.3%3.6%0.2%
2013年第4四半期
2014年第1四半期281,636,90080.8%15.3%0.6%2.7%0.6%
2014年第2四半期290,384,40083.8%12.2%0.7%2.8%0.5%
2014年第3四半期305,384,00083.3%12.5%0.8%3.0%0.4%
2014年第4四半期367,334,40076.0%20.4%0.5%2.8%0.4%
2015年第1四半期336,054,40078.9%17.9%0.4%2.5%0.4%
2015年第2四半期329,676,40082.2%14.6%0.3%2.5%0.4%
2015年第3四半期352,844,00084.7%13.1%0.3%1.7%0.3%
2015年第4四半期403,109,40080.7%17.7%0.2%1.1%0.2%
2016年第1四半期349,251,40084.1%14.8%0.2%0.7%0.2%
2016年第2四半期344,359,70086.2%12.9%0.1%0.6%0.2%
2016年第3四半期373,292,50087.8%11.5%0.1%0.4%0.2%

日本国内でのスマートフォンの利用者数(契約者数)の推移は以下の通り[89][90][91][92][92][93][94][95][96]

時期総数AndroidiOS(iPhone)Microsoftその他調査会社
2010年6月435,0002,557,0002,144,000コムスコア
2010年9月5,702,000841,0003,347,0001,475,00039,000コムスコア
2010年12月6,975,0002,174,0003,787,000831,000183,000コムスコア
2011年3月9,764,0004,601,0003,906,0001,257,000コムスコア
2011年11月15,100,00061.0%33.0%5.7%0.3%コムスコア
2012年2月19,300,00061.4%34.2%3.9%0.5%コムスコア
2012年3月62.2%33.7%3.7%0.4%コムスコア
2012年6月24,086,00064.1%32.3%3.2%0.4%コムスコア
2013年1月40,610,00063.3%34.8%1.9%MM総研
2013年9月50,150,00063.0%35.6%1.4%MM総研
2014年3月57,340,00057.1%41.8%1.2%MM総研
2017年10月31.8%68.2%ウェブレッジ
2019年8月40.8%59.2%ウェブレッジ
2019年12月42.08%57.02%ウェブレッジ
2020年5月39.6%60.4%BCN

タブレット

世界のタブレット出荷台数(電子書籍端末を除く)[97][98][99][100][101][102][103][104][105][106]

時期総数AndroidiOSWindowsその他調査会社
2010年第4四半期10,700,00029.0%68.2%2.8%Strategy Analytics
2011年第2四半期15,042,00029.2%61.4%8.6%Strategy Analytics
2011年第3四半期17,200,00029.2%64.5%6.4%Strategy Analytics
2011年第4四半期26,800,00039.2%57.4%1.9%Strategy Analytics
2012年第1四半期18,700,00034.2%63.1%2.7%Strategy Analytics
2012年第2四半期24,944,00029.3%68.3%2.4%Strategy Analytics
2012年第3四半期24,700,00041.3%56.7%2.0%Strategy Analytics
2012年第4四半期52,500,00043.6%IDC
2013年第1四半期40,600,00043.4%48.2%7.4%1.0%Strategy Analytics
2013年第2四半期51,700,00067.0%28.3%4.5%0.2%Strategy Analytics
2013年第3四半期47,600,00029.6%IDC

日本国内のタブレット出荷台数(電子書籍端末を除く)[107][108][109][110][111][112][113][114]

時期総数AndroidiOSWindowsその他調査会社
2010年4月 - 2010年9月350,00020,000320,00010,000ICT総研
2010年10月 - 2011年3月540,00050,000480,00010,000ICT総研
2011年4月 - 2011年9月1,180,000370,000780,00030,000ICT総研
2011年10月 - 2012年3月1,580,000490,0001,040,00050,000ICT総研
2012年4月 - 2013年3月5,680,00042.4%52.5%0.0%5.1%MM総研
2013年4月 - 2014年3月7,480,00045.7%43.8%10.5%-MM総研
2014年4月 - 2015年3月9,290,00045.7%43.9%10.4%-MM総研
2015年4月 - 2016年3月9,030,00046.0%40.0%14.1%-MM総研

バージョン

Android Studioでプロジェクトを新規作成するときに確認可能な、バージョンごとの世界シェア(2021年7月時点でのデータ)[115][116]

バージョンコードネームリリースAPIシェア
4.0.3 - 4.0.4Ice Cream Sandwich2011年10月18日150%
4.1Jelly Bean2012年7月9日160%
4.22012年11月13日170%
4.32013年7月24日180%
4.4KitKat2013年10月31日190.3%
5.0Lollipop2014年11月3日210.3%
5.12015年3月9日220.3%
6.0Marshmallow2015年10月5日231.9%
7.0Nougat2016年8月23日242.0%
7.12016年12月5日255.0%
8.0Oreo2017年8月21日267.0%
8.12017年12月5日275.3%
9Pie2018年8月6日2817.7%
10Q2019年9月3日2934.5%
11R2020年9月8日3025.9%
12S2021年10月4日31未計測
13Tiramisu2022年8月16日33未計測

ライセンス

Androidのソースコードは、アプリケーション・フレームワークから標準ライブラリ、ランタイム、カーネルまでのすべてが公開され、改変も自由である。基本的にAndroidのソースコードのライセンスは、Apache License 2.0に準じるため、Androidを採用した企業・個人が改変部や付加部分をGPLのように公開する必要はない。ただし、WebKitのライセンスはLGPLであり、カーネルとそのライブラリなどのLinuxに基づく部分のライセンスはGPLであるため、公開が求められる[40]

Gmail、Googleマップ、Google検索、Google Playなどの一部のGoogle製アプリケーションは、Androidと密に連携しているがプロプライエタリなライセンスで提供されている[117]。これらのGoogle製アプリケーションはGoogle Mobile Service認証をGoogleから受けた端末に対してのみ供給され、それらの端末でのみ動作が認められる。したがってカスタマイズしたAndroidに、これらのアプリケーションを載せるためには、カスタマイズを施したプロジェクトが個別にGoogleの許諾を得る必要がある。なお、アプリケーションをGoogle提供のファームウェアからバックアップし、権利を侵害していないカスタム版に再インストールする(カスタム版にはアプリケーションをバンドルしない)手法が説明される場合もあるが、Google Mobile Service認証を経ておらず、ライセンス違反の行為となる。

タブレット向けのバージョンであるAndroid 3.xはスマートフォンへの対応が不完全であるということを理由としてソースコードの公開が見送られていた[118]が、4.0.1から再度公開に戻った[119]。ただし、3.xのソースコードはGitの履歴の中に存在するだけで、Gitのタグとしては割り振られていない[120]

歴史

アンディ・ルービンが設立したプラットフォームベンダーである米Android社を、2005年にGoogleが買収[9]したことから一時はGoogleが「gPhone」と呼ばれる独自の携帯電話端末の開発を進めているという憶測が流れた[10]2007年11月に「Open Handset Alliance」(オープン・ハンドセット・アライアンス、以下OHAと表記)を通じて新規プラットフォームの概要のみが発表される結果となった。

世界での発売端末

セキュリティ

Android 6.0 以降の権限管理画面。5.1.1 以前と比べ、個別に権限を管理することができる。

Androidのアプリケーションは、スーパーユーザー権限(root)を要求する一部のアプリを除き、システムの重要領域やユーザー情報にアクセスできないようサンドボックスで動作する[139]

権限に関してはユーザーに視覚的にわかるように、アプリをインストールする際、必要な権限のリストを表示する機能がある。例えば「Google マップ」の場合は、位置情報の読み取り(GPSへのアクセス)があり、「カメラ」だと撮影マイクによる録音などの権限がリストに表示される。この機能によって、アプリケーションに無関係な権限を要求された際には、ユーザーが確認できる[140][141]

Android 4.3ではアプリ毎に権限を設定できる機能が実験的に追加されたが、アプリケーションの互換性を損なう恐れがあるという理由で4.4では無効になった[142]

端末をスリープ解除する際には、ロック画面にPINコードやパターンロックを割り当てる事もできる。これに加えてAndroid 5.0以降では、自宅にいる時、スマートウォッチが接続されている時などの条件に応じて自動でロック解除できるスマートロック機能もある。

盗難などで不正にファクトリーリセットされた端末は、Android Device Protection(アンドロイド デバイスプロテクション)という保護機能が働く。デバイスプロテクションが作動すると、直前オーナーのGoogleアカウントにログインしなければ全ての機能が使えないようロックされる。

その他に、端末の位置を逆探知したりリモートロックできるAndroid デバイス マネージャー(ADM、スマートフォンを探す)も提供されており、盗難や置き忘れの対応策のひとつとされている。

日本でのセキュリティ

トレンドマイクロ社によると、2012年1月から3月の間に、Androidの不正アプリが約5,000種発見されたとしている。また、同社では、2012年4月に人気アプリである写真共有サービス「Instagram」や、アクションパズルゲーム「Angry Birds Space」などの偽アプリ配布サイトが存在し、特定のWebサイトにアクセスし、モバイル端末に他のファイルをダウンロードするなど、不正な動作を行う偽アプリがダウンロード出来るようになっていたことを確認している。「Google Play(旧Android Market)」などの公式サイトにおいて偽アプリが確認されるケースもある。

このような課題に早急に対応していくために、日本は、2011年10月に「スマートフォン・クラウドセキュリティ研究会」を設置し、スマートフォンを狙うマルウェア等に対する事業者等における対策の在り方や、利用者への情報セキュリティ対策の啓発の必要性について検討を進めてきた。同研究会では、同年12月の中間報告で、スマートフォン利用者が最低限取るべき情報セキュリティ対策として、「スマートフォン情報セキュリティ3か条」33を提唱し、2012年6月に最終報告を取りまとめた。また、2011年12月に「利用者視点を踏まえたICTサービスに係る諸問題に関する研究会」において「スマートフォンを経由した利用者情報の取扱いに関するWG」が開催され、スマートフォンにおける利用者情報が安心・安全な形で活用され、利便性の高いサービス提供につながるよう、諸外国の動向を含む現状と課題を把握し、利用者情報の取扱いに関して必要な対応等の検討が進められている。2012年4月には、スマートフォンを巡るサービス構造、利用者情報の取扱いに関する現状、利用者情報の管理等の在り方及び利用者に対する周知の在り方等の今後の論点を取りまとめた中間取りまとめ及び利用者自身が注意すべき事項を整理した「スマートフォンプライバシーガイド」34が公表された[143]

組み込み用Android

"Open Embedded Software Foundation"(OESF)がAndroidを基に、機能を追加した組み込み用プラットフォームを開発中である。OESFのWebには2005年からのタイムスタンプがある。日本のOESFはWebによると2009年2月12日に設立された。2011年3月現在のバージョンは、Android 2.2を基にしEM3(OESF Embedded Master 3)と呼ばれる。2011年3月にオープンソースとして一般向けに公開された[144]

IP電話、デジタルテレビ、マルチメディア、DLNA、Bluetooth、リモートコントロール、ポインティング・デバイス、ネットワーク管理、ユーザーインターフェース、SDKなどの機能拡張を行ってアプリケーション・フレームワークより上位のAPIから使用する。EM1の機能拡張は全てではないと推測されるが、Linuxカーネル部分と同じ深さでハードウェア上に直接載る低レベルで実装される。EM2は、Android 2.0を元に開発され、2010年10月に公開された。Androidそのものが軽量化を意図して設計されているが、OESF版ではさらに基本コンポーネントだけに絞り、必要な機能を選んで追加できる[145]

Android Go Edition

Android Go editionは、Googleが開発者カンファレンス「Google I/O 2017」において「Android Go」プロジェクトとして発表された。メモリーやストレージが少ないローエンド端末でもAndroidが効率的に動作するように設計されており、Android 8.1 Oreoで動作するメモリー1GB以下のデバイス向けに最適化されている。

マスコット

Androidのロゴには緑色のロボットのマスコットキャラクターが使われており、正式名称は「Android ロボット」(Android robot)[146][147]だが、日本では「ドロイド君」の愛称で呼ばれている。海外ではBugdroidという愛称が使われることもある。

Androidロボットのアートワークはクリエイティブ・コモンズ・ライセンスに基づいて配布されているが、商標権はGoogleが保有する。

イースターエッグ

Android 2.3 Gingerbread以降からは、ジョークの画像やアニメーションを表示する機能が隠されている。いわゆるイースターエッグと呼ばれるものである。この機能にアクセスするには、端末の設定情報から端末情報を開き、一覧にあるAndroidのバージョンを3回連続でタップすると表示される。なおAndroidのバージョンによって、表示される内容が異なる。

  • 2.3(ジンジャーブレッド) - ゾンビの群れ中にAndroidのロボットが表示される。このイラストは、多くのゾンビアートを手がけるジャック・ラーソンによって描かれた。
  • 3.x(ハニカム) - Androidのロボットを、昆虫デフォルメしたイラスト。
  • 4.0(アイスクリームサンドイッチ) - 黒いビスケットに包まれたアイスクリーム状のロボットイラスト。ロングタップすると、8ビットデザインのロボットが無数に飛び交うアニメーションに移動する。
  • 4.1-4.3(ゼリービーンズ) - ゼリービーンズの形をする笑ったAndroidロボットが表示される。ロングタップすると、それが無数に飛び交うアニメーションに切り替わる。ロボットはタップして移動したり弾き飛ばす事ができる。
  • 4.4(キットカット) - アルファベットK(殆どの端末ではビルド番号の頭文字か数字)が表示され、左右をタップすると回転する。数回タップする事で、キットカットのロゴデザインを象ったAndroidロゴが表示される。ここからロングタップすると、4.4以前で全ての歴代バージョンのアイコンがタイル型のインターフェースで表示されるデザートケースの画面に移る。
  • 5.x(ロリポップ) - ペロペロキャンディが表示され、キャンディの部分をタップすると色が変化する。そこから何回かタップして更にロングタップすると、Flappy Birdに似たゲームで遊べる。JRummy Appsによって難易度調整機能が付いた『Lollipop Land』のゲームアプリが公開されている。
    • L(デベロッパービルド) - Android Lの開発者プレビュー版は、ランダムと大きさをした四角形が表示され、下部にビルド番号が表示される。ロングタップすると、4.4と同じくタイル型のインターフェースが表示される。
  • 6.0(マシュマロ) - マシュマロが表示され、ロリポップとは違いマシュマロの部分をタップしても色は変化しない。ロングタップすると、Flappy Birdに似たゲームで遊べるのは同一だが一つの端末で最大6人までのマルチプレイに対応したりタップ位置が表示されるようにもなった。
  • 7.x(ヌガー) - アルファベットのNが表示され、タップしても変化しない。ロングタップすると、猫のアイコンが表示され、クイック設定の編集を押すと猫のアイコンで「????」のメニューが追加される。猫のアイコンをクイック設定に追加すると皿のアイコンに変化し、皿のアイコンをタップするとねこあつめに似たゲームで遊べる。
  • 8.x(オレオ)- スワイプするとタコが画面内でスワイプした方向に合わせて泳ぎ回る。
  • 9(パイ)- 簡易的なペイントツールでお絵描きをすることができる。
  • 10 -「0」と「1」を重ねて「Q」を作り、作成した「Q」をタップすると、お絵かきロジックを遊ぶことができる。
  • 11 - ダイヤルを11に回すと、ディスプレイの下部、ナビゲーションバーの上に小さな猫の絵文字が表示される。
  • 12 - 時計が現れ、長針を回し12時ちょうどに合わせると中心に「12」とともに模様が現れる。

システム領域のカスタマイズ

root化

Androidでも、セキュリティ等の理由からユーザーやアプリケーションがある階層以上にしかアクセスできないように制限がなされている。その制限を解除し最低階層にアクセスできるようにすることを、root化(rooting)、root権を取るという。これにより、より高度な動作をするソフトウェアが実行可能になるが、ほとんどの場合販売元との規約に反するため、サポートを受けられないなどのデメリットが生じる。iOSでのjailbreakに近い。

ただ、AndroidセキュリティチームのNick Kralevichによれば、Googleはroot化を認めている。root化はユーザーの権利の一つであり、一方でユーザーの責任でそれに伴う不利益を受けることは仕方ないという見解を示している。またroot化によってアプリケーションや各種コンテンツの開発者、キャリア会社の権利は侵害されないとしている[148]

ブートローダーのアンロック

Androidのアップデートは、このブートローダーを経由してアップデートされるが、大半の端末ではブートローダーがロックされている。ブートローダーがロックされていると、メーカーの電子署名が入ったアップデートしか受け付けないようになっている[64]。これに対して、ユーザーが自由にカスタムROMをインストール出来るように、一部の端末ではブートローダーをアンロックする方法がGoogleによって公開されている[149]

これらは改造行為となり保証外になるのが通常だが、中にはこの行為前提で初めからブートローダーがアンロックされた状態で出荷される端末もある[150]

fastbootモード

fastbootモード(ファーストブートモード)とは、PC側のコマンド操作によってシステム領域の書き換えやパーティション操作を行うための機能である。fastbootのコマンド機能は前述に加え、ブート、リブート、アプリのアンインストール、ファイルの転送、システムのバックアップ、ブートローダのアンロックなど様々なコマンドに対応する[151]

問題点

脆弱性

2019年の1年間で、2019年に報告されたOS別の脆弱性の数で最も多い、414件の脆弱性が発見された[152]

2019年11月、一部のAndroidに個人情報の流出につながる脆弱性が新たに146件見つかった[153]

プライバシー

2011年04月、ウォール・ストリート・ジャーナル(Web版)が、Androidは個人情報(Android利用者の氏名や場所、付近のWi-Fiネットワークの信号強度や位置情報)を取得・蓄積し、Googleに送信していると報じた。セキュリティ専門家が台湾HTC製のAndroidスマートフォンを調べた際に、これらの情報を少なくとも1時間に数回、Googleに送信していたことが確認されたという[154]

この報道に対し、GoogleはAndroid搭載端末から位置情報を収集していることは認めたが、すべてあらかじめユーザーの同意を得た上で行っており、また収集したデータは匿名化された形でGoogleのサーバーに送られていることから、プライバシー上問題はないと主張している[155]

2011年5月、韓国の警察は、Android利用者の位置情報を無断収集した疑いで、米Google韓国法人のGoogle Koreaを家宅捜索し、位置情報の収集に関するデータを押収した。警察関係者は「携帯電話向け広告を扱うGoogle子会社のアドモブが、利用者の同意なくスマートフォン向けアプリケーションを通じて個人の位置情報を収集した疑いがある。押収物を分析し、個人情報の収集量や収集方法を把握する」と話している[156]

Google Play Storeの問題

2019年12月、Google Play Storeで配布されている、3000個以上のアプリで既知の脆弱性が修正されてないことをトレンドマイクロが発見した[157]

2020年1月、Androidの脆弱性を利用した、不正なアプリがGoogle Play Storeに混入していることをトレンドマイクロが発見した[158]

2020年2月、Google Play Storeで提供されているTOP100のアプリのうち、約半数に脆弱性があることをLINEが発見した[159]

独占禁止法違反

2019年4月18日、独占禁止法に違反しているという欧州委員会(EC)の裁定を受け、欧州の「Android」ユーザーに対して検索アプリとブラウザーの選択肢を提示するという計画の概要を発表[160]

またECは3月、Googleに対して14億9000万ユーロ(約1900億円)の制裁金を科している。

脚注

注釈

出典

関連項目

外部リンク