Androidをroot化する時に知っておきたいこと

0707root_08.jpg

Androidにつきまとうroot(ルート)という話題について少し考えてみました。かなり長くなりますが、お付き合いいただければ。

Androidをroot化する行為とは、iOSをJailbreak(ジェイルブレイク/脱獄)するのと同じ意味合いを持ちます。

rootとは、Android(Linuxカーネル)の「システムを管理する最高権限」を有するユーザーアカウント名のことを指し、root(権限)を取得した場合、その端末の全ファイルシステムにアクセスすることが可能となります。

これに関しては「Androidをroot化する10の理由」の記事に詳しく書かれています。

OS自体がオープンソースであることからAndroidのroot化は世界的に行われています。でもどうしてroot化が必要なの?

ほとんどの場合、root(権限)と呼ばれる「OSへのアクセス特権」が必要なのは端末やアプリケーションなどの開発者です。自分達の作った端末にAndroid OSを載せた時、または作成したアプリをAndroid OS上で動作させた時、「どのような動きをするか」という確認や、バグの調査のために詳細なログ(動作記録)を取得する必要がある場合などにroot化された端末が必要になります。

これだけに留まらず、rootを取得するとできること(=rootがないとできないこと)のうち、一般ユーザーがAndroidに求めるものも数多く存在していることから、発売後の端末をroot化する方法も各所で紹介されており、多くのユーザーが自分の端末をroot化して使っています。僕の持っている端末も4台中2台はroot化してあります。

前述したリンク先、「Androidをroot化する10の理由」でも述べられている通り、全ファイルシステムにアクセスできるroot(権限)を持つと、通常はアクセスできない場所に置かれているプリインストールアプリやシステムファイルを改名/編集/移動/凍結/削除/上書きする、などの操作ができるようになります。

これを利用してインターフェース(外観)を変更する、例えば文字に使われているフォントを自分好みのものと置き換えたり、画面の解像度(dip)を変更したり、電源ボタンを長押しした時「再起動」項目がない機種で項目を追加したりといったことが可能になります。

0707root_10.jpg

こちらはroot端末の使用例。「バッテリー残量アイコンの変更」、「ナビゲーションバーにボタンを追加&アイコン画像変更」、「日本語フォントの変更」、「パフォーマンス改善のためのスクリプトの実行」などを行なっている画面です。

国内市場では、主に2011年頃出回っていた内蔵メモリの小さな端末で使わないプリインストールアプリを削除して容量を確保することがユーザーにとって「必須に近い」と言っても過言ではない程深刻だったため、root化は積極的に行われてきました。

例えば、RAMが512MB/ROMが1GBしか搭載されていないモデルに数十個もの消せないアプリが入っていた場合、買った直後の状態で既に全容量の60%近くを専有されており、新たにアプリをインストールすることが困難となる状況などが頻繁に発生していました。

0707root_02.jpg

この画像はXperia Playのアプリ一覧画面。いくつかのアプリをインストールしているうちに空き容量が100MBを切ってしまっています。

これに加えてプリインストールアプリの一部は用もないのにRAM上に常駐し、ただでさえ小さなメモリを圧迫する要因となっていることがあります。

このように、これまで一般ユーザーがrootに求めたものとして最も重要と思われるのが「パフォーマンスの改善」であり、そうでなくても少ない保存領域を空けられることが非常に大きなメリットになっていました。これに関してはプリインストールアプリの削除だけでなく、アプリ自体を外部ストレージ(SDカード)上に置いたまま動作させられる「Link2SD」などのツールも大きく貢献しています。

設計上保存メモリ容量の許す限りいくらでもアプリケーションを追加でき、メインメモリとプロセッサの許す限りいくらでも同時起動(=マルチタスキング)できるAndroid端末で自分の想定する動作を確実且つ円滑に行うために様々な試みがなされてきました。

しかし、早ければ数ヶ月に1回というとてつもないスパンで新製品が投入され続けてきたAndroidの状況はめまぐるしく変遷しており、2013年現在では(少なくとも以前と比べて)rootの必要性、とりわけ開発を行わない一般ユーザーにとっての必要性自体はだんだんと薄れてきています。

保存メモリ(ROM)を標準で16~32GB搭載した上にmicroSDXC規格(=理論値での最大容量は2TB)の外部ストレージにも対応した端末が増え、メインメモリ(RAM)は2GBが平均的となっており、およそライトユーザーが想定できる動作において不都合をきたすことはほとんどなくなっています。

簡単にいうと、「これだけでかいメモリを使い切るほうが大変」という状況になりつつあります。

0707root_03.jpg

この画像はXperia Zのもの。ある程度のカスタマイズを終えた状態でRAMは773MB、ROM(内部ストレージ)は3.1GB空いています。

