よくある質問

このページでは、よくある質問(FAQ)とその回答を掲載しています。

オープンソース

Android オープンソース プロジェクトとは何ですか?

Android オープンソース プロジェクト(AOSP)は、Android の開発にかかわる関係者、プロセス、ソースコードのことを指します。

さまざまな関係者がプロジェクトを管理し、ソースコードを開発します。ソフトウェア開発の管理に使用されるツールや手順がプロセスです。最終的に得られるのがソースコードで、スマートフォンや各種デバイスに利用されます。

Android ソースコードをオープンにしたのはなぜですか?

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

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

Google は、Android オープンソース プラットフォームの中核部分の開発を担当しつつ、デベロッパーやユーザーの活発なコミュニティの構築を支援しています。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 プラットフォームの次期バージョンの開発と、フラグシップ デバイスの開発にも取り組んでいます。次期バージョンのブランチは、必要に応じて、試験運用版ブランチと安定版ブランチから変更要素を取り込みます。

コードライン、ブランチ、リリースの詳細については、AOSP のコード管理をご覧ください。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

トップへ戻る

互換性

「Android 互換」とはどういう意味ですか?

Google では、Android SDK および NDK を使用して開発されたアプリであれば、どのサードパーティ デベロッパー製アプリでも実行できるデバイスを「Android 互換デバイス」と定義しています。この Android 互換デバイスの概念は、Android アプリのエコシステムに参加できるデバイスと、参加できないデバイスとを区別するフィルタとして使用されます。適切な互換性を有するデバイスの場合、デバイス メーカーは、Android 商標の使用を承認するよう申請できます。Android ソースコードからの派生物であっても互換性のないデバイスの場合は、Android 商標を使用できません。

言い換えれば、互換性は Android アプリ エコシステムに参加するための前提条件です。Android ソースコードは誰でも使用できますが、デバイスに互換性がない場合、Android エコシステムに含まれるものとは見なされません。

互換性は Google Play においてどのような意味を持ちますか?

デバイス メーカーは、Android 互換デバイスについて Google Play クライアント ソフトウェアのライセンス取得を申請できます。ライセンスを取得したデバイスは、Android アプリのエコシステムに含まれるようになり、ユーザーは、すべての互換デバイスで共有されるカタログから、デベロッパーのアプリをダウンロードできるようになります。互換性のないデバイスは、ライセンスを取得できません。

デバイスを Android 互換にするにはどのようにすればよいですか?

Android ソフトウェアは、さまざまなデバイスに移植できますが、デバイスによっては、サードパーティ製アプリが正常に動作しないことがあります。互換性があると見なされるデバイス構成については、Android 互換性定義ドキュメント(CDD)をご覧ください。

たとえば、Android ソースコードはカメラが搭載されていないスマートフォンにも移植できますが、CDD では、すべてのスマートフォンにカメラが必要とされています。CDD にデバイス要件が規定されていることにより、アプリ デベロッパーは、一貫した機能セットを前提として、アプリを作成することができます。

CDD は、実際の市場ニーズを反映するように継続的に更改されます。たとえば、CDD のバージョン 1.6 では、サポート対象がスマートフォンだけに限定されていました。しかし、バージョン 2.1 では、電話機能用のハードウェアを省略できるようになりました。その結果、タブレット型音楽プレーヤーなど、スマートフォン以外のデバイスも Android 互換デバイスの対象になりました。このような変更に合わせて、Google Play の機能も拡張されており、デベロッパーは、自分のアプリをどのような場合に Google Play に表示するのか指定できるようになっています。たとえば、デベロッパーが Google Play に SMS のテキスト メッセージ管理用のアプリを登録する場合、そのようなアプリはメディア プレーヤーには不要であるため、電話機能のあるデバイスだけに表示するよう制限することができます。

デバイスが Android 互換である場合、Google Play とブランディングは自動的に利用可能になりますか?

いいえ。自動的に利用可能にはなりません。Google Play は Google が運営するサービスです。互換性の確保は、Google Play ソフトウェアとブランディングを利用するうえでの前提条件となります。デバイス メーカーは、デバイスが Android 互換デバイスとして認定された後、Google モバイル サービス ライセンス取得用のフォームに必要事項を入力して、Google Play の利用申請を行う必要があります。サポートが必要な場合はご連絡ください。

メーカーでない場合に、Google Play を利用するにはどのようにすればよいですか?

Google Play のライセンスが供与されるのは、デバイスをリリースするメーカーに限られます。個別のケースに関して質問がある場合は、android-partnerships@google.com までお問い合わせください。

Google マップなどの Android 向け Google アプリの利用を申請するにはどのようにすればよいですか?

YouTube、Google マップ、Gmail などの Android 向け Google アプリは、Google サービスであり、Android には含まれません。Google サービスは別個にライセンスを取得する必要があります。Google アプリに関して質問がある場合は、android-partnerships@google.com までお問い合わせください。

互換性は必須ですか?

いいえ。Android 互換性プログラムへの参加は任意です。Android ソースコードは公開されています。誰でも利用可能で、どのような種類のデバイスでも開発できます。ただし、メーカーが製品に Android ブランド名を使用したい場合や、製品内で Google Play を利用したい場合は、あらかじめデバイスが Android 互換であることを示す必要があります。

