――大学4年の春。授業でChatGPTを知った私は、宿題をサボるためにその活用法を編み出した。プログラミングにも使えることを知り、出来心で「#100日チャレンジ」に取り組み始めた。毎日1本、新しいアプリ(作品)を作り、X(旧ツイッター)に投稿するというものだ。暇つぶしで始めたそれは、過酷な挑戦であると同時に、日常的な興味と学び、そして飛躍をもたらした――。Z世代の著者によるAI駆動型プログラミング学習探究記『#100日チャレンジ 毎日連続100本アプリを作ったら人生が変わった』(大塚あみ著)から、100日チャレンジの前日譚「ステップ0 プロローグ」編を抜粋・再編集してお届けします。その第3回。
4月29日(土)、私は少し遅れそうになりながらも急いでワークステーション室に向かっていた。授業の開始は午前10時50分だったが、時計を見ると既に10時52分。まだ授業が始まったばかりだろうと自分に言い聞かせながら、少し焦った気持ちで教室のドアをそっと開けた。中に入ると、佐々木先生はまだ準備中で、他の学生たちは静かに自分のパソコンを立ち上げていた。どうやらセーフのようだ。私はホッとしながら、いつもの席に着いた。
しばらくして佐々木先生が教壇に立ち、今日の授業が始まる。先生は早速、プロジェクターでスクリーンに映し出した画面を指しながら説明し始めた。
「今日はPython(パイソン)を使って簡単なプログラムを作成するところから始めます」
前方のスクリーンに映し出されたタイトルには、「GoogleColaboratory(グーグルコラボラトリー)で学ぶPythonプログラミング」と書かれている。どうやら今日はオンライン上でPythonを実行できるツール「Colaboratory 以下Colab(コラボ)」を活用した授業のようだ。Colabを使えば、ウェブブラウザ上で直接Pythonコード、言い換えるとプログラミング言語のPythonを使って書いたプログラム、を入力して実行できるため、パソコンに複雑な設定をする必要がない。
佐々木先生は全員に向かってColabへのログイン手順を説明し始めた。私はその説明を聞きながら手元のパソコンを操作し、指示に従ってColabにログインしてみる。先生が説明していた通り、手順はとても簡単で、すぐにPythonの実行環境が立ち上がった。「これなら、すぐに使えそうだな」
佐々木先生が指示を出す。
「まずは簡単なPythonのコードを書いてみましょう」
佐々木先生がスクリーンに投影したサンプルコードは、変数の代入や四則演算を行う基本的なものだった。私はその内容をパソコンに打ち込み、すぐに実行してみる。コードを実行すると、指定した計算結果が画面に表示され、とくに問題なく動作していることが確認できた。
私は以前、VBA(ブイビーエー=Visual Basic for Applications)というExcel(エクセル)を自動化するプログラミング言語の授業を受けたことがある。簡単なプログラムや入力フォームを作ったのだ。そのため、ColabもPythonもとても簡単に感じ、すぐに退屈し始めた。
そのときに思い出したのは、以前VBAで作成した数当てゲームだった。あのときは、数字をランダムに生成して、それをプレイヤーが当てるというシンプルなゲームを作ったけれど、完成までにかなりの時間がかかった。構文の正しい綴(つづ)りなんて覚えておらず、いちいち調べ、プログラムの誤りであるバグが生じたらまた確認する、といったことを繰り返したため、2時間くらいかかったのだ。しかし、今回は違う。私の手元にはChatGPTがある。
「もしかして、ChatGPTは数当てゲームなら簡単に作れるのでは?」
私は先生の説明をそっちのけでChatGPTを起動し、次のようなプロンプトを打ち込んだ。
すると、あっという間にコードが表示された。ゲーム内容は、コンピューターが1から100までのランダムな数字を生成し、それをプレイヤーが当てるというものだ。数字を予想するたびに「もっと大きい」「もっと小さい」とヒントが出るようになっている。生成されたコードをColabにコピペして実行してみたところ、何の問題もなく動いた。私は驚きつつも感心してしまった。前にVBAで同じゲームを手作業で作ったときの苦労を思い出しながら。
「たった数分でできるなんて……」
数当てゲームがうまく動作したことで、私はすっかり気分をよくしていた。授業の残り時間はまだ1時間ほどあった。せっかくだから暇つぶしにもうひとつ何か作ろうと考え、ふとオセロが頭に浮かんだ。
「オセロのような複雑なゲームも、ChatGPTなら作れるだろうか?」

「play_game」関数を実行すると…
ChatGPTは関数を3つ出力した。「initialize_board」、「print_board」、「make_move」という名前だ。しかし、これらの関数をColabで実行したものの、動かなかった。私は尋ねた。
ChatGPTはそう言うと、「play_game」関数を出力した。
私が「play_game」関数を実行すると、盤面には文字列が現れた。盤面は●と○で表現され、プレイヤーは手動で座標を入力して石を置く形式だ。画面上には8×8の盤面が表示され、手を進めるごとに盤面の状況が更新されていく。派手なグラフィックスこそないが、基本的なオセロのルールに従って進行するゲームだった。
私は「おお、動いた!」と小さな声で呟き、しばらく盤面を見つめていた。思ったよりも簡単に動かせたことに驚きと感動があった。VBAで数当てゲームを作ったときの苦労をまた思い出し、技術の進歩に感謝せずにはいられなかった。
次の瞬間、背後から声が聞こえた。
「何が動いたんだ?」
振り返ると、佐々木先生が私の後ろに立っていた。私は慌てて画面を隠そうとしたが、もう遅い。先生の視線は私のパソコンの画面を凝視していた。
「いや、その、if文の練習をしていて……」
私はごまかすように答えたが、先生はニヤリと笑った。
「オセロを作ったのか? ちょっと動かしてみてよ」
私は数字を2つ入力すると、白のターンに移った。
「これはすごい。ChatGPTに作らせたのか?」
「はい。作るように指示して、いろいろと触っていたらできました」
「いくつか授業を持っているけど、授業中にゲームを作った学生は初めて見た。また改善したら見せてよ」
予想外の展開に戸惑い、どう反応すればいいのか分からなかった。
「はい、また作ってみます!」
先生は教室の前に戻り、授業を再開した。
「置ける場所を教えて」
作ったゲームを試していくうちに、ある問題に気づいた。間違った場所に石を置こうとすると、プログラムがエラーを出して止まってしまうのだ。そのたびにプログラムを再実行しなければならず、面倒だ。「これではスムーズに遊べないな」
私は、再びChatGPTに助けを求めることにした。
ChatGPTからすぐに返信があった。
尋ねると、ChatGPTは詳細な説明とともに新しいplay_game関数のコードを送ってくれた。
直ちにそのコードをColabにコピーし、実行してみた。しかし、またエラーが発生した。
エラーメッセージをそのまま送ると、ChatGPTはすぐに対応してくれた。
再びコードを試してみたが、今度は別のエラーが出た。
ChatGPTが答える。
何度かこうしたやり取りを繰り返し、ようやくプログラムがエラーなく動くようになった。石を置ける場所がリストとして表示され、間違った場所を選択すると「その場所には置けません」とメッセージが出るようになった。「これで間違えてもプログラムが止まらない!」
そのとき、授業終了のチャイムが鳴った。佐々木先生が「今日はここまで。みなさん、お疲れ様でした」と声をかける。私は急いでノートパソコンを片付け、教室を出た。校舎の横をゆっくりと歩く。心地よい春の風が頬をなでた。
(次回に続く)
大塚あみ著、日経BP、1980円(税込み)

