Huaweiから学ぶ、AndroidのOS開発やライセンス

# はじめに

「**Androidはオープンソース**」ということは、多くの皆様がご存知だと思います。
ですが、Androidの開発元がどこで、どのようなライセンスで、どのように皆様のスマートフォンに搭載されているか、説明できる方は少ないと思います。

また、少し前に、Huaweiがアメリカに経済制裁を受けた影響で、「Huaweiのスマートフォンは今後、Androidが販売できない」のような『噂』が流れました。
ですが、そのような噂には間違いがあります。

今回は、Androidの成り立ちや開発、ライセンスについて、少し深堀りしていきたいと思います。

※指摘や修正依頼、大歓迎です！

# AndroidのOS開発の流れ


Androidは以下の画像のような流れで開発され、ソースコードが公開されています。

### 次期バージョンをGoogleがクローズドソースとして開発
Androidの次期バージョンは、オープンソースとなる前に、まずGoogleによって、クローズドソースとして開発されます。


### AOSPに公開
その後Googleによって、**Android Open Source Project (AOSP、Android オープンソースプロジェクト)**に、ソースコードが公開されます。
[こちらの記事](https://www.xda-developers.com/android-10-source-code-aosp/)は、2019/9/3に、Android10のソースコードがAOSPに公開されたニュースになります。
[ソースコードやリリースノートはこちら](https://source.android.com/setup/start/android-10-release)

また、この時点でのAndroidは時折、「素のAndroid」と呼ばれます。
素のAndroidには、必要最低限の機能とアプリのみ搭載されています。

この「素のAndroid」に搭載されているアプリは、主に以下のようなものがあります。

- アルバム
- 電卓
- カレンダー
- カメラ
- 時計
- 電話帳
- 電話
- Eメール
- ホーム
- IM
- メディアプレーヤー
- フォトアルバム
- SMS/MMS

そして、この「素のAndroid」のOSSライセンスは、「Apache 2.0」となっています。
参考：https://source.android.com/setup/start/licenses
Apache 2.0は非コピーレフトのライセンスなので、素のAndroidをカスタマイズしたとしても、カスタマイズ後のソースコードを公開する義務はありません。

### Googleのアプリ追加
この「素のAndroid」について、気付いた方は気付いたかもしれませんが、この時点では、**「Google Chrome」や「Google Map」「Google Play」など、Googleのアプリが追加されていません。**
素のAndroidには、Googleのアプリが含まれないことになります。

では、Googleのアプリはどのように追加されるかというと、それは**Google Mobile Services (GMS)**という、Googleが提供するサービスによって追加されます。
これらのサービスは、Googleのライセンスによって提供されます。そしてGoogleの提供するアプリケーションは、オープンソースではありません。
※ちなみに、ここでいう「Google」は、Androidの開発版を開発していたGoogleとは分けて考えたほうが良さそうです。

GMSで含まれるアプリは、以下のようなものです。

- Google検索
- Google Chrome
- YouTube
- Google Play ストア
- Google Drive
- Gmail
- Google Map
- Google Photos

Googleは、｢Google モバイルサービス（GMS）｣を無料で、端末のメーカーにライセンス供与しています。
しかし、これは一定の基準が満たされた場合に限られます。
だいたいの端末は、これらのGMSによって、Googleのアプリケーションが追加されていますが、中にはそうではないスマートフォンもあります。
各メーカーが申請し、**Googleが許可した場合のみ**、Googleのアプリケーションが追加されるわけです。


### 自社の端末用にカスタマイズ
そして、「素のAndroid」をベースに、各スマートフォン開発会社は、自社の端末（スマートフォン）用に、Androidのカスタマイズやコードの追加を行います。

例えば私が愛用する、SamsungのGalaxy Note8は、「Sペン」という、付属ペンを使用してスマートフォンに文字や絵を描ける、という機能があります。
この機能は当然、他のメーカーのスマートフォンには搭載されていません。これはSamsungが、素のAndroidをカスタマイズし、機能追加を行ったということになります。
同じバージョンのAndroidだったとしても、メーカーやスマートフォンによって機能に差が生じるのはこのためです。

また、素のAndroidのライセンスはApache 2.0なので、このカスタマイズ内容をオープンソースとして公開する義務はありません。
（素のAndroidのライセンスを明示する必要はありますが）


各メーカーはこれらの作業を、行うことによって、Androidのスマートフォンのプリインストールを設定していきます。
みなさんが「Android」と思っていたものは、実は

- Android AOSP
- Google Mobile Services
- 各メーカーが独自に追加した機能

の3つの組み合わせだったんですね。

流れをまとめると、こんな画像になるでしょうか。
![Android2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204834/1dfb5411-9b9f-091b-4ce7-8650ebe09ba2.png)

（※GMS→独自機能と書いてますが、正確にはこの順番じゃないかもしれません。平行かもしれない。イメージとして考えてください）

# Huaweiの新端末
2019/09/19、Huaweiは「Mate 30」という新スマホを発表しました。
前述の問題から、「HuaweiからAndroidの新スマホは出ないのではないか」とも言われてましたが、決してそんな事はありませんでしたね。
https://japanese.engadget.com/2019/09/20/mate-30-google-play/

ですが、ここで面白い事実があります。
それは、「このMate 30には、**Android OSを搭載するスマートフォンにかかわらず、Google Play Storeを含む各種Googleサービスが非搭載**」ということです。

これまでの話が無かったら、「なぜ？？？」と思う方もいるかもしれません。
ですが、ここまで話を読んでくださった方なら、きっとわかると思います。それはつまり、

- **Android AOSPはオープンソース**だから、事情があってもHuaweiの新スマホに搭載できた
- でも**GoogleのアプリケーションはGoogleへの申請が必要**だから、経済制裁によって許可が下りなかった
- なので、**Android搭載だけどGoogleのアプリケーションは非搭載**になった
ということなのです。

ちなみに時々、「今はHuaweiもAndroidを搭載できるけど、将来的にはGoogleが制約を掛けて、Androidの搭載も出来なくなるかもしれない」という記事を見ますが、それは99.99999％ないと考えます。
なぜなら、オープンソースの定義で「個人やグループに対する差別の禁止」というものがあるからです。
仮にそんな事はあったら、それは**オープンソースの原理原則を捻じ曲げること**になります。
なので絶対無いです。きっと。

ですが、「Google Playストアが利用できない」という状況は、今後も継続するかもしれません。
Google Playストアには本来、素晴らしいAndroidアプリがたくさんありますので、「それらのアプリが利用できないスマートフォン」というのは、Huaweiにとって非常に痛手であることには変わりません。
そのため、Huaweiは現在、独自のストアを用意する、ということは噂されていますね。どうなることやら。


# まとめ
以上、Androidとオープンソース、Googleの関係、ならびにHuaweiについて語りました。
普段Androidをお使いの方は、「これはどのフェーズで作られたものなんだ！？」と妄想すると楽しいかもしれません。
また、オープンソースを勉強するにあたって、良い題材になるとも思います！