
学校の先生が教育現場で使えるChatGPTテクニック〜シーン1 席替え〜
ChatGPTの活用により、教師の皆さんの負担を軽減することが可能だと私たちは信じています。そのため、教育現場で役立つテクニックをいくつか紹介していきたいと思います。
第一弾は、どこの学校でも必ず行うであろうこのような「席替え」です。
「席替え」を単純にランダムに座席を割り当てるだけなら簡単ですが、特定のルールに基づいて席替えを行う場合、一筋縄ではいきません。
例えば、次のようなルールを考えてみましょう。
隣り合うと騒がしいメンバーがいるので座席を話したい
視力が低い生徒がいるので、座席を黒板の近くにしてあげたい
これらの制約を考慮すると、席替えは一筋縄ではいかなくなります。

「Code Interpreter」を利用した席替え
このような制約が入ると、正確にアルゴリズム通りにできることが重要です。アルゴリズムを処理するのが得意なのは、プログラミングです。そのため、ChatGPT-4のCode Interpreterを利用します。
参考までに、下記がCode Interpreterの記事です。どうやって使い始めるかどうか分からない方は見てみてください。
プロンプトには、生徒の特性や席替えに関するルールを記述します。
生徒ID(出席番号)と座席番号を割り当てることで、個人情報の保護にも配慮した、実際のプロンプトは下記の通りです。
あなたは学校の先生です。学校の席替えの座席レイアウトを作れるプログラムを作成して実行してください。
# 生徒の人数
24名
※生徒40名は生徒ID(1〜24)で管理
# 生徒の特徴
生徒IDが5と8と15の生徒は、目が悪いため黒板の近くが良い
生徒IDが12と15の生徒は一緒にいると騒がしくなるので座席は離したい
生徒IDが11と13と21の生徒は一緒にいると騒がしくなるので座席は離したい
# 座席番号とレイアウト
黒板
---------------------------
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
# ルール
座席番号1から8までが最も黒板に近い
目が悪い生徒は座席番号が1から8までにいる必要がある
一緒にいると騒がしい生徒は前後左右斜めで隣り合わないようにする
すると、ChatGPT-4(Code Interpreter)は制約条件の確認を行い、処理手順を説明してくれます。そして、Pythonで実装したプログラムを生成し、それを実行します。
私たちの目標は、特定の制約を満たすための座席レイアウトを作成することです。以下のアプローチを使用してこれを達成します。
1. 席の数と生徒の数が同じであることを確認します。
2. 全生徒のリストを作成します。
3. 目が悪い生徒と騒がしい生徒のリストを作成します。
4. これらのリストを元に、制約に基づいた席替えを行います。
5. まず、生徒の数が24名で、座席の数も24席であることを確認します。
次に、全生徒のリストと特別な注意が必要な生徒のリストを作成します。
そして、これらのリストを元に席替えのアルゴリズムを作成します。アルゴリズムは以下の通りです。
1. 目が悪い生徒を最初に配置します。1-8の席にこれらの生徒をランダムに配置します。
2. 次に、騒がしい生徒を配置します。彼らは一緒に座らないようにしなければなりません。そのため、これらの生徒が隣り合わないように配置します。
3. 残った生徒を空いている席にランダムに配置します。
このプロセスをPythonで実装してみましょう。生徒の席替えはランダムなプロセスなので、結果は実行ごとに異なります。また、特定の制約を満たす解が存在しない場合もあります。そのため、プログラムは可能な限り良い解を見つけるように試みますが、常に最適な解が得られるわけではありません。
続けてもらうと、下記のようにプログラムを実行し始めました。
Finished working
Show work
申し訳ありません、エラーが発生しました。このエラーは、生徒IDが15の生徒が目が悪い生徒のリストと騒がしい生徒のリストの両方に含まれているために発生したようです。この生徒は目が悪い生徒として先に配置され、その後騒がしい生徒として再度配置しようとしたときにリストから既に削除されていたため、エラーが発生しました。
この問題を解決するためには、生徒が既に配置されているかどうかをチェックする必要があります。これを行うには、生徒が配置されるときにそれを全体の生徒リストから削除し、騒がしい生徒を配置する前にその生徒がまだリストに存在しているかどうかを確認します。
以下のコードでこの修正を行います。
(以下略…)
この問題を解決するために、インデックスの指定方法を修正しましょう。具体的には、座席の配置がまだ完了していない席を見つけるために、フラットなインデックスを使用します。そして、残りの生徒をこれらの席に配置します。修正したコードは以下の通りです。
Finished working
Show work
座席レイアウトが完成しました。以下が新しい座席配置です。
黒板
5 15 8 11 9 13 1 6
2 16 23 24 12 17 19 3
7 4 22 18 14 20 21 10
(以下略…)
結果として得られる座席レイアウトは、全ての制約を満たしています。
注意点としては、特定の制約を満たす解が存在しない場合もあることです。プログラムは可能な限り良い解を見つけるように試みますが、常に最適な解が得られるわけではありません。
作成されたPythonのプログラムをチェック
結論を見ると、全ての制約をクリアしています。完成したPythonのプログラムを確認します。下記のプログラムは一部抜粋しています。
ちなみにプログラムの処理上、インデックスが0からに変更されてます。
import numpy as np
# 生徒の数
total_students = 24
# 生徒IDのリストを作成
students = list(range(1, total_students + 1))
# 特別な注意が必要な生徒のリストを作成
poor_sighted_students = [5, 8, 15]
noisy_students_group1 = [12, 15]
noisy_students_group2 = [11, 13, 21]
# 座席のレイアウトを作成
seating_layout = np.zeros((3, 8))
# これらの位置に生徒が座ると、その生徒は他の生徒と隣接している
adjacent_seats = {
0: [1, 8, 9],
1: [0, 2, 8, 9, 10],
2: [1, 3, 9, 10, 11],
3: [2, 4, 10, 11, 12],
4: [3, 5, 11, 12, 13],
5: [4, 6, 12, 13, 14],
6: [5, 7, 13, 14, 15],
7: [6, 14, 15],
8: [0, 1, 9, 16, 17],
9: [0, 1, 2, 8, 10, 16, 17, 18],
10: [1, 2, 3, 9, 11, 17, 18, 19],
11: [2, 3, 4, 10, 12, 18, 19, 20],
12: [3, 4, 5, 11, 13, 19, 20, 21],
13: [4, 5, 6, 12, 14, 20, 21, 22],
14: [5, 6, 7, 13, 15, 21, 22, 23],
15: [6, 7, 14, 22, 23],
16: [8, 9, 17],
17: [8, 9, 10, 16, 18],
18: [9, 10, 11, 17, 19],
19: [10, 11, 12, 18, 20],
20: [11, 12, 13, 19, 21],
21: [12, 13, 14, 20, 22],
22: [13, 14, 15, 21, 23],
23: [14, 15, 22]
}
特別に注意が必要な生徒は、先に座席配置を決めるためにリストを生成したり、座席が隣ということを辞書型リストで保持したりするなど、アルゴリズムをプログラムで実装しています。
ChatGPT-3.5を利用した席替えは失敗
ちなみにChatGPT-3.5を使って、上記の問題に挑戦してみました。
以下のように指示を出します。生徒の人数、特性、座席レイアウト、ルールをプロンプトで指定します。
あなたは学校の先生です。学校の席替えの座席レイアウトを作成してください。
# 生徒の人数
24名
※生徒40名は生徒ID(1〜24)で管理
# 生徒の特徴
生徒IDが5と8と15の生徒は、目が悪いため黒板の近くが良い
生徒IDが12と15の生徒は一緒にいると騒がしくなるので座席は離したい
生徒IDが11と13と21の生徒は一緒にいると騒がしくなるので座席は離したい
# 座席番号とレイアウト
黒板
---------------------------
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
# ルール
座席番号1から8までが最も黒板に近い
目が悪い生徒は座席番号が1から8までにいる必要がある
一緒にいると騒がしい生徒は前後左右斜めで隣り合わないようにする
結果は下記の通りです。
生徒の座席レイアウトを作成します。以下は席替えの結果です。
黒板
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
座席番号の配置は以下のようになります。
黒板
11 13 15 9 5 3 1 7
12 21 19 17 14 10 8 6
22 23 24 20 18 16 4 2
(以下略…)
ChatGPT-3.5はこれらの情報を基に席替えのレイアウトを作成します。しかし、結果を見ると、下記のルールが反映されていません。
生徒ID8の生徒が一番前の列にいない
生徒IDの11と13と21の生徒が隣り合っている
通常のLLMのように、言語のつながりから推測するモデルではやはりアルゴリズムを正確に実施するのは難しいです。
AIを活用した校務負担軽減へ
本記事では、ChatGPTとCode Interpreterを活用して学校の席替え問題を解決する方法を紹介しました。これは一例に過ぎませんが、AIの力を借りることで教育現場の様々な課題を効率的に解決することが可能です。
私たちはこれからも、教育現場で直面する様々な問題に対する解決策を提供するため、ChatGPTの活用方法を探求し続けます。教師の皆さんが日々の業務をよりスムーズに、そしてより効率的に進められるよう、最新のAI技術を駆使してサポートしていきたいと考えています。今後とも、どうぞお楽しみに!