ネット上で公開されているコードをコピペする前に確認すべきこと
こんにちは。
佐野研二郎氏による2020年東京五輪エンブレムのデザインがパクリではないかという疑惑が持ち上がり、ついには使用停止に追い込まれました。
さて、アプリ開発をやっていると、ことあるごとに問題に遭遇し、その度にググっている(Google検索している)という方が多いとおもいます。その際に検索して見つかるコードを、自分のコードにコピペしてよいのでしょうか?
肌感覚ではだいたいわかっているつもりですが、せっかくなので明文化してみました。(問題等のご指摘歓迎します)
Contents
公開する予定のないアプリへのコピペ
もしコピペする先が、なんらかのテスト目的などで、公開する予定のないアプリの場合、問題はありません。がんがんコピーして使いましょう。
特に何かの機能が実現できるのかできないのか、本格的な開発に入る前のフィージビリティテスト(実現性試験)はこのケースに当てはまります。
注意すべき点は、「最初は公開するつもりでなく作成したコードを、いつのまにか公開する本番コードにも使ってしまった」ということがいかにも起こりそうなことです。特に会社で開発している場合、前担当者が作ったコードなどを引きついだ場合などもちょっとリスクがあります。
「公開する予定がない」というのは、言い換えれば「それで儲けないし、他人の儲けも阻害しない」という意味です。
公開する予定のあるアプリへのコピペ
会社の仕事などでコード開発している場合、コピペして良いかどうかはケースバイケースです。以下いくつかの例を考えてみます。
使用条件(ライセンス)が明記されていない場合
技術ブログなどで「個人の覚書です」などとだけ書かれていて、使用条件(ライセンス)についての言及がないことがよくあります。この場合、そこに掲載されているコードをコピペして良いかどうかは、それを公開している人(ブログ作者)にメールなどで「あなたが公開しているコードを、会社で使用するコードに部分的に使用したいけど問題ないですか?」と確認するのが確実です。しかし自分はそこまでやることはないです。じゃあどうしているかは後述します。
使用条件(ライセンス)が明記されている場合
技術ブログなどで「本ブログのコードは自由に使用してください」などと明記されている場合、ほとんど問題は発生しないはずです。コピペしましょう。(この場合、リスクは0ではない)
もちろん「無断転用などは禁止です」と書かれていたら、だめです。
オープンソースソフトウェアのコードの場合
GPL, Apache ライセンス、MIT ライセンスのもとで公開されているコードの一部を使いたい場合は、「コードの改変」に相当するため、ライセンス規約にしたがう必要があります。
GPL ライセンスのコードを使ってしまうと、自身のコードも GPL のもと、公開する義務が発生します。おそらくアプリ開発においてはこれは受け入れ難いはずです。コピペはあきらめましょう。
Apache, MIT ライセンスの場合、自身のコードには同等のライセンスを適用する義務はないですが、もともとのコードの著作権情報とライセンス情報を、わかりやすい場所に表示する必要があります。たとえばアプリであれば、アプリの著作権表示に「このアプリはXXXXXのコードを使用しています」などと明記する必要があることになります。個人的には、ほんのちょっとのコピペのためにこのような義務が発生するのは、のちのち負担になるので、あまりやりたくはないです。しかしコピペは禁止されてはいません。
(参考ページ)
ライセンスの選択を恐れる必要はありません – Qiita
http://qiita.com/tadsan/items/99d816e78ca429093b75
じゃあどうすればよいのか
あなたが開発しているアプリが会社名義で公開予定であったり、ものすごい利益をもたらす可能性がある場合は、基本的にコピペはしないほうが確実です。
コピペはばれます。ソースコードのままだともちろんですが、コンパイルした後でも場合によってはばれます。ダウンロード数が10とかのアプリなら、そもそも調査されないと思いますが、まちがって何億、何十億の利益を生んだり、あるいは他人の利益を阻害したりすると調査される可能性がでてきます。
自分の場合は以下の方法を取っています。
- コピーしたいコードを100%理解する
- 理解した内容を、自分のコーディングスタイルで一から書く
- それでも結果としてまったく同じコードになってしまった場合、「このコードは標準的な技術を持つ技術者であれば、別個に思いついた可能性がある」と判断して、そのまま使う
「自分のコーディングスタイル」というのは、たとえば変数名や関数名などです。コピペがクロ認定されるのは、だいたい「こんな変数名、普通つけないだろ」というのがかぶってたりする場合です。(ただし変数名だけ変えろと言っているのではありません。)
ここまでやっておけば、万が一裁判にでもなったりしても、まず問題ないはずです。
まとめ
- 公開予定のないものへのコピペは問題ないが、意図せず公開されることもあるので注意。
- コピペは他人の利益を阻害する可能性があるので特に許可された場合以外やってはいけない。
- コピペしたいコードは、そのコードを自分で100%理解して、自分で一から書くべき。
Pingback: Cocos2d-JS の Scale9Sprite で画像を伸縮する代わりにタイルする方法 | tomeapp