ものがたり(旧)

atsushieno.hatenablog.com に続く

AndroidのソースコードにSun (Oracle)のコードが含まれていたとされる件

今年は折を見て時事ネタを拾っていこうかと思います。

http://japanese.engadget.com/2011/01/22/android-java/

AndroidソースコードにSunのコードが盗用されていたという話。FOSSPatentsが調査結果として出しているソース比較のPDFを見ると、確かにソースコードのフォーマットを変えただけの「複製」と言うべき内容になっている。

もっとも、engadgetが提示しているtoString()のコードは、あるインスタンスの状態について同じ文字列を返すためには、誰が書いても同じようなコードになるような創作性の余地のないコードなので、これをもって著作権侵害と言うことは出来ない。AclEntryImpl.javaなどは、パブリックAPIの内容から同クラスを実装するために書くコードは、ほぼこれと同様のstructure, sequence & organizationになるだろう。一方でAclImpl.javaくらい長くて創作性の余地のあるコードでも丸コピだ。

僕は当該ソースコードの出自については押さえていないのだけど、Googleのエンジニアはこんな退屈な実装内容であれば(実際、AclImpl.javaなどは退屈な内容だ)創作性に欠けると判断した、のではないかと推測する。

Oracle Javaの当該コードはGPLv3でリリースされているそうで、ライセンスがフリーソフトウェアのものであろうと、著作権侵害となることに変わりはない。GPLは特に組み込み環境の大半での利用に課金するためにあえて選択されている側面もあって、オープンソースとしては同様であるApacheライセンスの下で配布しているからといって、少なくとも具体的利益を伴わない権利主張となるわけではない。

しかし、Oracleが具体的な証拠を提出したのではなく、FOSSPatentsが独自に調査した結果を出したというのもおかしな話で、法的な救済を求める者が、(正当な理由が無いのに)迅速に法的な証拠を提出しないのであれば、その限度では法的救済の一部(期限の利益など)を放棄したと見なすのが筋だろう。

また、実質的に誰も複製目的で参照しないようなリポジトリのデータを、ヒストリとしてはなおも参照できるからといって、それを物理削除しない限り権利侵害であると主張することは、当該原本がやはり自由に入手できることに鑑みれば*1、具体的な利益を欠き、権利濫用に当たると言わざるを得ない。

補足: gitリポジトリに「Apacheライセンスで配布されているはずのAndroidソースコードGPLでライセンスされなければならないコードが含まれている」ことに問題が無いことは、問題が話題になればなるほど、権利外観法理の側面からも明確に説明できる。権利情報に瑕疵があることは、必ずしも権利侵害が生じているということを意味しない。Googleのgitリポジトリの過去データに含まれるのは、「ApacheライセンスのコードとGPLライセンスのコードが混在している」だけの、それ自体では違法状態を構成しないモジュールセットだ*2。第三者が「Apacheライセンスだと信じてコードをコピーした」と主張できるのは、その第三者が善意無過失である場合のみだ。Googleに対して嫌がらせを行うつもりで、Oracleに権利があることを知りながら行う複製は、自らの責任において行っているのと同じであり、GPL以外のライセンスで配布した上でその責任をGoogleに負わせることはできない。そしてこれだけ話題になっている当該ソースコード(しかも通常は必要とされないであろう部分であり、かつ最新のgit HEADには存在しないコード)をあえて(訂正)善意のうちにチェックアウトする人間がいるとは、通常は考えられないであろう。

以下は権利侵害があった場合の効果についての所感。

当該コードの書き換えはいずれ行われるだろうし、全体的には小規模な権利侵害であろうから、粛々と違法状態を解消すればそれで足りる話だ。今後問題が修正され次第、修正版が配布されることになろうし、それ以降のバージョンについては問題が無くなる(はてブには「よくて賠償、最悪Android消滅」などと意味不明なことを書いているのもいたが、とんだ見当違いだ)。権利侵害について知らなかった端末メーカーが、故意過失のない期間の販売について民事責任を負うこともないだろう(第三者に委託したいかなるコードにも第三者による権利侵害の「可能性」はあり、その「可能性」についての「不安感」で「過失」を認定することはできない)。過去の違法複製による利益の賠償は必要になるだろうが、既に販売(頒布)されたAndroidフレームワークのコードは「複製」されることもないため、更なる権利侵害の発生のおそれはなく、権利侵害の差止として修正版の配布を要求できるとも言い難い。

ついでに、contributorに意図的に権利侵害コードをcheckinさせたらどうなる?的な話について。

Androidは、ライセンスだけはオープンソースだけど、たいへんclosed-mindedな社内開発なので、外部からのcontributionに権利侵害が含まれる機会は少ないかもしれないが、外部からのcontributionでも、初めての公開コードというのでなければ、既存のcontributionやこれまでのパッチやコードから、コードの癖みたいなものが分かることも少なくない。怪しいと思ったらそのコードの断片をぐぐってみたりすることもでき、余所からのコピペならそれで発見できることもある。そんなわけで、開発者に気づかれないように著作権侵害パッチを送って汚染させるというのは、そんなに簡単なことではないと思う(僕は実際そうやってコードを見て気になって調べてコピペらしきパッチを発見して拒否したことがある)。受け取る開発者の性格や忙しさにもよるだろう。

もちろん意図的に権利侵害をもたらしたら、その責任は本人が負うことになるわけだし、それが出来る人間はそう多くないだろう。そんなわけで、あまり現実的な懸念にはならないと思う。

追記: 「コードの流用は検出できなかった」って書かれた記事が出ているのだけど、この記事で言及されているBurnetteのエントリに対しては、Muellerが反論している。彼の「過去のソースツリーに含まれているものはgitで永遠に参照できる」という主張は↑にも書いたとおり権利濫用的な主張だと考えるが(そんなことを書いているMuellerに僕は幾分か失望したが)、彼はそもそもandroid.kernel.git.orgに含まれているコードについて書いたのであって、「出荷」されたデバイスについては何も言及していない。実際のデバイスに「出荷」されたかどうかは別の問題だ。そして、問題になり得る行為は「出荷」だけではない。ソースコードのweb上での頒布も同様だ。*3

著作権侵害を検証するためにはrootを取ってコードの複製を突き合わせてみないと分からないだろうから、この意味でもやはりアクセスコントロールを破る行為を著作権侵害としようという文化庁の法改正案は見当違いであると言わざるを得ない。)

*1:そもそも自由な複製が想定されていないソフトウェアやコンテンツの場合は、なおも実質的な利益の侵害が想定されるので、一応保留を加えた

*2:繰り返しになるが、これは当該モジュールがGPLライセンスで公開されるものであるからこそ、議論の余地なく成立する。

*3:ちなみにengadgetが使った"ship"という単語は、実のところ必ずしも物理的な「出荷」だけを意味するわけではない。うちでもリリース時によく使っている。ship source codeでぐぐってみると良い。