見出し画像

IT教育における(僕なりの)ChatGPT活用法

第3次AIブーム、いわゆる深層学習(と機械学習)ブームは2010年くらいから始まったと言われています。
画像や自然言語、音声に関わる非常に高性能なAIが日常生活にまで浸透するという巨大なブレイクスルーが来て、そののちにさすがにこのブームも衰退していくのかと思いきや、皆さんご存知の通りStable Diffusion(画像生成AI)ChatGPT(チャットAI)が突然彗星のごとく登場し、我々人間に怖いほどの便利さを感じさせながら、なお猛スピードでの成長を続けています。まるで、第3次AIブームが終わる前に第4次AIブームが来てしまったかのような。

ChatGPTが凄い。

で、最近話題のChatGPTですが、僕もお仕事で最近使い始めました。というのも、こいつ、まじで凄すぎるくらいに便利なのです。それこそ、いうなれば怖いほどに便利なんです。これが、、、シンギュラリティ、、、ってやつなのか、、、って感じ。

まぁ、ChatGPTの凄さは実際のところはシンギュラリティがどうこうとはまた別の話でしょうし、そういう話はとりあえず置いておくとして、僕の仕事であるIT教育において、ChatGPTをどのように活用しているかをこの記事ではご紹介しようと思います。結論、ChatGPTによって僕の仕事から「単純作業」がかなり減り、本来の知的労働に集中をできているような気がしています。ものの見事に「かゆいところに手が届く」のです。

(1) 作問

まず、マジで便利なのが作問です。特にプログラミングの授業なんかをしていると、演習問題を作って学生に解かせる機会が多いのですが、人力による演習問題の作問は以下のような理由で結構たいへんです。
・作るのにそれなりに時間がかかる。
・問題文はまだしも、解答を作るのが面倒。
・タイプミスなどがどうしても出てくる。問題文も解答も同様。

ところがこれは、ChatGPTに以下のように頼むだけですべて自動的に行われます。

C言語の練習問題を5問作って。
・難易度は低め
・printf, scanf, 変数, for文, while文, if文だけで解けるように

出力結果は以下の通り。出力にかかった時間はものの数分。

言語を変えたいときは、「C言語」の部分を「Python」というふうに変えればOK。難易度も「低め」を「高め」のように変えればOK。問題数も適宜変更すればその分だけ作ってくれます。

実際に問題と解答としての出来も基本的には申し分なく、このままの問題文で受講生に渡せるレベルに大体なってます。さらに、解答もぽちぽちコピーして貼り付けなどもできますし、受講生への共有も簡単。解答も人間が作るよりもだいぶ正確です。

試しに、難易度高めの問題を1問作ってもらいました。

おおすごい。ちゃんと難しい。問題も網羅的な知識を問うている感じがいいですね。ただ、Even numbers removed Listの出力例は正しくないですね。一応、人力による確認は必要だと思います。

もう正直、これだけでもChatGPTを使う価値はある…。

(2) コードを書く

さらに、ChatGPTに「こんなコードを書いて」と頼むと、かなりいい感じのソースコードを書いてくれます。例えば以下のような感じ。

ユーザが入力した文字列を半角スペースで区切り、リストに格納し、
それをfor文で1つずつ改行しながら表示するJavaプログラムを書いて。

出力結果は以下の通り。

完璧にこちらの要求の通りの、正しいソースコードを返してくれました。さらに最後にはご丁寧に補足説明までしてくれています。読んでみると、それなりにJavaに詳しい人じゃないと書けないレベルの補足説明です。これは恐ろしい…。

いろいろ試してみましたが、怖いくらいこっちの要求を汲んできます。しかも結構な確率で正しいです。プログラマという職業のありかたが変わってくるかもしれないですね…。ただ、あくまで間違えが混入している可能性は全然0ではないので、人力による確認はやはり必要でしょう。

(3) バグ探し

なんとChatGPT、バグ探しなんかもできます。例えば、以下のような感じでChatGPTにどこが間違っているかを聞いてみましょう。

以下のソースコードはうまく動きません。どこに間違いがありますか。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // ユーザから文字列を受け取る
        System.out.println("文字列を入力してください:");
        String input = scanner.nextLine();
        
        // 文字列を半角スペースで区切り、リストに格納する
        List<String> list = Arrays.asList(input.Split(" "));
        
        // リストの要素を1つずつ改行しながら表示する
        System.out.println("リストの要素:");
        for (String element : list) {
            System.out.println(element);
        }
    }
}

ちなみに間違いは、

 List<String> list = Arrays.asList(input.Split(" "));

のところで、splitSplit と書いてしまっているという、いかにも人間がやりそうな、そして気づきにくそうなものを混入させました。さて、ChatGPTさん、これはさすがに見つけられ…