互換性の認定を受ける際には、どの程度費用がかかりますか?

Android 互換デバイスの認定を受ける際に、費用はかかりません。互換性テストスイート(CTS)はオープンソースであり、誰でもデバイスのテストに利用できます。

互換性の認定にはどの程度の時間がかかりますか?

プロセスは自動化されています。互換性テストスイートによってレポートが生成されるため、それを Google に提出すれば、Google が互換性を検証します。Google では、このようなレポートを公開データベースにアップロードするためのセルフサービス ツールを提供する予定です。

互換性の定義は誰が策定しているのですか?

Google は、プラットフォームとしての Android、プロダクトとしての Android について全体的な方向性を定める役割を担っており、リリースごとに互換性定義ドキュメント(CDD)のメンテナンスを行っています。新バージョンの Android 用の CDD のドラフトを作成する際は、さまざまな OEM と意見を交換しています。

各 Android バージョンはどれくらいの期間まで、新しいデバイスに搭載できますか?

Android のコードはオープンソースです。したがって、メーカーが新しいデバイスをリリースする際、古いバージョンを使用していても特に制限はありません。ただし、サポートが終了しているバージョンの場合、Google は、Google Play クライアント ソフトウェアのライセンスを供与しません。旧バージョンの Android を搭載しているデバイスをリリースすることは可能ですが、Android ブランド名は使用できません。また、互換性がない場合と同様、Android アプリのエコシステムには含まれません。

デバイスで別のユーザー インターフェースを使用しても、互換性を維持できますか?

Android 互換性プログラムは、対象デバイスがサードパーティ製アプリを実行できるかどうかを判別します。一般的に、デバイスのユーザー インターフェース コンポーネント(ホーム画面、電話アプリ、カラーパターンなど)がサードパーティ製アプリの動作に影響することはほとんどありません。そのため、デバイス メーカーによるユーザー インターフェースのカスタマイズに特に制限はありません。ただし、サードパーティ製アプリに影響を与える領域のシステム ユーザー インターフェースに関しては、OEM が変更できる度合いについて、互換性定義ドキュメントで制限を定めています。

新しいバージョンの Android を対象とする互換性定義は、いつリリースされますか?

新しい Android プラットフォーム バージョンの仕様が収斂し、互換性の定義が確定したら、新しいバージョンの Android 互換性定義ドキュメント(CDD)がリリースされます。CDD の最終ドラフトは、その Android ソフトウェア バージョンを搭載した最初のフラグシップ デバイスがリリースされるまではリリースされません。最終的な CDD は、最初のデバイスがリリースされた後に必ずリリースされます。なお、CDD のドラフト版は随時公開されます。

デバイス メーカーが互換性を主張している場合、どのように検証されますか?

デバイスの Android 互換性に関して、検証を行う手続きはありません。ただし、Google Play を搭載するデバイスの場合、Google は通常、デバイスの互換性を検証した後で、Google Play クライアント ソフトウェアのライセンスを供与します。

互換性を主張しているデバイスに関して、後で互換性に問題があることが判明した場合はどうなりますか?

Google と Google Play ライセンシーとの関係により、Google は原則として、デバイス メーカーに対し、問題を解決した更新版システム イメージをリリースするよう求めることができます。

トップへ戻る

互換性テストスイート

互換性テストスイートの目的は何ですか?

互換性テストスイート(CTS)は、デバイス メーカーが使用するツールで、デバイスの互換性を確保し、検証用のテスト結果をレポートすることができます。CTS は、OEM が開発プロセス全体を通じて頻繁に利用することで、互換性の問題を早い段階で検出できるように設計されています。

CTS のテスト対象は何ですか?

現在のところ、CTS は、強く型付けされたサポート対象 Android API がすべて存在し、正常に動作するかテストします。また、アプリのライフサイクルやパフォーマンスなど、他の非 API システム動作についてもテストします。今後の CTS バージョンでは、インテントなど、弱い型付けの API のテストもサポートする予定です。

CTS のレポートは一般公開されますか?

はい。現在は実装されていませんが、将来的には、OEM が CTS レポートを公開するためのウェブベースのセルフサービス ツールを提供し、誰でも閲覧できるようにする予定です。必要に応じて、メーカーは CTS レポートをさまざまな関係者と共有することができます。

CTS のライセンスはどのように供与されますか?

CTS は、大部分の Android で使用されている Apache Software License 2.0 に基づいてライセンス供与されます。

CTS では、コントリビューションを受け付けていますか?

はい。Android オープンソース プロジェクトでは、他のコンポーネントと同様、CTS を改善するためのコントリビューションを受け付けています。CTS テストケースの対象範囲の拡充と品質の改善は、Android の開発を支援するうえで大変重要な分野です。

既存のデバイス上で CTS を使用することはできますか?

互換性定義ドキュメントは、互換デバイスの要件として、adb デバッグ ユーティリティを実装することを求めています。つまり、販売中のものも含め、互換性デバイスは、CTS テストを実行できる必要があります。

CTS でコーデックは検証されますか?

はい。必須のコーデックについては、すべて CTS で検証されます。

トップへ戻る