それに加え、OSの進化に伴い標準でも無効化(凍結)できるプリインストールアプリも増えてきており、また前述したメモリ容量の拡大から動いていても邪魔にならないことも多く、こうした面だけを求めてroot化するのは逆に高いリスクを背負ってしまう危険性のほうが大きくなったと言えるかと思います。

また最近ではroot(権限)の有無を確認するアプリも増えて来ました。その中には「パズドラ」や「LINE」のアプリなんていう大物も含まれており、root(アクセス特権)のある端末では起動できないようにされています。ある程度の技量があれば回避はできるみたいですが、面倒な作業が必要になります。

そもそもなぜアクセス特権がないのか

0707root_11.jpg

自分の買った端末だし、隅々まで好きに使いたいですよね...?

しかし、全てのユーザーが「管理者」としての責任を果たすことができるでしょうか。個人的な偏見も含みますが、メーカー(=端末に制限を「かけた」側)の意図を解釈すると、次のような理由が含まれると思います。

「普通に使う上でそんな権限いらないでしょ?」

これが1つ目。Windowsでもソフトウェア(アプリケーション)をインストールして使うだけであれば「管理者」としてのアクセス権限はいりません(ユーザーアカウントさえあれば良い)。そういうことは詳しい人やプログラマーがやるだけです。

「その権限があったとして本当に扱いきれるの?」

これが2つ目。製品を製造しているメーカーと、販売しているキャリアにはアフターケアという責任が生じます。何かトラブルが発生した時に、対処法や修理の受付などを行ってくれるのはこのためです。しかし、Android製品は「端末」、「OS」、「アプリ」それぞれ作っているところが異なります。他社製品のサポートを完璧にこなせる会社は存在し得ません。

OSやシステムに直接アクセスした結果発生したトラブルはOSを作ったところにしか対応できません。インストールしたアプリに問題があった場合、原因を修正することはそのアプリの開発者にしかできません。メーカーやキャリアからすれば「ウチに聞かれても困ります」という言葉が喉まで出かかっているケースもあるかと思います。

そこで「この範囲内での動作ならウチが面倒を見られる」という部分を決める必要があるわけです。このため、Android製品は「サポート不可能なトラブルを未然に防ぐ」目的で、予め制限のかかったユーザーモードで販売されます。root(取得)はこの制限を破るのですから当然その後の扱いはメーカー・キャリアのサポートを離れます。

それでもrootが欲しいなら

とかく便利なroot(を必要とするアプリ)は多いので、端末に特に不満がなくても「とりあえず」rootを取りたいと考える方は多いと思います。しかし、各所で語られているようにrootは諸刃の剣です。

最も重大な問題として真っ先に挙がるのは「文鎮化」だと思います。これは文字通り文鎮、つまり端末がウンともスンともいわない「ただの重り」と化してしまったことを皮肉った言葉です。

が、個人的には「全ファイルシステムにアクセスできる」ことからあらゆるアプリをインストールできる端末を持つことで、悪意あるマルウェアの仕込まれたアプリをそれと気付かずインストールしてしまう可能性が高まることも大変危険だと思います。

ただ、これに限って言えば正規のマーケットであるGoogle Playを介さずにインストールされた、いわゆる野良アプリのほうが危険度は高いです。野良アプリはrootを取らなくてもインストールできますからね。

数あるAndroid製品の中でも特にスマートフォンはプライバシーの塊です。誰か一人の電話帳が漏れただけで、繋がりのある全員に被害が及ぶ危険性があります。自分に全く心当たりのないタイミングで迷惑メールが大量に届くようになった経験はありませんか?

Google Playからアプリをインストールする際、そのアプリがOSに要求する権限の詳細が大きくクローズアップされるのはこうしたトラブルを自衛するためです。root必須アプリをインストールできるようにするとアプリ探しに幅が増えるので、この危険性も若干高まります。

極論するとroot(取得)とは「OS開発側で禁止されておらず、法的な規制も特にないものの、個々のアプリケーションを組み合わせて動作する性質上トラブルに対処することが困難となっており、それらを全て販売元に頼られてもどうしようもないので、自己責任でやってくださいね」というスタンスであると考えています。

特に国内キャリア/メーカーの場合はroot(取得)を「改造」行為とみなしているので、壊れたら直すのは自分でやってくださいねと言いたいんだと思います。

そのため、root(権限)とその取得後に発生したトラブルに関する相談をキャリア/メーカーにすることはご法度です。

「別に本体交換してくれりゃいいんだから誰にも迷惑かけてないじゃん?」 ...いえいえ、違いますよ。

root取得後のトラブルが増えるとrootが取れなくなる!?

これに関しては明確な根拠があるわけではないのですが、その可能性は十分あると認識しておくべきだと思います。

