AOSP に関するよくある質問(FAQ)

このドキュメントには、Android オープンソース プラットフォーム(AOSP)に関する一般的な質問への回答が記載されています。

オープンソースに関する質問

Android ソースコードを公開したのはなぜですか?

Google は、モバイルアプリの立ち上げに関する経験を基に、AOSP を開始しました。当時求められていたのは、携帯通信会社、OEM、デベロッパーが革新的なアイデアを実現するために利用できるオープン プラットフォームです。また、業界の特定のプレーヤーが他のプレーヤーのイノベーションを制限したり、妨げたりすることがないように、一極集中を避ける必要もありました。つまり、AOSP の最も重要な目標は、オープンソース Android ソフトウェアの実装において多様性と互換性を可能な限り高め、誰もがメリットを得られるようにすることです。

Android は、どのような種類のオープンソース プロジェクトですか?

Google は、AOSP の中核部分の開発を担当しつつ、デベロッパーやユーザーの活発なコミュニティの構築を支援しています。Android ソースコードの大部分はコピーレフト ライセンスではなく、Apache License 2.0 のパーミッシブ ライセンスで提供されています。Android ソフトウェアの普及促進につながると考え、Apache 2.0 のライセンスを選択しました。詳細については、ライセンスをご覧ください。

Google が Android に取り組むのはなぜですか?

ソフトウェア プラットフォームの立ち上げには、さまざまな要素が関係します。長期的な成功を納めるにはプラットフォームがオープンであることが不可欠です。オープンであるからこそ、デベロッパーの投資を引き付け、高い水準の環境を維持することができます。また、プラットフォームはユーザーにとっても魅力的なプロダクトでなければなりません。

Google は、Android がソフトウェア プラットフォームとして優れた競争力を発揮できるように、必要となるプロフェッショナル エンジニア リソースの確保を進めてきました。Android プロジェクトを大規模なプロダクト開発事業として扱い、優れた Android デバイスの製品化に必要なパートナーシップを推進しています。

ユーザーの支持を着実に得ることで、プラットフォームとしての Android、オープンソース プロジェクトとしての Android が充実したものとなるよう取り組んでいます。支持を得られないプロダクトのソースコードを望む人はいないでしょう。

Google の目標は、Android を取り巻くエコシステムを成功させることです。Android のソースコードは公開されており、誰もが自分のニーズに合わせてソフトウェアの編集、配布を行うことができます。

Android プロダクトの開発に関して、Google はどのような方針をとっていますか?

Google は、競争の激しい市場に向けて優れたデバイスをリリースしています。そして、コア プラットフォームにさまざまなイノベーションや機能強化を組み込んで、次期バージョンとして投入します。

具体的には、Android のエンジニアリング チームは、少数の「フラッグシップ」デバイスに焦点を絞って、次期バージョンの Android ソフトウェアを開発し、プロダクトの立ち上げをサポートしています。フラッグシップ デバイスに焦点を絞ることで、プロダクトに関するリスクの多くを軽減でき、多様な OEM コミュニティの発展と、新しい機能を活用した多様なデバイスの開発を促進できます。Android プラットフォームが実際のデバイスに対するニーズに沿って進化していくように、Google はこのような方針を採用しています。

Android ソフトウェアの開発はどのように行われていますか?

Android の各プラットフォーム バージョン(1.5 や 8.1 など)は、オープンソース ツリー内にそれぞれ対応するブランチを持っています。最新のブランチが現在の安定版のブランチ バージョンになります。メーカーがデバイスに移植するのは、このブランチになります。このブランチは常に、リリースに適した状態を維持します。

同時に、現在の試験運用版ブランチも用意されます。このブランチでは、次期バージョン向けの大規模な機能強化など、試験的なコントリビューションの開発が行われます。バグの修正や各種コントリビューションは、必要に応じて、試験運用版ブランチから現在の安定版ブランチに組み込まれます。

また Google は、Android プラットフォームの次期バージョンの開発と、フラグシップ デバイスの開発にも取り組んでいます。次期バージョンのブランチは、必要に応じて、試験運用版ブランチと安定版ブランチから変更要素を取り込みます。

コードライン、ブランチ、リリースの詳細については、Android ソフトウェア管理をご覧ください。

Android の一部が非公開で開発されているのはなぜですか?

デバイスの製品化には、通常 1 年以上の期間がかかります。デバイス メーカーはできる限り最新のソフトウェアを搭載したいと考えます。他方、アプリ デベロッパーにとっては、プラットフォームの新バージョンに毎回ついていくのは大変です。どちらのグループも、プロダクトのリリースと最新バージョンの反映のタイミングに苦心することになります。

