BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース APIに著作権はあるか?

APIに著作権はあるか?

原文(投稿日:2012/04/23)へのリンク

InfoQで取り上げられたOracleとGoogleの最近の訴訟は、本来の訴えに大きな変化を生じさせている。裁判の結果は、携帯電話のライセンスの争いよりも、テクノロジ業界に非常に大きな影響を与えている。

この訴訟は、元々Oracleの特許は有効だという仮定に基づいていた。今ではその仮定はほとんどくつがえされ、Oracleは、著作権侵害だと主張することに固執するようになった。本当のところは、APIやコンピュータ言語でさえ著作権を持てるかどうかというのが問題だ。

Androidの言語はJava言語のサブセットであり、javacコンパイラ(または、他のIDEベースのコンパイラ)を通してJavaクラスにコンパイルする。その結果は、AndroidのDalvik VMで実行するために、Dalvikバイトコードに変換され、Android/Dalvikに特化したDXツールに渡される。

JavaバイトコードとDalvikバイトコードは全く異なる。JavaバイトコードとスタックベースのVM、そして、DalvikバイトコードとレジスタベースのVMだ。VMレベルで2つのシステムは全く違うものだ。

しかし、AndroidとJavaの言語はどう見ても同じだ。Androidのツールチェーンでは、最終目的地としては必ずしも必要ではないけれども、フロントエンドの変換ツールとして同じJavaCコンパイラを使う。その結果、Dalvikで使われるAPIは、Javaと同じ言語だ。JavaCコンパイラで動かすために、java.lang.StringクラスのようなAndroid APIの特定のサブセットはJava APIに適合する。

Androidツールチェーンの実装のほとんどは、(今はなき) Apache Harmonyプロジェクトに基づいている。このプロジェクトは、クリーンルームで行われたJavaの実装のようなもので、モバイルの世界で使用分野制限条項もなく、Testing Compatibility Kitの不利になることをOracleが許すはずもないため、昨年終了している

Oracleは、今ではJava APIの設計者として権利を主張している。OpenJDK (GPL)の実装が守られているだけでなく、Java APIの今までのすべての実装が著作権によって守られているというのだ。そのため、Java APIのどのような実装も、Javaと呼ばれていようとなかろうと、Oracleの著作権に違反している。

SCOは、ほとんどがAPIの名前であるという事実にもかかわらず、コードベースに対して大規模なLinuxの著作権を強く主張するときに、同様の戦略を使った。(この訴訟は、最初からSCOは著作権を持っていなかったことが決まった時に本質的に失敗に終わった。)

FOSS PatentsのFlorian Mueller氏の考えによると、GoogleはJavaのライセンスが必要だったために確実に勝てる訴訟だ。今では有名になったLindholm メールは、エンジニアの意見ではJavaを使ってやっていることにライセンスが必要だと伝えているが、このメールがなくても状況は同じだろう。

私たちがLarry Page氏とSergey Brin氏から実際に頼まれたのは、AndroidとChromeで使うJavaで、どのような技術的な選択肢があるかを調べることです。これらのことはもう済んだことであり、どうでもいいと思います。私たちは、私たちが必要な条件でJavaのライセンスを交渉しなければならないと結論付けています。

しかしながら、このことはAPIが著作権で守られていることを必ずしも述べているのではない。Javaをそのまま使いたければ、ライセンスが必要だというものだ。Oracleは、APIを作るのに必要だった労力に見合うように、OracleがAPIに著作権を持つべきだとますます強く主張している。また、Florian氏がOracleをコンサルティングする関係にあることは、注目に値する。

そうは言っても、無意識に信じる者として、Oracleはつい最近私のコンサルティングの顧客になったことをお知らせしたいと思います。FRANDのライセンス条項のような競合に関係する月々のトピックに関して、長期的利益のために共に働こうとしています。

