Hatena::Groupsubtech

#生存戦略 、それは

-> 10 { 04 / 07 }

Android のカスタムロムについて

23:20 | はてなブックマーク - Android のカスタムロムについて  - #生存戦略 、それは

Android のカスタムロムについて、カスタムROM化のやり方はよく見かけるけどそもそもカスタムロムってなんですか、というエントリーをほとんど見かけないし自分もその情報を探しても見つからなかったので最近思ってることも交えて書いてみる。なおこのエントリーはカスタムロムのインストール方法等を書いた物でもないし、カスタムロムを他人にお勧めするというわけでもありません。 

カスタムロムはその名の通り、標準のROMをカスタマイズした ROM である。一番メジャーな ROM は CyanogenMod (CM と略される) と呼ばれるカスタム ROM であり、HTC Dream (G1), HTC Magic (日本では HT-03A, アメリカでは myTouch 3G), Nexus One 向けに提供されている。もちろん、ほかにも多数のカスタムロムは存在し、日々進化している。

主にカスタムROMの方向性には2種類に分けられる

  • 安定性や省電性を追求した ROM
    • カーネルパラメータをチューニングし、安定し、かつ一番パフォーマンスがでるような ROM
  • 速度と機能を追求した ROM
    • 少し不安定でも値をできるだけ高速になるようにチューニング。また Android 1.6 なのに 2.x のアプリがバックポートとして動くようになったりする。ベンチマーク向けのカーネルモジュールがあったり、dalvik VM が JIT コンパイルできる物に差し替えたり、ブラウザの JS エンジンを V8 にしたりできたりもする。

最近は少しずつこなれてきていて、最新の機能を取り込みつつも安定性を追い求める両方の良い点を取り入れているカスタム ROM も出てきている。たとえば国産の Hyper-J などは標準アプリの日本語ローカライズや 2.0 アプリのバックポートも入れつつもかなり安定している。

また SuperD は Dalvik VM が実用に耐えうるレベルと云えるほど。ただ、全体的にあまり使ってるユーザが少なそう、かつ標準ROMでも不安定な機能(Bluetooth での音楽再生等)などはより不安定になったりもする。

カスタム ROM を使ったカーネルチューニングやモジュール入れ替え、というコア部分は技術的になんかすごいなーという感じで細かいカーネルパラメータチューニングはもちろんのこと、最近の Linux カーネルに組み込まれたcompcache (ramzcache) で RAM を圧縮ブロックデバイスとして swap として利用したりしてるのはふつうに感心する。HTC Magic なんかは 96M しか Linux のユーザランドで使える RAM が無い(だいたいのカスタムロムではリソースハックで 106M ぐらいまで拡張している)ため、アプリがどんどんスタンバイにされたり、SDカード上に遅い swap 作るよりもCPU での圧縮・解凍コストを払うことで少しでも RAM を有効活用でき快適になるならそっち選択するよなーと。

ほかにも Apps2SD で SD カード上にアプリをインストールできるようになったり。Nexus One でもアプリ用のデータ領域が250Mぐらいしかないため、5Mのアプリなら50個しか入れられない。それを SD カード上にパーティション(通常 Android の SD カードは FAT32 のパーティション一つ。そこに ext2/3/4 の領域を追加しそれを利用) を拡張し、そっちにインストールできるようにさせられる。仕組みだけきくと「へー」という感じなんだけど、このパーティションを切る操作が昔はふつーのCUIからの操作だったりしてめんどくさかったのが今はリカバリイメージをブートさせて、そのメニューの一つに Apps2SD 用のパーティションを切れるメニューがあり、簡単に作ったりできてこれまた良くできている。

この日々進化しているカスタムロム周りの文化なんだけど、いかにもオープンソース的ですごいわくわくする。様々なところで進化し、ライセンスはだいたい Apache ライセンス / GPL なので良いところは吸収されどんどん成長してっている。ユーザーにはどのカスタムロムを選ぶかという大きな選択から、どのモジュールやテーマを利用するかなどの取捨選択ができる。

一言カスタムロムというと「ティザリングできるやつでしょ?」「オーバークロックできるやつでしょ?(HTC Magic の CPU は定格クロックが 528Mhz だが、電力・熱・安全性のたぶんどれかの問題により 384 Mhz で出荷されている。ほとんどのカスタムROMでは 128Mhz - 528Mhz の可変クロックに対応していて、高CPU利用時に 528 Mhz で動く)」というイメージが強いけど、それは root 権限がとれてできる事の一つに過ぎず、技術的にも文化的にも非常に面白い側面も持っているんだ。

