ChatGPTは2022年11月の公開以降、既に100万人以上のユーザーが利用しており、プログラミングにおいても利用価値のあるAIサービスだと評価されています。ソースコードの作成も可能なのでエンジニアはもちろん大学生や情報系の専門学校生にとっても強い味方になると思います。
しかしその反面、以下のように考えている方もいるのではないでしょうか。
学校の課題、ChatGPTにやらせれば楽勝じゃん
子供が小学校でプログラミングの宿題を出されたけど、
私には分からないからChatGPTで調べるように言っておこう
納品間に合いそうもないなぁ・・・そうだ!
ChatGPTでソースコード作って提出しよう。
ちょっと加工しておけば大丈夫だよな。
これらは何が問題なのでしょうか?大学生の発言は「これはダメでしょ」と思う方が多いとは思いますが、他2人に関しては別にいいのでは?と感じたかもしれません。
本記事は、これからシステムエンジニアに転職を考えている方や大学でプログラミングの課題を出された方、小学校のプログラミング学習の宿題をサポートしたい親御さんに向けて、
- ChatGPTでプログラミングの課題をやっても大丈夫か
- ChatGPTのソースコードのコピペをする上での注意点
について解説していきます。
米国の大学生が人工知能に書かせたレポートがA判定に
米国の大学生が人工知能に書かせたレポートでA判定をとったことが話題となりました。(Students Are Using AI to Write Their Papers, Because Of Course They Are)
本記事に登場する学生は、以下のようなツイートをしています。
「人工知能でA判定を取ることができました。
わたしはかなり長くこのツールを使用してきて、映画や本に関する評論を書いたり質問に答えたりするという学校の課題にこのツールを利用することを思いつきました。ちょっと罪悪感はあったけど、もうそんなに気にしてません。数週間、クラスメイトの課題を請け負って100ドル以上の利益を出し、今では天才のようにみられています。
どう思いました?これ、私一人でやったと思いますか?
そうです、この投稿はAIが推敲したものなんです。」
今のところAIが生成した文章はコピペとはみなされず、米国ではこのようにしてA判定を取る学生が増えているようです。最近ではChatGPTがされ日本でも話題になっており、つい先日にはMicrosoft社が対話型AI機能を搭載した「新しいAI」を、それを追うようにGoogleでも「Bard」の導入が発表され、AIがより我々にとって身近な存在となってきています。
ソースコードのコピペはどうやってバレるのか
そもそも、ソースコードのコピペはどうやってバレるかについて考察します。
コピペチェックツールでバレる
ネットには多くのコピペチェックツールが公開されており、無料で使えるものもあります。
私がWebライターの仕事をする際によく使うのは「CopyContentDetector」です。けっこうクラウドソーシングでもこのツールを指定している依頼者がいる印象です。
以下のようにコピペチェックしたい文章をテキストボックスに貼り付けてボタンを押すと、
一致率が表示されます。どれも20%以下なのでコピペ文章ではないということが分かります。
これが、ネットに存在する文章だと一致率が上がります。
どのサイトからコピペしてきたかまで分かってしまいます。
コピペした記事:【ChatGPT】エンジニアがChatGPTを仕事に活用するためのアイディア5選
人が書いたソースコードにはクセがある
大学のレポートよりも読書感想文よりも、ソースコードのコピペはバレやすいのではないかと個人的には思っています。それは、「人が書いたソースコードにはクセがある」からです。多かれ少なかれ、どこかしらに個性が出ます。
インデントや空白の使い方
以下のような短いソースコードでも、人によって書き方に違いがあります。
var val = 100;
if (val > 0){
console.log("valは正数です");
}
上記のソースコードでは各単語のあいだに半角スペースがありますが、「if(val>0{」のようにスペースを空けずに書く人もいますし、インデントがズレたままになっている場合などがあります。空白をタブで埋める方もいれば、半角スペースを使う方もいます。
関数名やコメントの付け方
関数名や変数名も個性が出やすい箇所のひとつです。
function CheckNum(val) {
if (val > 0) {
console.log("valは正数です");
}
}
上記のソースコードは引数valが正数かどうか確認する関数ですが、人によっては「ChkNum()」かもしれないですし、「isPositive()」かもしれません。変数に関してもvalue、num、imputValなど命名の仕方は様々です。
関数名の大文字小文字も、キャメルケース(checkNum)、パスカルケース(CheckNum)、スネークケース(check_num)など、人によってどれを採用しているかは異なります。
コメントについても、人によっては全然コメントを付けない人もいれば、かなり丁寧にコメントを書く人もいます。
アルゴリズムや設計思想
「値が0よりも大きい場合」という判定文ひとつを書くにしても、書き方は人それぞれです。
「if (val > 0)」とも、「if(Math.sign(val) == 1」とも書くことができます。短いコードだとあまり差は出ませんが、複雑になればなるほど書く人の設計思想に左右されたコードとなります。
どんな方法で目的を実現するか(アルゴリズム)は人によって異なります。具体的にいうと、例えばカレーを作るときに、とある主婦は具材をまずひたすら切ってから鍋に入れますが、ある男性は各具材を切るごとに野菜を入れます。
最終的に出来上がるものはどちらもカレーですが、その過程が異なっていますね。これはソースコードにおいても同じです。もしシチューを作る場合でもとある主婦はきっと野菜をまとめて切るでしょうし、男性はその都度なべに入れるでしょう。
これはプログラミングにおいても同様に、その人の持つ考え方のクセのようなものがソースコードには多かれ少なかれ反映されています。
コピペ元のフォーマットがそのままになっていてバレる
ソースコードをコピペで貼り付けると、保存したソースコードに複数の文字コードが混在してしまったり、コピペ元のソースコードに含まれる全角スペースやタブがそのままになっていることでバレる可能性があります。
以下のファイルは、メモ帳で見るとただの真っ白なファイルに見えますが、
別のテキストエディタ(サクラエディタ)で表示させてみると、SJISの半角スペースと全角スペース、UTF-8の半角スペースが入っていることが分かります。
コピペチェックをすり抜けるAI
ここまで、ソースコードのコピペは、コピペチェックツールと人間の目によってバレる可能性があるという話をしてきました。対して、ChatGPTをはじめとするAIが作ったソースコードは、世の中のあらゆるコピペチェックツールをすり抜け、人間が見てもコピペという判定はされません。
それならChatGPTにソースコードは丸投げという形でも問題ないような気がしますが、ここで注意しなければならない点があります。
ChatGPTでソースコードをコピペするときの注意点
ChatGPTが作成したソースコードをコピペする上での注意点は以下の3点になります。
ChatGPTの「最新」は2021年
ChatGPTは2021年までのデータをもとに回答をしています。ChatGPTのなかでは2021年が最新なのです。よって、「Pythonの最新バージョンは?」と尋ねれば2021年時点での最新バージョンを答えます。
また、Power AutomateのフローをChatGPTに質問すると、今では非推奨のアクションを含んだフローを答える場合がありました。以下はOutlookに関するアクションですが、赤枠部分の「イベントの取得」は末尾に(V3)、(V4)とあり、バージョン違いであることが分かります。
ChatGPTが作成したソースコードをコピペすると、現在は非推奨になっている関数が使われている可能性があり、それをそのまま使うことで教授にコピペがバレたり、仕事であれば本番環境で何故か動かないといった問題が発生する恐れがあります。
他の学生もChatGPTを使っているかもしれない
皆が課題をやるのにChatGPTを使ったら同じようなソースコードになって教授にバレる可能性があります。コピペであれば、コピペチェッカーで大丈夫そうならまずバレないとは思いますが、ChatGPTはそもそもコピペチェッカーをすり抜けるので、他の人と同じようなソースコードになっているという事実には気づけません。
ChatGPTが作ったソースコードをちょっと加工したくらいだと意味がないかもしれません。なぜかというと、先に話した「古い関数」など、そもそも情報が古かったり、処理が間違っている可能性があるからです。
コピペ作業にならないよう学習意識を持つ
ソースコードのコピペは、著作権や使用条件を理解したうえで問題ないのであれば、全然やっていいと思います。しかし、ソースコードをコピペすることが作業にならないよう、学ぶ姿勢を忘れないことが大事です。
例えば、初心者の方がなにもないところからいきなりソースコードを書くのは難しいと思いますが、ChatGPTが書いてくれたソースコードをもとに、
このif文の処理をswitchにして動かしてみよう
「print(‘Hello World’)」の中身を変えて表示させてみよう
など、少し工夫するだけで十分に勉強になります。ChatGPTは、使い方次第でプログラミングスキルを高めるためのツールとして十分に活用できます。「何やってるかよく分からないけどとりあえず動くから使う」だけは厳禁です。特に仕事で使う場合はダメ、ゼッタイ。
AIが作成した文章かチェックするツールがある
ChatGPTなどのAIが作成した文章かどうかを判定するツールが存在します。英語のみの対応ですので、日本語の文章では精度が下がりますが、参考程度に使えるレベルのツールとなっています。
以下はOpenAIが公開している判定ツールです。1000文字以上からしか判定できませんが、日本語の文章でも一応判定にかけることができます。
結論:脳死で使わず考えて活用しよう
ChatGPTのソースコードをコピペする場合には、ちゃんと理解した上で使うことが重要です。現役のエンジニアは日常的にコピペをしていますし、コピペ自体が悪いものではありません。
しかし、「良いコピペ」「悪いコピペ」の判断がつかないうちにコピペを多用するのは、仕事であれば重大なミスになりかねませんし、学校であれば不正がバレて単位を落とすというリスクがあります。
ChatGPTをうまく活用すれば、独学でプログラミングを学ぶことや、仕事で行き詰ったときの解決の糸口となります。単なる作業となってしまわないよう、何を達成したいのか、何を学びたいのかを考えながら利用して作業効率を高めていくことが大切です。
コメント