生成AIとプログラミング

この記事は、大阪工業大学 Advent Calendar 2024の9日目の記事です。

 今から約2年前にChatGPTがリリースされました。ChatGPTのリリースによってAIがどこまで進んできたかが公に明らかになったような気がします。今回は、「プログラミング初学者が生成AIを用いてプログラムを作成する」ことについて、自分の意見を書いていきたいと思います。


 まず、私は基本的にプログラミング初学者が生成AIを用いてプログラムを作成することに賛成です。主な理由としては2つあります。

理由1:そもそもプログラミングのモチベーション付けが難しい

 そもそもプログラミングはかなり敷居の高い物と私は考えています。
 例えばScratchは小学生でもできる言語ですが、将来実用的かと言われるとなかなか怪しいです。考え方は身につくものの、Scratch自体を事業に用いるのはかなり無理があると思います。(その無理を通してるものもあります)
 となってくるとC言語やJava、Javascriptを使っていこう、となりますが、今度は環境構築が非常にだるいのです。かつてMinecraftのModを作ろうとしたときに、「Eclipse入れて、JDK入れて、ふぅ、環境変数???…(30分)…やっと理解した……あれ??」となってモチベーションが吹っ飛びました。

 プログラミングを始めるきっかけとして、「〇〇みたいなのを作ってみたい!」「〇〇の作業を簡単にしたい!」等が多いと思いますが、まず環境構築で挫折した人も多いのではないかと思います。そして環境構築が終わったらスタート地点に立てます!ここからHello Worldをして、数多なるステージを超えて作りたかったものを作りましょう!…モチベーション飛ぶって。

 ということで、継続的にプログラミングをしていくためにも、「まず生成AIで作りたかったものを実現させ、そのコードを変えたり調べたりすることで理解していく」という手順が大切だと思いました。

理由2:アルゴリズムを自分で思いつくには無理がある

 大学でもアルゴリズムの授業がありますが、なぜわざわざアルゴリズムを学ぶかというと、「自力でアルゴリズムを生み出すことは難しい+非効率」だからです。

 現在B1のC演習1を受けている方は記憶に新しいと思いますが、前回の小テストの最終問題で
「最高気温と最低気温が与えられ、日格差を求めよ。終了条件は【最高気温に-100以下の値が与えられた時】で、最低気温を取得しようとしてはならない
」という出題がありました。
最低気温を取得してはならないなら、
・1ループのscanfを1回にする
・習っていないbreakを用いる
しか方法がなく、習ったことだけを用いる場合、
・ループ回数の余剰で最高気温への入力か最低気温への入力かを判定する
・変数modeを準備しておき、0→最高気温への入力として解釈、mode←1、1→最低気温への入力として解釈、mode←0
のようなアルゴリズム(?)を用いる必要があります。

 上の例は簡単なアルゴリズムの例として挙げましたが、これより難しいアルゴリズムの場合、思いつくことはさらに困難になってくるでしょう。

 ここで生成AIを用いて、「こんな感じにプログラムを組みたい」と伝えてあげると、いいアルゴリズムを用いてプログラムを書いてくれます。さらに、目的に応じて様々な提案をしてくれます。

要素10の配列をソートするコードを書けと命令した。ソース部分は省略。

 生成AIはしゃべる辞典のようなものなので、自分の問題を教えてあげて、解き方を一緒に考えてみるのもよい使い方だと思います。

生成AIを使ってプログラムを書く時の注意

 先ほど「しゃべる辞典」と書きましたが、あくまで「収集した膨大なデータを用いて回答するツール」と意味で書きました。そのため、生成AIは間違いを犯します。
流石にデータが消えるなどの重要な問題が発生することは稀ですが、小さな間違いは普通に犯すので、自分で生成した内容を理解しておく必要があります。以下に自分が遭遇した間違いを書いておきます。
・過去の指示を守らない
・if { } 内に書くべき命令をif { }外に書いた
・想定バージョンではないバージョンのコードが生成された(Java 8で書くつもりが、最新バージョンのJavaで出力された)

結論

 結果的に私が言いたかったことは、
・生成AIを使ってプログラミングを始めることはすんごい大事
・でも過信は良くない。難しいコードを書けっていうとすぐ間違いを出力する
・あくまでアイデア出しとか補助ツールとして使うべき。ただ自分で検証できる力がついてきたら頼るのもアリ
みたいな感じです。

ここまで読んでいただきありがとうございました!


おまけ(AI絵師について)

 生成AIで画像を作っている絵師さん、通称「AI絵師」の著作権問題が話題になっています。そもそも、「人間の絵師」と「AI絵師」の違いは何なんでしょうか?
 これは「どれだけ考えて絵を作ったか」の違いだと思います。人の絵を学習しているのは人間の絵師だって同じなわけです(練習で他人の絵をなぞったり写したりしますよね)。ただ、髪の毛のグラデーションをどうしようだとか、どのブラシを使おうだとか、「人間の絵師」のほうが「Ai絵師」より考えていることだとか、必要な技術は多いです。
 「学習」の部分においては、人間もAIもさほど変わりはありません。AIは例えば山の画像として学習を重ねたなら、「緑の三角」が山なのかなーと学習します。私たち人間も、子供の時に同じように「山」を習ったはずです。

 しかし、AI学習禁止派が生まれた理由として、「AI絵師」側が、「人間の絵師」を下に見ているからというのはあると思います。「人間の絵師」のほうが、「AI絵師」より高い絵を描く力が必要なわけですから、尊敬する必要があります。その上で、低コストで画像を作成できる画像生成AIを使っていけばいいのではないか、と思いました。


いいなと思ったら応援しよう!