このような点を踏まえ、コア プラットフォーム API など、Android の次期バージョンの一部については、非公開のブランチで開発を進めています。Android の次期バージョンは、このような API によって構成されます。Google の目的は、Google がプラットフォームの次期バージョンを開発している間、デベロッパーや OEM が Android ソースコードの現在の安定版に注力でるようにすることです。これによってデベロッパーや OEM は、進行中の取り組みを気にすることなく、単一のバージョンに集中できます。Android システム内でアプリ互換性に関係しない部分は、オープンソースで開発されます。現在非公開になっている部分についても、今後は徐々にオープンソースでの開発に移行していく予定です。

ソースコードはいつリリースされますか?

準備が整った段階でリリースされます。ソースコードのリリースは非常に複雑なプロセスです。Android の一部はオープンソースで開発されており、その部分のソースコードは常に利用可能です。それ以外の部分は、最初は非公開ツリー内で開発され、次期バージョンのプラットフォームの準備が整った時点でソースコードがリリースされます。

リリースによっては、コア プラットフォーム API の準備が早く進み、デバイスのリリース前にソースコードをリリースすることもあります。ただし、これは例外的です。通常は、バージョンが安定していると見なされ、開発プロセス面でリリースを許容できる状態になった段階で、プラットフォームのソースがリリースされます。

新バージョンの Android ソースコードをリリースする際、どのような手続きを行っていますか?

新バージョンの Android プラットフォームのソースコードをリリースするプロセスは、非常に手間がかかります。まず、デバイスのシステム イメージにソフトウェアを組み込み、さまざまな認証手続きに合格する必要があります。たとえば、スマートフォンを展開する地域の規制当局による認証などが必要になります。また、コードに対して、携帯通信会社によるテストも行われます。これは、ソフトウェアの不具合の検出に役立つため、非常に重要なプロセスです。

リリースに対して規制当局と携帯通信会社から承認が得られると、メーカーはデバイスの量産を開始し、Google はソースコードをリリースします。

量産開始と同時に、Google チームはオープンソース リリースを準備するためにさまざまな取り組みを開始します。たとえば、API の最終的な変更、ドキュメントの更新(認定試験の間に加えられた修正の反映など)、新バージョン用の SDK の準備、プラットフォーム互換性情報の提供などを行います。

そして、Google の法務チームが、コードをオープンソースとしてリリースするための最終的な承認を行います。オープンソース コントリビューターがコントリビューションの知的財産権を証明するために「コントリビューター ライセンス契約」に署名する必要があるのと同様、Google も、コントリビューションに際してソースに問題がないか検証する必要があります。

ソフトウェアのリリース プロセスは通常、量産の開始時期から約 1 か月かかります。そのため、多くの場合ユーザーにデバイスが提供されるのとほぼ同じ時期に、ソースコードのリリースが行われることになります。

AOSP と Android 互換性プログラムはどのような関係ですか?

AOSP は、Android ソフトウェアのメンテナンスと新バージョンの開発を行います。Android ソフトウェアはオープンソースであるため、あらゆる目的に使用でき、たとえば、ソースは同じでも他のデバイスと互換性がないデバイスを開発することもできます。

Android 互換性プログラムは、各デベロッパーが開発するサードパーティ製アプリとの互換性を保持する Android 基本実装を定義することを目的としています。この「Android 互換」の要件を満たしたデバイスは、Google Play などの Android エコシステムに参加できます。互換性要件を満たしていないデバイスは、エコシステムには含まれません。

つまり、Android 互換性プログラムとは、Android 互換デバイスと、Android ソースコードの派生物をただ実行するだけのデバイスとを区別するための仕組みです。Android ソースコードは自由に使用できますが、Android エコシステムに参加するには、Android 互換性プログラムによって「Android 互換デバイスである」と認定される必要があります。

Android に対してコントリビューションを行うにはどのようにすればよいですか?

AOSP では、バグの報告や、Android 用アプリの開発、ソースコードのコントリビューションを受け付けています。

コードのコントリビューションについては制限があります。たとえば、完全な C++ ベース環境など、代替的なアプリケーション API をコントリビューションしようとしても、承認されることはありません。Android では、ART ランタイム環境でアプリを実行することが推奨されているからです。同様に、AOSP のライセンス目標に適合しない GPL ライブラリや LGPL ライブラリなどのコントリビューションも承認されません。

なお、ソースコードのコントリビューションを行おうとする場合は、その前に、Android コミュニティ ページに記載されているチャンネルからご連絡ください。詳細については、コントリビューションを行うをご覧ください。

Android コミッターになるにはどのようにすればよいですか?

AOSP には、コミッターの概念はありません。Google 社員が作成したものを含め、すべてのコントリビューションは、Gerrit と呼ばれるウェブベース システムを経由します。Gerrit は Android エンジニアリング プロセスの一部で、Git のソースコード管理システムと連携して、ソースコード コントリビューションを適切に管理します。

指定された承認者は、提出されたすべての変更を受け入れる必要があります。通常は Google 社員が承認担当者となり、提出元にかかわらず、提出されたすべての変更案を、同じ承認担当者が担当します。

詳細については、パッチを提出するをご覧ください。