具体的には、root(取得)とはファームウェアの脆弱性(セキュリティの抜け穴)を突いてアクセス特権を奪取、そのまま維持する行為のことです。これはファームウェアによって異なるため、全てのモデルで同一方法でroot取得はできないものの、脆弱性が見つかったモデルによっては誰でも簡単に取得できるようにするツールなどが出回っていることもあります。

基本的に一度見つかった脆弱性はアップデートで修正されます。そしてまた新たな脆弱性が発見され、そこから別の方法でrootを取得するという「いたちごっこ」が現状です。

root(取得)によって端末に異常をきたした、大切なデータが消えてしまったという(クレームまがいな)案件が多数報告されると、サポート担当者が「次からはそうならないようにしよう」と考えるのは当然の流れですよね。

その結果、今後発売されるモデルや次期バージョンアップなどでroot取得時に参照される部分への対策がガッチガチに固められ、ちょっとやそっとではrootが取れなくなる可能性が高まります。

「自己責任ですらできないなら最初からやらないでくれ!」という開発側の魂の叫びです。

せっかく便利なRootExplorerも、最強のバックアップツールであるTitaniumBackupやClockworkModのようなものも、アクセス特権のない環境下では動きません。

メーカーによってはroot(取得)をある程度肯定的に捉えているところも

WikipediaにはHTCやSamsungなどの数社が「開発を支援し後押ししている」として挙げられており、ファームウェアの換装(カスタムROM導入)に欠かせないブートローダーのアンロックを公式に可能にしているメーカーもいくつか存在します。

Samsungは米国向けにブートローダーがアンロックされた「developer edition」を直販していますし、HTCやソニーモバイルも自社製端末のブートローダーをアンロックするツールを提供しています(ソニーモバイル※国内市場で流通する製品は対象外)(HTC)。

この他にもユーザーに向けた配慮を数多く行なっている場合があり、「Samsung Kies」や「PCCompanion」(どちらもiTunesのような管理ソフト)にADBドライバが同梱されていたり、「Flashtool(Xperia製品にファームウェアを自分で焼けるツール)」などを使ってユーザーデータをそのままにOSだけ初期化できたりと、root取得に対する敷居が低いばかりかリスクの低減(トラブルのセルフケア手段の提供)まで実現しています。余談になりますが、FlashtoolやSony Update Service(公式のファームウェアアップデートツール)などの存在のおかげでXperiaは「文鎮化させるほうが難しい」とまで言われています。

こうした数々の配慮が数件のクレームで台無しになってしまう可能性も決してゼロではありません。どれだけメーカーが支援してくれようと、キャリアがボトルネックとなり肝心のrootを塞いでしまったらそれまでです。

少し上にも書きましたが、国内版Xperiaに限っていえば現状ブートローダーが塞がれています。Xperia製品にCyanogenModのようなカスタムROMを焼きたいと思ったら、古いモデルかグローバルモデルを買って自分でブートローダーをアンロックする必要があります。グローバルモデルが存在する製品はまだましですが、国内市場でしか流通していないモデルは絶望的です。

先ほどはrootがなくてもほぼ大丈夫というようなことを書きましたが、それはパフォーマンスに限った話。細々したところではまだまだ必要性があります。

例えば、一部の製品に採用されているナビゲーションバーはハードキーの役割を持ったボタンを画面内に描画するため壁紙やウィジェットの縦幅に干渉します。これを非表示化して別のアプリ(LMT Launcherなど)で代用させることでフルスクリーンで使用する場合にも、root(権限およびアプリ)が必要です。

これ以外にも、Nova Launcherなどでドロワーからウィジェットを選びたい、TaskerでGPSの制御がしたい、CPUの動作を制御したい(カスタムROMでなくてもクロックダウンは可能)、あとこれは僕がブログを書く時に大変重宝しているものなのですが、AirDroidでPCブラウザから直接スクリーンショットを取得したい、端末の画面を高フレームレートで動画キャプチャしたい時にもrootは有効にはたらきます(参考:Max40FPSで撮影可能なアプリ)。

root取得行為は合法です。しかし、この行為には取説がありません。講師もいません。何かあった時、直し方を知らないアナタに変わって壊れかけの端末の面倒を見てくれる人がいません。いざという時、せめて初期状態には復元できるだけの知識は持っておかないと、数万円の文鎮が出来上がってしまいます。「何もしてないのに壊れた」では周囲から失笑を買ってしまいかねません。

そうなる前にきちんと下調べをして知識を蓄え、(機種変更した時などにできた)予備端末などで動作確認をする、詳しい説明の書かれたサイトを熟読するなどして技術を向上させておけば、アナタのAndroidライフはより一層充実したものになるでしょう。Androidはカスタマイズこそ「華」です。

参考:

Androidをroot化する10の理由

Root化 (Android OS) - Wikipedia

Galaxy S4 developer edition

Unlocking the boot loader - ソニーモバイル

Unlocking Your Bootloader - HTC

Screencast Video Recorder - GooglePlay

(TK)