生成AIに丸投げでプログラムが完成するわけではない

7月9日の水曜日のクラブ活動は、それぞれの課題に取り組ました。

メニュー

  • 18時00分~18時30分 タイピング練習・アルゴロジック
  • 18時30分~21時00分 プログラミング各自の進み具合で

タイピング練習

タイピング練習とアルゴロジックはいつものとおりです。

無料タイピング https://manabi.benesse.ne.jp/gakushu/typing

寿司打 https://sushida.net/

アルゴロジック1が終わって、アルゴ2に挑戦のメンバーがほとんどです。アルゴ2は、なかなか難しい様子。

教材を進める二人

まずは教材をすすめているのが2人です。

「生成AIにプログラムを作らせるだけなら、クラブに来る意味がない」とはごもっとも。

わたしの思いは、生成AIのプログラムと、教科書をいったり来たりしながら、自走できる力をつけてほしいということです。

あとにも書きますが、生成AIは万能でありません。ある程度コンピューターの知識があることを前提に、生成AIでさらに力を引き出せるのです。

ということで、教材を読みながら試行錯誤するのは重要です。

オブジェクト指向は概念だけ学んでもわからない

進み具合の速いメンバーは、オブジェクト指向を学習しています。ただし、教科書に出てくる「クラス」「メソッド」「プロパティ」「インスタンス」「ゲッター」「セッター」などの用語のイメージがつかなくて、四苦八苦しているようすです。

わたしも、オブジェクト指向の用語と概念がよくわからず苦労しました。まずは、わかりやすい例でイメージをつかんでもらいます。クラスメイトを例にイメージをつかんでもらいました。

イメージをつかんだら、あとは実際のプログラムを写経して具体的なコードを読んでいきます。色々資料を読んで実践して、一番腑に落ちたのはMicroPythonでRaspberry Pi Picoを動かしたときでしょうか。この日は、ラズPicoを持っていないので次回持ってくることを約束しました。

プログラムの歴史の中で、オブジェクト指向は重要な位置づけにあります。しっかり力をつけてもらいたいと思います。

生成AIプログラミングで課題解決する

生成AIでゲームばっかり作っていても面白くないので、実用的なプログラムを作ってみたいと思います。以下のような仕様でプログラムを完成させます。

6月の最高気温と最低気温をデータとしてファイルで与えるので、それを折れ線グラフの画像ファイルとして出力するプログラム

高校生のメンバーで、大学に進学すれば、遅かれ早かれどこかで似たような課題をやります。文系理系関係なく、やるところはやります。

ということで、試行錯誤しているところ。

最後の方では、グラフが出力できていました。

ただ気になったのが、コードが長いこと。複数のメンバーが、120とか180行のプログラムになっていました。これは、わたしの感覚だと「長すぎ」ます。

そこで、わたしも生成AIにコードを書かせてみました。書かせたコードは以下のとおりです。

pythonで、折れ線グラフを描くプログラムを作ってください。詳細仕様は以下によります。
・外部ファイルとして、同じディレクトリにある「data.txt」を読み込みます。
・グラフはPNG画像で同じディレクトリに出力してください。
・data.txtは、tabで区切られた3列のデータで構成されています。
・1列目は、日付です。「2025/6/1」のように記載されます。
・2列目は、最高温度です。数字のみ「25.4」のように記載されます。
・3列目は、最低温度です。数字のみ「19.2」のように記載されます。
・出力されるグラフは、最高温度と最低温度の経時変化の2本の折れ線グラフとします。
・グラフの色は視認しやすい色を選択してください。
・出力されるファイルは、「graph.png」とします。
・インストールが必要なライブラリは、指示してください。
・このほか、必要な情報があれば指示してください。

使ったのは、GPTとClaudeです。出力されたコードは、40~50行ほどでした。

同じ結果が得られるなら、プログラムコードは短いほうが優れています。コードがながければ長いほど、バグが介在する可能性が大きくなるからです。

生成AIは万能の魔法の杖ではなくて、プロンプト(指示文)の書き方で大きく結果が変わります。これは、WEBにずばりの答えが存在しない問いほど顕著です。

たとえば、テトリスのようなゲームを作るのは、だれがどんなプロンプトを書いたとしても一定水準の結果が得られます。一方、今回のわたしが出したような問題では、プロンプト次第で結果が大きく違ってきます。

ゲームを作っているメンバーも

遅れてきた中学生のメンバーは、グラフではなくゲームを作っていました。

ポケモンのような、キャラクターが動く画面と、テキストで実況中継するゲームです。さらに選択ボタンがついているのは、よくできていると思います。

バトル部分のプログラムはなんとなくイメージできるのですが、シナリオはどうするのだろう? このあたりを作り込んでいくと面白そうですね。