よくある質問

このページでは、よくある質問(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 プラットフォームの次期バージョンに関する取り組みを進めます。このブランチでは、必要に応じて、試験的なブランチと安定したブランチから変更内容を取り込みます。

詳細については、コードライン、ブランチ、公開をご覧ください。

Android の一部が非公開で開発されている理由は何ですか?

デバイスの市場投入には、通常 1 年以上の期間がかかります。デバイスのメーカーはできる限り最新のソフトウェアを搭載したいと考えますが、アプリを作成するデベロッパーからすれば、常にプラットフォームのバージョン更新に追随するのは大変です。どちらのグループも、プロダクトのリリースと最新バージョンの反映のタイミングに苦心することになります。

このような点をふまえ、コア プラットフォーム API などの Android の一部については、非公開のブランチで開発を行い、それらの API を Android の次期バージョンに反映させるようになっています。このような方針を取る狙いは、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 用アプリの作成、ソースコードのコントリビューションを受け付けています。

コードのコントリビューションについては制限があります。たとえば、完全な 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 では電話用のハードウェアが省略できるようになっています。その結果、タブレット型音楽プレーヤーなどのスマートフォン以外のデバイスも互換性の対象とできるようになりました。このような変更を加えていくことで、デベロッパーが 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 アプリは、Android には含まれません。これらの Google サービスには別個にライセンスが付与されます。これらのアプリに関する質問については、android-partnerships@google.com までご連絡ください。

互換性は必須ですか?

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

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

デバイスについて互換性の認定を受ける際、費用はかかりません。互換性を確認するためのテストスイートはオープンソースで、誰でもデバイスのテストに利用できます。

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

プロセスは自動化されています。互換性テストスイートではレポートが生成でき、Google での互換性の確認時にそのレポートを送付できます。Google では、これらのレポートを公開データベースにアップロードするためのセルフサービス ツールを提供する予定です。

互換性の定義は誰が決定しますか?

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

新しいデバイスのサポート期間について、Android のバージョンごとに教えてください。

Android のコードはオープンソースです。したがって、デバイスの立ち上げにあたり古いバージョンを使用しても、特に制限はありません。ただし、ほぼ利用がないと考えられるバージョンで動作する Google Play クライアント ソフトウェアに対しては、Google はライセンスを供与しない場合があります。ライセンスが供与されなくなっても、引き続き Android 旧バージョンでの製品リリースは可能ですが、Android のブランド名は使用できなくなります。また、互換性がない場合と同様に Android アプリのエコシステムには含まれなくなります。

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

Android 互換性プログラムでは、各サードパーティのアプリケーションがデバイスで実行できるかどうかを判別します。通常は、デバイスに付随するユーザー インターフェース コンポーネント(ホーム画面、電話、カラーパターンなど)は、サードパーティ アプリの動作にほとんど影響しません。したがって、デバイスのメーカーによるユーザー インターフェースのカスタマイズには、特に制限はありません。互換性定義ドキュメントでは、OEM が変更する場合のあるシステム ユーザー インターフェースの中でも、サードパーティ アプリに影響を与えるものについて制限を定めています。

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

互換性定義ドキュメント(CCD)の新しいバージョンの公開については、関連する Android プラットフォーム バージョンの開発が公開できる程度にまで進んだ時点で行うようにしています。一方、CCD の最終ドラフトは、その Android ソフトウェア バージョンを使用する最初のフラグシップ デバイスがリリースされるまでは公開されません。最終的な CDD は、常に最初のデバイスがリリースされたあとに公開されます。なお、CDD のドラフト版については、随時公開されます。

デバイス メーカーからの互換性に関する申し立てはどのように検証されますか?

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

互換性が認められたデバイスに互換性の問題が判明した場合はどうなりますか?

Google と Google Play ライセンシーとの関係においては、原則として、Google がデバイス メーカーに対し、問題を修正するシステム イメージの提供を依頼できることになっています。

トップへ戻る

互換性テストスイート

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

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

CTS では、どのようなことがテストされますか?

現時点の CTS では、Android の厳密に型指定されたサポート対象のすべての API が存在し、正常に動作することを確認します。アプリケーションのライフサイクルやパフォーマンスなど、API 以外のシステムの動作についてもテストします。今後の CTS バージョンでは、インテントなどの型指定が厳密でない API のテストにも対応する予定です。

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

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

CTS のライセンスはどうなっていますか?

CTS では、Android の大半で使用されている Apache Software License 2.0 のライセンスが使用されています。

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

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

既存のデバイスで CTS を使用する際の条件はありますか?

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

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

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

トップへ戻る