質問: ASMのような専用のツールやバイナリエディタを使ってクラスファイルを編集することができます。やり様によっては、一貫性のない状態にしたり、ファイルの構造を破壊することもできます。 質問ですが、**自作の**コードをコンパイルして生成したクラスファイルの書き換えを行ったり、書き換えたクラスファイルをVMに読み込ませたり、配布したりすることが(例えばコンパイラ提供者の)規約に抵触するということはあるでしょうか?
回答: 初めに、私は法律の専門家ではありません。下記は法的に正しいことを何ら保証する物ではありません。参考意見にとどめるようにしてください。厳密な法的解釈については、コンピュータ著作物に関する著作権に詳しい弁護士に相談するようにしてください。 一般的な話とJavaをコンパイル出来る二つの実装(Oracle JDKとOpenJDK)についての話にわけて考えていきます。 ### 一般的な話 いわゆる逆アセンブル、デコンパイルを禁止できるのは著作権者が禁止する場合のみです。著作権者では無い第三者がそれを禁止することはできません。何かしらのデータを一定の法則に基づき機械的に変換し別のデータにした場合、変換後のデータの著作権は変化前のデータの著作権者が有しています。では変換に使った道具の著作権者は変換後のデータに対して著作権を持つかというと、持たないと考えるのが一般的です。 例えば、ある「絵」をデジカメで撮って「JPEGファイル」にした場合を考えます。この場合、「JPEGファイル」の著作権は「絵」の作者も有していると考えられます(二次的著作物)。ただし、写真をとった人物も「JPEGファイル」に対して著作権を有する場合があります。しかし、著作権は思想・感情を創作的に表現した場合のみ発生するのであり、そういった要素が入り込まない場合は単なる複製にすぎず、写真の撮影者が著作権を有しているとは考えられません(注意すべきは、「絵」以外の要素、背景や光の映り具合や角度などに創作性がある場合は、撮影者にも著作権が認められると言うことです。)。また、デジカメ自体は機械的に変換を行っているのみであり、デジカメの制作者によって「創作的に表現した何か」があるわけでは無いため、同じく著作権を主張することはできません(ただし、デジカメに内蔵されたフィルター機能等を用いる場合は、状況によるとも考えられます)。 ### Oracle JDK Oracel JDKのライセンス(日本語参考訳)では、JDKを用いて生成された何かしらのデータに対して、権利を主張したり、制限を行ったりするような規約は見られません。Oracleが著作権を主張する範囲は、JDKおよびそれに付随する各種資料についてだけであり、JDKからの出力については著作権を主張していません。 ### OpenJDK OpenJDKはGPLリンク例外つきのGNU GPLを採用しています。GNU GPLではそれを用いた出力結果に権利を有しないと考えられています。 ### まとめ 以上のことより、**自分の**コードをコンパイルしたclassファイルの著作権は元のコードと同じく**自分のみに**あると考えられますので、**自分が**何をしようが他の権利を侵害することにはならないと考えられます。