今まで、言語は著作権を免除されていると考えられてきた。特別なやり方で表現されたアイデアだけが著作権を持てる。だから、シェイクスピアのハムレットのように特別な英語の文章は著作権があるが、英語という言語そのものには著作権はない。言語の所有者に著作権があるとすれば、Oracleは今までに書かれてきたJavaプログラムすべての著作権を主張していることになるのかもしれない。

言語に著作権がないならば、特定のAPIはどうだろうか? この場合、AndroidとJavaは37のAPIを共有する。(すなわち、StringClassLoaderなどのクラスのメソッドだ) 90年代後半のMicrosoftの拡張とは異なり、AndroidがJavaになりすますことはできないのは明らかであり、上位セットである必要はない。その後、Microsoftは、互換性がないことを指摘されるのを避けるために、その言語の名前をJ+に変更しなければならなかったが、Javaと呼ばなければ、その言語を使い続けられたのだ。

良いAPIを創りだすことは時間がかかるし、簡単にできることではない。(例えば、Lambdaプロジェクトに関する進行中の設計の議論を見れば分かる) しかしながら、特に、既存のものではない実装がなされた場合に、APIの結果はそれ自体著作権を持つのか? この疑問に関して、OracleとGoogleの意見は分かれている。

メソッド名やタイプシグニチャはそれ自体が著作権を持たないというGoogleの主張は、メソッド毎に0か""などのデフォルトの値を返す「モック実装」に対する主張に基づいている。これは、明らかにJavaでは同じではない。そのため、著作権があるという主張は考えられるだろうか? 名前と型は、著作権が守られるものではないとしたら、一体何なのだろうか?

Oracleの主張は、APIの設計は時間がかかり、良いAPI程さらに時間が必要なので、APIを集めたものはすべてを含めた作業として考えられるべきであり、著作権がある。しかし、これが本当だと決められたならば、APIがクライアントプログラムで使われたり、他のプログラムで実装されたりするものとして、いかなるプログラミング言語にも多大な影響を与えるだろう。(Connectionインターフェースを実装したJava JDBCドライバは著作権に違反しているだろう。インターフェースの実装はAPIのシグニチャの事実上のコピーだから。)

Simon Phipps氏はInfoWorldに、Oracleが勝つならば、みんな負けると書いた。

… ソフトウェア業界で認められた知恵を無視しています。プログラミングのインターフェースや言語は著作権の範囲を超えているというのは広く受け入れられています。今まで裁判に持ちこまれたのは、ほんのわずかなケースです。裁判になったケースの中で、認められた知恵は強く支持されています。

これは良いことです。このような認められた知恵がなければ、プログラマの人生はもっとずっと複雑でしょう。ヘッダーファイルと機能プロトタイプはオーナーの許可が必要になり、オペレーティングシステムのプログラミングは、ライセンスの互換性に注意が必要だというのは良い方で、悪ければ、プラットフォームベンダからプログラミングライフサイクルを完全にコントロールされることになります。

Oracleが訴訟で勝ったとしても、自分達の顧客の助けになるかどうかは明らかでない。Oracleが著作権を持つものとしてAPIを非難することになんとか決着をつけたとしても、コンピュータプログラミング言語の中で使われるAPIが、突然、違反だと主張されるかもしれない。そのため、ただのGoogleとOracleの争いだけでなく、誰にとってもソフトウェアの開発がより高価なものになるだろう。Phipps氏は、これはアメリカ合衆国にだけ影響するだろうと述べている。

これは主にアメリカの現象でしょう。ヨーロッパでは、プログラミング言語とインターフェースは著作権を持たないだろうと主張するヨーロッパ大陸の法律があります。著作権があったとしても、法律に書かれた例外により、相互互換性のために法を破っているならば、著作権が無視されることも許されます。Oracleが訴訟に勝ったという先例は、アメリカのテクノロジ業界を傷つけ、競合他社が有利になることでしょう。

裁判の結果が何であれ、その結果はテクノロジ業界に影響を与えるだろう。この訴訟は続いていくのだ。

この記事に星をつける

おすすめ度
スタイル

BT