GitHub Copilot...強すぎない??
はじめに
こんにちは。
最近競技プログラミング(競プロ)の面白さに気づいたのですが、同時にCopilotのヤバさにも気づいてしまった(今更)ので軽く戦慄しています。もう笑いが止まりません。普通にダメだろこれ。
GitHub Copilotとは
ドキュメントによると、
GitHub Copilot は AI コーディング アシスタントであり、コードをより速く楽に記述できるため、問題解決とコラボレーションにより多くのエネルギーを集中できます。
(中略)
GitHub Copilot には、一連の機能が含まれています。 Copilot を使って次のことができます:
- IDE で入力したコード候補を取得する
- コードに関するヘルプを求めて Copilot とチャットする
- コマンド ラインを使用して Copilot にヘルプを依頼する
- pull request _ (Copilot Enterprise のみ) の変更の説明を生成する_
- Copilot (Copilot Enterprise のみ) とのチャットのコンテキストとして使用するために、サポート技術情報と呼ばれるドキュメントのコレクションを作成および管理します。
とあります。
要は、今話題のChatGPTのような生成AIみたいなもので、コーディングの支援をしてくれるツールになります。
有料のProプランもありますが、制限付きで無料のFreeプランもありますので、まだ使ったことのない方は一度使ってみて下さい。冗談抜きで世界が変わります。
何がヤバいのか
本題の前に;
競技プログラミングにおける生成AIに関するレギュレーションについて
ChatGPT等の生成AIというのは競プロにおいてまさに最強の道具で、問題文をコピペするだけで答えが返ってくるという、チートレベルのツールなわけですが(問題が難しくなってくるとその限りではない)当然それに対するルールが定められています。普段自分が使ってるAtcoderというサイトにおいては(Atcoder生成AI対策ルール)[https://info.atcoder.jp/entry/llm-rules-ja]というものが公開されています。
そこには
・開催中のコンテストにおいて、問題理解、ロジックの作成、または意思決定のために自身の推論を代替するような生成AIの使用は原則禁止
・ただし、問題文の翻訳、コード補完ツールやプログラミング言語の変換のための使用は、例外として許可される
とあります。この「コード補完ツール」というのがCopilotにも当てはまりますので、Copilotは使用しても構いませんというわけです。(「問題や部分問題を解かせたり、アイデアを得たりする用途に使用してはいけません。」という補足はありますが)
以下グレーゾーン
注)やっていいのかわからないので自分はコンテストが終わってからやってます。有識者の方お待ちしております。
さて、Copilotについてルールには
コードを書くスピードを上げる用途に限り、生成AIベースのコード補完ツールの使用を許容します。
問題や部分問題を解かせたり、アイデアを得たりする用途に使用してはいけません。
という補足があります。
つまりはC++で回答する場合、
cout << x
と入力したところで出てきた
<< endl;
という補完はやってもいいけど、Copilot Chatに「これどうやって解いたらいい?」と聞くのはアウトということですね。
じゃあこれはどうなんだよと
for文の最初をちょっと入力したら自動で中身まで補完してくれるという離れ業。しかもこれ、あってるんですよね。さすがにこれはやっちゃいけないんじゃないかと、「アイデアを得たりする用途」なのではないかという話になるわけですが、すでにfor文を書き始めた段階でアイデアというか解き方は固まっているわけですから、これはコード補完の範疇なわけです。
これって本当に使っていいんですか?
結論
AIはすごい
Discussion