新しいデバイスに道を開く? AndroidをLinuxに統合


 Linuxのカーネル新バージョン「Linux 3.3」が3月18日リリースされた。カーネルは約2カ月おきにリリースされており、今回も通常のサイクルでの公開だったが、ある重要な特徴が3.3にはある。それは、Androidコードの統合(マージ)だ。AndroidはLinuxから派生したモバイルOSだが、メインのLinuxに“戻る”ことになる。これは何を意味するのだろう?

2011年秋から進められてきたAndroid統合作業

 LinuxへのAndroidマージは、2011年10月末にチェコ・プラハで開催された「Linux Kernel Summit 2011」で持ち上がって以来、進められてきた作業だ。

 AndroidはもともとLinuxから分離したコードで、独自の発展をした後、親元に戻って来たことになる。Linux情報サイトのLWHなどによると、11月末にはコアのAndroidコードが準備段階の「ステージングツリー」に戻り、カーネル開発者のGreg Kroah-Hartman氏(Linux Foundation所属)が12月17日に、「次のLinuxカーネルリリースでは、Androidユーザー空間を起動できるだろう」という見通しを示していた。

 同時に、Linux ForumのTim Bird氏(ソニー所属)は「Android Mainlining Project」の立ち上げを発表した。Linux Foundationのコンシューマー家電作業グループ、ARM用LinuxプロジェクトのLinaroなどの取り組みを合わせるもので、Androidのパッチや機能をLinuxカーネルに統合することを最大のミッションとしている。

 こうした作業を経て、約7000行のAndroidのコードを含むLinux 3.3がリリースされた。カーネル開発者らは今後、まだマージされていない部分の作業に取り組むが、ひとまずLinux 3.3でAndroidユーザー空間を起動できるようになった。


一度は分岐したLinuxカーネルとGoogleをなぜマージ?

 だが、AndroidはそもそもLinuxをベースとする。なぜこれまでメインのLinuxと別に開発されてきたのか?

 LinuxのメインのソースツリーからAndroidコードが削除されたのは2009年末だった。Kroah-Hartman氏は2010年末、この理由についてAndroid側のメンテナンスの不備を示唆しながら「誰も気にしていない」とブログで説明した。ステージングツリーにあるコードがメインのソースツリーにマージされるためには継続的な作業が必要で、これがなされない場合は削除されるという原則に基づいた判断だという。

 同時に、Androidの独自性(起動のために特別なロックが必要、独自のセキュリティモデル、まったく異なるフレームバッファドライバインフラなど)を指摘。主に、Google側がマージするために必要な作業を行っていないためだと主張した。

 一方、Google側も2008年の「Google I/O」イベントでのAndroidについて説明するセッションで、「AndroidはLinuxではない」と明言している。ZDNetは2010年4月15日付の記事で、GoogleのChris DiBona氏が「Android固有の機能開発に忙しく、Linuxカーネルプロジェクト側との協業がなかなかできない」との漏らしたと伝えている。そうして「フォーク」(分岐)したAndroidは独自の電力マネージャWakeLocksなどを開発して、Linuxとの違いが、より色濃くなってゆく。

 こうした不協和音の後の統合の背景には何があったのだろう。Linus Torvalds氏は、Kernel Summit 2011の直後のMuktwareのインタビューで、「Googleが自社のニーズに合わせてLinuxを変えていることに不満を感じている人がいる」と認めながらも、「ある点からみると、AndoidもGoogleもRed Hat、SUSE、IBMなど(Linuxカーネルを利用するベンダー)と変わらない」と述べている。

 そして「フォーク(分岐)が生まれるということは、標準のカーネルとは違うことをするためのニーズと技術的な理由を感じている人がいるということだ」と、その動きを肯定しながら、ニーズを感じたものの実際には必要とされていなかったために「多くのフォークは失敗に終わる」と続けている。

 一部の成功しているフォークの代表例がAndroidであり、「“あなたたちは正しかった。私たちが間違っていた。あなたたちは正しいことをして成功している”と歩み寄るにはどうしたらよいかを考えている。よい部分をマージさせることを話し合っている」と述べている。

 The Registerは「Linux集団が、これ以上Androidの成功を無視するわけにはいかないと認めた」ものだと結論づけている。


それでも課題の多いAndroid

 では、LinuxにAndroidがマージされることで何が変わるのだろう? Kroah-Hartman氏が言うとおり、Androidユーザー空間を修正なく起動できるようになる。これによって、端末メーカーなどはAndroid互換のLinux端末を構築し、Android側にはないLinuxの機能を利用できるようになるし、逆にAndroidの機能をAndroid以外のLinuxベースの端末で利用できるようにもなる。

 PC Worldは「より多くの開発者がAndroidに追加や強化を行うことで、改善が進むだろう」「Android開発者には天の贈り物」と評価する。ZDNetは、Mozillaが開発中のWebベースOS「Boot To Gecko(B2G)」を例にとり、家電などでLinuxを使って開発するプログラマーに大きなメリットがあるとする。

 Kroah-Hartman氏はZDNetに対し、端末やシステムメーカー側のメリット、Androidコードの改善を認めながらも、アプリ開発者にはそれほどの影響はなく、全体として大きな変化はない、と抑え気味のトーンで見解を示している。

 Androidにとって、順風満帆のように見えるが、Android/Google側の作業も多い。The Registerは、GoogleがAndroidのコードを公開する速度が遅いことを、Linux側が許容できるかという懸念があるとしている。

 また、Android自体も課題を抱えている。Androidの知財訴訟の問題は無視できないレベルとなっており、Androidの分断化問題もGoogleの楽観をよそに根強く残っている。Googleは「Android 2.3」(開発コード名:Gingerbread)からタブレット向けの「Android 3.0」(同Honeycomb)を分岐させた。AmazonがGingerbreadベースの「Kindle Fire」を製品化したかと思えば、Barnes&Nobleは「Android 2.2」(同Froyo)ベースの「NOOK Color」を開発している。

 Googleは最新版「Android 4.0」(同Ice Cream Sandwich)で2.3と3.0を統合したが、Androidの分裂は開発者を混乱させている。IDCの今月レポートでは、分断化への懸念から開発者のAndroidへの関心が薄れていると指摘している。モバイルを支えるAndroidだけに、気になるところだ。


関連情報
(岡田陽子=Infostand)
2012/3/26 09:30