「AndroidにJavaコードを流用か?」の報道が出るも専門家は一蹴、しかしFUDは広まる
結論はこうだ。「Androidに、Javaからのコード流用の疑念が提出されたが、両者のコードを比較した結果、明らかな流用は発見できなかった」。この一連の経緯を振り返ってみよう。
(本記事は、ゲストブロガーのITジャーナリスト 星暁雄氏による投稿です)
デコンパイルでソースを復元、比較
知的所有権問題のコンサルタントが「AndroidにJavaのコードが混在か?」という内容のBlog記事を書いた。記事の内容は、ComputerWorldやEngadgetに紹介された。読んだ人は「Googleはまずい事をしでかしたものだ」との印象を持ったことだろう。Googleは、AndroidがJavaの特許と著作権を侵害しているとしてOracleから訴えられている最中だからだ。だが、記事を読んだプログラマが「結論としてJavaコードの盗用の事実はない」ことを明らかにした。
火種となったのは、Florian Muller氏のBlogサイト"FOSS PATENTS"に掲載された2011年1月21日付けの記事"New evidence supports Oracle's case ageinst Google"だ。Florian Muller氏は、知的所有権問題に関するコンサルタントとして活動している人物らしい。このBlogサイトでは、Muller氏はOracle-Google訴訟に関する意見を度々ポストしている。
この記事では「旧SunのJavaコードが、Androidに混入している証拠を発見した」と主張し、具体的なソースコードと共に公開した。その内訳は次の2グループである。
(1) Android2.2およびAndroid2.3のソースコード中、6本以上のファイルについて、SunのJava SDK1.5と同じパターンのソースコードが検出された。
(2) 37本のファイルについて、Sunの著作権表示が含まれていた。
Muller氏が取った方法は、デコンパイル・ツールによりJava SDK1.5のソースコードを復元し、Android2.2および2.3のソースコードを比較するというものだった。以上の発見が本当なら、「大変なことだ。Oracle-Google訴訟の行方に影響することも考えられる」──と、こう考えるところだ。
コードの流用は検出できなかった
一方、筆者はこの記述を見て「おかしい」と感じた。本当にコードが「コピー&ペースト」されているのであれば、Sunの著作権表示の部分も含めてわざわざコピーするだろうか。それに、今回発見されたファイル数は43だが、これはJava SDKの規模から見てわずかな部分でしかない。本当にコードを流用していた事実があるなら、もっと大量のコードが検出されるのではないだろうか。これは実は別の事象なのではないか、という疑問が出てくる。
こうした疑問を具体的に検証したのが、米SASに上級システムデベロッパーとして勤務するEd Burnette氏である。Burnette氏がZD NetのBlogに、Muller氏のBlog公開日時と同じ1月21日に寄せた記事"Oops: No copied Java code or weapons of mass destruction found in Android"では、以下の事柄が明かされている。
(1) Muller氏が挙げたソースコードのうち7本は、Java SDK(JDK)の本体ではなく、ユニットテスト(単体テスト)用のコードであること。このコードは、旧Sunが、開発者支援のため公開したコードであった。ユニットテスト用のコードは開発工程だけで用いられるもので、出荷される製品に含まれることはない。
(2) 残りの37本は、MMAPI.zipと名付けられた、ある特定チップセットのためのデバイス・ドライバのコードであること。
Burnette氏は、後者のコードはミスによりアップロードされたものだろう、としている。また、makeファイルを検討した結果、出荷されるAndroidコードにこれらのコードが含まれることはない、と結論付けている。また、(1)のコードは、2010年10月30日から2011年1月14日にかけて削除されていたことを明らかにしている。これは、Muller氏のBlogが公開されるより前の出来事である。
別の見方をするなら、少なくともMuller氏の方法ではJava SDK1.5からAndroidへのコードの流用は検出できなかった、と言ってもいいだろう。
あいまいな情報が流れてしまった
Muller氏の当初の意図はともかく、この報道はいわゆる「FUD」の助長を招いたことは間違いない。FUDはFear, Uncertainty and Doubt(恐怖、不安、疑念)の略で、ライバル企業や競合製品に対する悪い噂の流布を指す言葉だ。「AndroidにはJavaのコードが混入していたらしい」というあいまいな情報に多くの人が接した。それを打ち消す情報は専門性が高いため、一部の人しか知らないままになる可能性が高い。
今のところ日本語による報道では、この一連の事実関係についてきちんと説明した記事はまだ見あたらない。逆に、不要な誤解を助長するような記述すら見受けられる。
そこで重要な点に関して繰り返しておきたい。現時点では、Java SDK 1.5と、Android2.2、Android2.3のソースコードを比較した結果、コード盗用は発見できなかったと考えられる。また、Oracle対Google訴訟で、今回の問題が法廷に提出されるかどうかはまったく分からない。本問題を訴訟と結びつけて論じているのはMuller氏であって、当事者のOracleではないのだ。
あわせて読みたい
Javaの未来、RubyとJavaScriptの台頭
≪前の記事
どのクラウドが受託に向いているか? Javaに未来はない、インフラ担当にも未来はないのか ~ クラウドごった煮パネルディスカッション(PaaS編 後編)