しげぽん日記

技術屋の魂は失わない

Androidのroot取得とJN-DK01

ここには会社に所属する人間としての意見ではなく個人の意見として書くことにする。もしこのブログを読む人がいたらそこは理解して欲しい。

Android端末のroot取得については私自身が個人で購入した端末に対してはきっとやらない。なぜなら何が起こるかきっちり考え切れるものではないしそれが単純に恐いから。そういう使い方を想定して作られているわけではないし知らないところで何かやらかして誰かに迷惑をかけるかもしれない。それがイヤなだけ。

でも、rootを取りたいという気持ちはわかる。その気持ちの1つは言葉は適切じゃないかもしれないけど探究心だとかそういうものだと思う。GPL部はソース開示しているので見れば何を書いているのかは理解はできる。そこに書いてあるものを改善したり、他の方法を試してみたりする場合にはソースがあっても動作させる環境が必要になる。だからそこに存在するソフトウエアが動作するハードウェアが必要だというのはそういうものだろうと思うし、オープンソースというのは本来そうあるべきだと思う。ただし、GPLで開示している範囲については非常にプリミティブな機能が多いのでそこまで厳密に同じハードウェアでなくても動作検証はある程度はできるのではないかと思っている。じゃあそういう検証ができないものって何だろうと考えると思いつくのはその端末に固有のデバイスを操作するためのデバイスドライバがそれに相当すると思う。ただ、デバイスドライバのソフトウエアを変更する上ではソフトウエアが存在するだけではダメで、そのハードウェアのスペックがわからないと普通は書けない。タイミングなどの問題もあるのでソフトウエアでは理論上問題のない内容になっていたとしてもそれが実際に動作するかは別問題だ。なので、いくらソフトウエアやハードウェアをオープンにしたとしてもこの問題は解決できないと思っている。

ここでもしも私が部品メーカの立場の人間だったらと考える。部品メーカの人が自分の部品を動かすためのソフトウエアを販売する事で商売するという可能性があるか?と質問されると私はあると思っている。オープンにするソフトウエアは非常に基本的でノウハウの含まないものにしておき、最大限にパフォーマンスを発揮するためには自分たちのノウハウを詰め込んだプロプライエタリデバイスドライバを販売するという場合だ。ソフトウエアに自信があるのならこういう選択肢もあるだろうけれど、この戦略をとる場合であってもソフトウエアはオープンにする必要がある。一方で販売するものはハードウェアでありソフトウエアはリファレンス程度でしかないというケースも考えられるだろう。この場合にはソフトウエアをオープンにする事で得られるメリットがあると考えている。でもソフトウエアをオープンにするためにはその部品のハードウェアのスペックも公開しないとその目的が達成できない(前者の場合はそうじゃないかもしれない)ので、ハードウェアのスペックは部品メーカがソフトウエアをオープンにするとともに公開するのが良いのではないかと思っている(このへんの考えは自分がその立場じゃないので甘いかも)。自分たちの部品を使ってもらうために市販されている開発用の基板に部品を接続し、オープンソースのみを使ってリファレンスのソフトウエアを作成し、部品のスペックとともにソフトウエアを公開しハードウェアを販売する。ソフトウエアは一部の協力的な人の手によって問題点が改善され、作った自分たちもソフトウエアを改善する時にはオープンソースにコミットする。ハードウェアが自身の勝負するフィールドである場合には、ソフトウエアのメンテナンスのコストを削るためにはこういう方法が考えられるんじゃないかと思っている。逆に端末メーカから部品のスペックをオープンにするという事は普通はできない。

さて、rootをとるための手段についても考えてみる。脆弱性をついてroot昇格するというのはroot化という単語を聞いた時に素直にイメージできるものかもしれない。でも、Androidの場合はuserビルドではなくengビルドやuserdebugビルドをする事でroot権のとれるROMイメージなどというのはすぐに作れてしまう。JN-DK01というのはuserdebugビルドしたROMイメージが書き込まれて販売された端末だ。adb rootですぐにroot取得できるし、fastbootでROM書き換えも可能。これは端末メーカとして出せる1つの答えだ。Gadget1に参加した時にもJN-DK01の再販署名運動が一部で起こったくらいにこういう需要は少ないながらもあるものだと思っている。まぁこういう端末を作るには非常にいろいろな準備が必要になるのでそう単純ではない。この準備をしないでuserdebugした端末を出せばいろいろなところでほころびが発生しAndroidの上で組み上げられた世界が崩壊すると私は思っている。Androidのセキュリティを勉強する会で話した意図はこれに該当する。でも、こうした開発用の端末を自分たちで用意しないでroot取得をしないで欲しいとお願いをするのは片手落ちだとは思う。

理想的には、ちゃんとオープンにできる製品として組み上げられた商用の電話機ではない開発用のAndroid端末(これがJN-DK01に相当する)が用意され、そこに搭載されている部品のハードウェアのスペックが部品メーカから公開され、ソフトウエアも全てオープンになっていれば、探究心は満たされると思う。少なくともJN-DK01の時には私はこれをめざすべきだと思っていた。

探究心以外の目的でのroot取得についてはAndroidのセキュリティを勉強する会で話をした通りであり、やってはいけないという線は必ず存在する。こちらはこちらできっちりと対応をすすめていくべきだと考える。

あくまで1つの意見として。