しかし実際のところメーカはカスタムロムを入れる仕組みは提供しておらず、今たとえば HT-03A にカスタムロムを入れるとなると、Android 1.6 では root がとれるハックが見つかってないので myTouch3G の Android 1.5 のROMを入れ root とって…と、グレーかもしれない方法をとる必要がある。

個人的には、カスタムロム入れるなんて自己責任なんだから、まったく保証がきかなくなる前提なら入れられてもいいよなぁ、と思っている。だって root 権限の無い Linux なんて安定で安全かもしれないけど楽しくはない。

しかし Nexus One はベンダー(Google) が最初から bootloader を unlock する仕組みを最初から組み込んで出荷している。カスタムロムや rooted なロムを使いたい、と思ったらオフィシャルで「ブートローダアンロックするよ。保証は一切なくなるよ」と云われそれでも利用すると、ブート時の画面にロック解除されているアイコンがでてそれ以降と unlock 前の状態には戻らなくなる。つまり、自己責任で自由なロムを入れる権利が最初から用意されている。これは非常に革命的なことだなーと思っている。Android は Linux なんだし好き勝手使いたい、そんなユーザ向けにもきちんと入り口を用意してるんだ。

俗に言われるただの高スペックの "Google フォンとしての Nexus One" ではなく、bootloader の unlock の仕組みを提供しちゃうところに "Google フォンとしての Nexus One" を感じる。

で、ちょっと CM の話に戻るけど、CM は以前 Google 謹製のアプリ(GMail とか)をコミで配布していて、Google から警告された。wikipedia に非常に良くまとまってるので引用。

バージョン4.1.11.1まで、CyanogenModには、GoogleによるGmail、Maps、Market、Talk、YouTubeなどのclosed-sourceアプリケーションと、プロプライエタリなハードウェアドライバが組み込まれていた。これらのパッケージはベンダによるAndroidディストリビューションに含まれていたが、フリーなディストリビューションにはライセンスされていなかった。GoogleがCyanogenに対し、前述のアプリケーションをディストリビューションに含めないように警告したあと、数日間開発が停止した。Googleに対する多くのCyanogenModユーザの反応は攻撃的で、Googleの法的脅迫は、Google自身の持つ利益を損ない、彼らのモットーであるdo no evilを冒していると言われた。

Googleの立場を明確にした前述の声明と、その後のGoogleとCyanogenとの交渉により、プロプライエタリな"Google Experience"コンポーネントをバンドルしない形で、CyanogenModプロジェクトが継続できるという決着を見た。

これは、プロプライエタリなGoogle製アプリケーションがGoogle提供のファームウェアからバックアップされ、権利を侵害していないCyanogenModに再インストールされてもよい、ということを示した。

http://ja.wikipedia.org/wiki/CyanogenMod

たしかに Google のアプリをきちんとしたライセンスを承けて利用している端末のカスタムロムとして利用する場合は、それらのアプリも利用したいよね。Google も

プロプライエタリなGoogle製アプリケーションがGoogle提供のファームウェアからバックアップされ、権利を侵害していないCyanogenModに再インストールされてもよい

と許可しており、この問題もほとんどの人が納得のいく形に収まったのかなー、と事後に知った身としては感心している。

この辺のプロプライエタリの問題はソフトウェアをよりよくするという上で重要な問題で、カスタムロムならなにを入れてはよいという訳ではないわけで。たとえば HTC が一般ユーザ向けにより便利で使いやすい Sence UI を作ってるけど、HTC Desire の ROM イメージが流出して Nexus One などライセンス的に利用できないであろう端末でも使えちゃったりする。そうすると独自に開発したところで別端末で使えて開発元としては売りどころが無くなってしまう。ユーザが Sence UI を利用したくてわざわざ HTC Desire を買う機会が減ってしまい、なら端末を売るための使いやすい UI を独自に作っても誰でも使えてしまうわざわざ作らなくなってしまい、ベンダーも悲しいし正規ユーザも悲しい。ので、この辺はカスタムロムを使うユーザはちゃんとライセンスも意識して使うべきだなぁ、と思う。

なんかまとまらなくなってきたけど、個人的にはカスタムロムはどんどんこのまま正当進化していって欲しいと思う。 2,3年後の Android ではユーザがカスタムロムを自己責任で選ぶ自由がほとんどの端末で現在の Nexus One のように確立されてると、エンジニア的なスマートフォンデバイスの未来はどんどん楽しくなっていくなーと漠然と思っている。

moritammoritam2011/05/16 13:56確かにカスタムROMの概念に関する情報が少ないですね。カスタムしている人はほとんど意味をわからずしているかと思うほどです。自己責任とはいえROMをカスタムするとはどういうことなのかぐらいは把握した方がいいですよね。

トラックバック - http://subtech.g.hatena.ne.jp/secondlife/20100407