…なんと、一撃で見つけて、しかもArrayListを使って可変長に対応させるという改良までしてきやがりました。いや、ヤバすぎるわこれは…。

ちなみにこのChatGPTによるバグ探しは、教育現場でかなり強力なツールとなりうると思います。なぜかと言うと、特に学生とかはそうですが、英語のエラーメッセージ読めないんですよね。しかし、ChatGPTはまぁー随分丁寧に日本語で間違いを指摘してくれるので、プログラミング入門の相当優秀なパートナーになるんじゃないでしょうか。

ただ、これは裏を返せば、ChatGPTに頼りすぎるあまり、英語のエラーメッセージを読む機会がなくなるというのは果たしてどうなんだい、という問題にも繋がってきます。あまりに便利すぎるがゆえに、受講生自身の思考や学びが阻害されることになっては本末転倒なんですよね。このあたり、教育現場におけるChatGPT活用の難しさだと思います(個人的には、IT教育を教えるというフィールドであれば、禁止というのはちょっと野暮だよなとはなんとなく思っています)。

(4) データ作り①

プログラミングだけではなく、統計なんかを教えていると、練習問題用の簡単なデータがほしいという機会はかなり多くあります。しかし、これなかなか自力で作るのって面倒なんですよね…。さらに、いざ頑張って作っても意図しているような性質を持つデータセットにいまいちなっていなかったり、じゃあプログラムで作ろうと思ってもそれはそれでやっぱり面倒だったり…。

そういうときは、ChatGPTに頼めば一撃です。例えば、統計における二次元データの練習問題に使えそうなデータを作ってもらいましょう。

以下のような2次元データセットを作って。
・データ数は10
・数学と物理の点数
・弱い正の相関を持つ

結果は以下の通り。

お見事。完全に要求したとおりのデータを生成してくれました。これ、統計教えたことある人ならわかると思うんですが、むちゃくちゃ有り難いです。ネットから拾ってくるにしても、適当なデータってなかなか多くはないんですよね…。相関まで指定できるのはかなりやばいです。

(5) データ作り②

データ作りでもう1つ便利な使いかたとして、Pythonによるデータ分析なんかをやるときに、練習用のデータセットをその場で作ってもらうという使い方があります。これも、練習用データセットって有限なので、授業で使うデータセットが枯渇するみたいなのはわりとあるあるなんですよね…。

Pythonのデータ分析の練習に使える簡単なデータセットを、csv形式で作ってください。
・車の種類の予測に関するデータセット
・データ件数は20件
・列は6列
・数値カラムが4つ
・文字列カラムが2つ
・欠損を少し入れる
・外れ値は2つ入れる

結果は以下の通り。

うおお、これは凄すぎ…とは思うんですが、文字列カラム2つという要求は完全になかったことにされてますね。指示の仕方が悪いのかな。たまにこういうこともあります。織り込み済みで使うのが良いでしょうね。

csv形式で出力してくれているので、copy codeでコピーして、csvファイルとして保存すればPythonで読んでデータ分析ができます。

ちゃんと読んでそのまま使える。
欠損もちゃんとある。

散布図を見ても外れ値がどれかイマイチわからなかったので、これまたChatGPTに聞いてみました。

ほ〜、なるほど。確かに一概に外れ値と判断できるかどうかは微妙ですよね。最後の注意書きがあるのが親切でいいですね。

個人的にこの使い方はかなり業務の役に立ってくれていて最高です。

あくまで「ベース作り」として使うのがオススメ。

ね、すごいでしょう。
この記事に書いた「ChatGPTへの指令文」はすべてコピペ可能にしてあるので、コピペして、適宜調整をして使っていただけるとさくっと使えて便利だと思います。

注意点です。いままでも見てきておわかりかと思いますが、しれっと間違えたり、しれっと要求を無視したりすることもあるのがChatGPTを使う上での注意ポイントでしょう。なので、あくまで「たたき台」としてChatGPTを使い、人力によるチェックをするという使い方をおすすめします。正直、この使い方だけでもビックリするくらい僕ら(教育現場でこういう教育をしている人)のことを助けてくれます。

この恐ろしくもすばらしいChatGPTがこれから世の中にどういう影響を及ぼしていくのかはまだ未知数だとは思いますが、とりあえず便利なものはうまく活用してみよう精神で、これからもいろいろ使い方を模索してみたいと思います。

ネット上には、ここに書かれていないようなすごい活用方法がまだまだウヨウヨしています。興味のあるかた、ぜひ調べてみてください。とても楽しいですよ。僕もいくつか新しい使い方を思いついたらまたここに記録しておこうと思います。

ではでは。

この記事が気に入ったらサポートをしてみませんか?