syghの新フラグメント置き場

プログラミングTipsやコード断片の保管場所です。お絵描きもときどき載せます。

GitHub Copilotの違法性

GitHubに公開されたコードとコメントをベースに学習したAI(特化型の弱いAI)によって、関数名や設計コメントなどからプログラム内容を補完する「GitHub Copilot」という機能がプレビューリリースされ、試験運用が始まっています。同時に、この機能がもたらす問題についても懸念が持ち上がっています。

forest.watch.impress.co.jp

internet.watch.impress.co.jp

gigazine.net

今のところ自分はプログラミングだけで飯を食っているわけではなく、ソフトウェア設計や要件定義などの上流工程にも携わっているので、仮にAIベースプログラミングの進化がプログラマーの存在を脅かすことになったとしても特に困ることはありませんが、勝手に学習に使われるソースコード著作権問題が気にかかります。

自分はGitHubにいくつかコードをアップロードしていて、大半は緩めのMITライセンスで公開していますが、少なくとも「勝手に機械学習に使ってもいいよ」とは言っていません。そもそもGitHub利用規約にはソースコードフェアユースに関して書いてあるのか? 使われている言語やライブラリ、ライセンスやフォーク数などの統計データくらいであれば好きにしてくれてかまいませんが、ソースコード著作権は個々のライセンス規定に依拠するものであり、ソースコードアルゴリズムをパクってライセンス表記もなく無断で商用利用することは法律に抵触する可能性があります。GitHub Copilotがやろうとしているのは、ライセンスの違いを無視した何でもアリのちゃんぽん(無秩序・無法地帯の醸成)じゃないのか?

あなたが GitHub に投稿したコンテンツの所有者はあなたです。 ただし、お客様にはコンテンツの所有に伴う責任を負います。また、当社ではお客様にサービスを提供するために、一部の権利を当社に付与してくださるようお願いしています。

お客様は、自身が作成したコンテンツを所有することになりますが、お客様が投稿したコンテンツを当社が表示および共有できるように、特定の権利を当社に許可するものとします。 ただし、お客様が自身のコンテンツを管理し、それに対する責任を負うことには変わりありません。また、お客様が当社に与える権利は、当社がサービスを提供するために必要な範囲に限られます。 当社は必要に応じてコンテンツを削除したり「アカウント」を閉鎖する権利を有します。

「一部の権利」「特定の権利」「当社がサービスを提供するために必要な範囲」とやらは、どこまで適用されるものなのか?

無断利用の問題はAIによるパクリだけに限らず、人間によるパクリにも言えることなのですが、マシンパワーに任せた特化型AIによる自動学習は、人間の学習よりも遥かに膨大なデータを短時間で処理することができるため、より悪質な利用を爆発的に促進する可能性があります。

もし、AIによって自動生成されるコードが、学習に使われた既存コードの丸パクリになるようであれば完全にアウトだと思います。学習のさせ方にもよると思いますが、おそらく学習データが少ない場合、その可能性が高くなるのではないでしょうか。

この問題に関して、Linus TorvaldsやRichard Stallmanはどう反応するのか?

なお、日本語と英語の間の機械翻訳はいまだに実用レベルには達しておらず、幼稚そのものです。もし日本語のコメントからAIでプログラム内容を補完する場合、まず先にその課題をクリアする必要があるでしょう。
日本語で得られるIT関係の情報はほとんどが二次情報で、英語原文で得られる一次情報に比べると、現時点ですでに質も量も圧倒的な格差があります。
日本語を母語とし、普段から日本語で思考する日本人は、設計コメントも日本語で書くことが多いのですが、英語運用能力をおろそかにしていると、これから先は格差がどんどん開いていくことになると思います*1

ところで、GitHub上には良いコードだけでなくクソコードも星の数ほどあり玉石混交の状態なので、アンチパターンを間違って学習してしまう可能性もあると思うのですが、そのあたりどうなんでしょうか。しばらくは自己責任ということになるでしょうが、仮にAIを使ってプログラミングしたところで、結局のところ最終的に正しいコードかどうかを判断するのは人間です。AIによってサジェストされるようなコードすら書けないほどプログラミングスキルが欠如しているのに、本当にデバッグができるのか? 将来的に情弱が多数派を占めるようになる日本ではAIプログラミング自体ができず取り残されるか、AIプログラミングに頼るソフトウェアハウスが増えるものの、自動生成されたコードの良し悪しを精査できるスキルを持った人間がいないのでバグを作り込み炎上、という案件が増えそうですね。

*1:日本人が書く英文は分かりづらく、ソースコードのシンボル命名規則もムチャクチャであることが多いです。ヘタに英語でコメントを書くと誤解を招く可能性があります。例えば日本人が犯しやすいミスの傾向を把握しているような、Japanese-Englishに特化したAIエンジンでないと設計コメントの意図を理解できず、頓珍漢なコードが生成されてしまうでしょう。英語でコメントを書くつもりであれば、まずは英語で書かれたAPIリファレンスやドキュメントを読んで、ネイティブエンジニアがどういった単語や言い回しを使っているのか把握してからにするべきだと思います。とはいえ、自分もコメントは日本語で書くことが多いのですが……