毎月作る確認テストの問題と解答を、配る前に誤字・設問番号のずれ・配点の合計・解答との食い違いで点検する
毎月作る確認テストの問題と解答を、印刷する前に点検します。設問番号の連番と配点の合計は仕組みで数え、誤字や「2つ選べ」なのに解答が1つ、といった食い違いはAIが印を付けます。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Make/n8n/Power Automate
- 対象業界
- 人材/教育
- 対象部門
- 品質管理
- 対象業務
- 内容確認・チェック
- 主な課題
- 人手が足りない/属人化している/確認ミスが多い
- AIで行う処理
- 校正
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 作った講師が、問題と解答のドキュメントを「点検待ち」のフォルダに入れ、点検担当に知らせる
- 点検担当が問題を頭から読み、誤字と、設問番号が順に並んでいるかを見る
- 各設問の配点を書き出し、電卓で合計して満点になるかを確かめる
- 解答のドキュメントを並べて開き、設問の数と番号が問題と合っているかを見る
- 設問ごとに、問題文の指示(「記号で答えよ」「2つ選べ」「20字以内で」)と解答の形が合っているかを見る
- 計算問題は自分で解き直し、解答と合うかを確かめる
- 気づいた点をコメントで書き、作った講師に戻す。講師が直して印刷に回す
- 人作った講師が、問題と解答のドキュメントを決めた名前の付け方で「点検待ち」のフォルダに入れる
- 自動10分ごとにフォルダを見て、問題と解答がそろった組を見つける
- 自動2つのドキュメントの本文と表を読み、設問ごとに分ける
- 自動設問番号の連番、配点の合計、問題と解答の設問の数を数える
- 自動生成AIが誤字、指示と解答の形の食い違い、疑わしい解答に印を付け、JSONで返す
- 自動結果を点検結果のスプレッドシートに書き、作った講師と点検担当にメールで知らせる。2つのドキュメントは「点検済み」へ移す
- 人作った講師が指摘を見て、直すか直さないかを決め、直したら再び「点検待ち」に入れる
- 人点検担当が、AIの指摘の無い組も含めて、図と印刷の体裁、疑わしいと出た計算問題を見る
- 人点検担当が印刷してよいと決める
各工程の詳しい説明を読む
- 作った講師が、問題と解答のドキュメントを「点検待ち」のフォルダに入れ、点検担当に知らせる
- 点検担当が問題を頭から読み、誤字と、設問番号が順に並んでいるかを見る
- 各設問の配点を書き出し、電卓で合計して満点になるかを確かめる
- 解答のドキュメントを並べて開き、設問の数と番号が問題と合っているかを見る
- 設問ごとに、問題文の指示(「記号で答えよ」「2つ選べ」「20字以内で」)と解答の形が合っているかを見る
- 計算問題は自分で解き直し、解答と合うかを確かめる
- 気づいた点をコメントで書き、作った講師に戻す。講師が直して印刷に回す
(a)読み合わせに時間がかかる。 2番から6番を1組ずつ行うと、1組20分かかります。 月120組なら40時間で、点検する8名にとって、授業の準備の時間を削って捻出している時間です。
(b)見落とす箇所が人によって違う。 誤字に強い人、計算の解き直しを丁寧にする人、配点だけは必ず電卓を叩く人。点検の中身が、その月に誰が担当したかで変わります。 点検の手順は決まっていても、どこまで深く見るかは決まっていません。
(c)直した後の再点検がない。 7番で講師が直したとき、直した箇所の周りが新しくずれることがあります。問2を削ったら問3以降の番号が1つずつずれる、配点を変えたら合計が満点でなくなる。再点検は行われず、そのまま印刷に回ります。
(d)配った後に分かる。 誤りが見つかるのは、教室で生徒が気づいたときです。12教室で同じテストを配っていれば、12教室で同じ訂正のアナウンスが要ります。 成績の集計をやり直すことにもなります。
- 【人】 作った講師が、問題と解答のドキュメントを決めた名前の付け方で「点検待ち」のフォルダに入れる
- 【自動】 10分ごとにフォルダを見て、問題と解答がそろった組を見つける
- 【自動】 2つのドキュメントの本文と表を読み、設問ごとに分ける
- 【自動】 設問番号の連番、配点の合計、問題と解答の設問の数を数える
- 【自動】 生成AIが誤字、指示と解答の形の食い違い、疑わしい解答に印を付け、JSONで返す
- 【自動】 結果を点検結果のスプレッドシートに書き、作った講師と点検担当にメールで知らせる。2つのドキュメントは「点検済み」へ移す
- 【人】 作った講師が指摘を見て、直すか直さないかを決め、直したら再び「点検待ち」に入れる
- 【人】 点検担当が、AIの指摘の無い組も含めて、図と印刷の体裁、疑わしいと出た計算問題を見る
- 【人】 点検担当が印刷してよいと決める
7番目の「再び点検待ちに入れる」が、第3章の(c)への答えです。 直した後も同じ仕組みを通すので、直した箇所の周りのずれが、もう一度数えられます。 何度通しても点検担当の手間はほとんど増えません。
8番目で点検担当が残るのは、意図してのことです。 図とレイアウトは、この構成では見ていません。AIの指摘が無いことは、誤りが無いことではありません。
02今回想定するシステム構成
作った講師 ── 問題と解答の Google ドキュメントを「点検待ち」へ ▼【トリガー】10分ごと(時間主導型トリガー) Google Apps Script ├──▶ Google ドライブ ── 問題と解答がそろった組を探す ├──▶ Google ドキュメント ── 本文・表を読み、設問に分ける ├──▶ 数える処理(スクリプト) │ 設問番号の連番/配点の合計/問題と解答の設問の数 ├──▶ Claude API(構造化出力) │ 誤字/指示と解答の形の食い違い/疑わしい解答 ├──▶ 点検結果(スプレッドシート)へ書き込む ├──▶ 作った講師と点検担当へメール └──▶ 2つのドキュメントを「点検済み」へ移す ▼ 【人】講師が直す → 再び「点検待ち」へ 【人】点検担当が図と体裁を見て、印刷してよいと決める
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Google Apps Script | Power Automate、Make、n8n |
| 生成AI | Claude API(構造化出力) | Gemini API、OpenAI API |
| 原稿 | Google ドキュメント | Microsoft Word |
| 点検結果 | Google スプレッドシート | 教務の管理表 |
Google Apps Script を選ぶのは、原稿が Google ドキュメントにあり、外へ持ち出さずに読めるからです。 ドキュメントの本文は Body クラスで扱えます。getText() で本文の文字列を、getParagraphs() で段落を、getTables() で表を取り出せます。解答を表で作っている講師が多いので、表を表のまま読めることが効きます。
フォルダの見張りも、ドライブのサービスで足ります。 Folder の getFiles() でフォルダの中のファイルを、getFilesByType() で種類を絞って取り出せます。点検が終わったら、File の moveTo() で「点検済み」のフォルダへ移します。移す・移さないで状態を表すので、点検の状況はフォルダを開けば分かります。
実行には上限があります。 1回の実行は6分まで、トリガーは1スクリプトにつき1人20本までです。1回の実行で点検するのは3組までにし、残りは次の回に回します。 月120組なら、締め切り前に集中しても1日に数十組で、10分ごとの実行で追いつきます。
生成AIは、UrlFetchApp から Claude API の Messages API(POST /v1/messages)を呼びます。 要求には anthropic-version と content-type のヘッダが必要です。1回の要求の大きさは32MBまでで、テスト1組の文字量なら問題になりません。
03どうやって実装するのか
処理の起点を決める
10分ごとに動く時間主導型のトリガーを1本使います。 時間主導型のトリガーは毎分から月1回まで指定でき、実行時刻は少しばらつきます。講師がフォルダに入れてから10分ほどで結果が届けば、待たされる感じはありません。
フォルダに入った瞬間に動かさないのは、問題と解答が別々に入るからです。 問題だけが入った時点で動くと、解答が無いまま点検が始まります。名前の付け方で組を判定し、2つそろったものだけを処理します。 片方だけが2時間以上残っていたら、作った講師に「解答が入っていません」と知らせます。
名前の付け方は、中2_数学_標準_10月確認_問題 と 中2_数学_標準_10月確認_解答 のように、最後の「問題」「解答」だけが違う形にします。この決まりが、組を見つける唯一の手がかりです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 問題 | 本文、段落、表。設問番号、問題文、指示、配点の表記 | Google ドキュメント |
| 解答 | 本文、表。設問番号と解答 | Google ドキュメント |
| テストの情報 | 学年、教科、クラス、満点、作った講師 | ファイル名と作成者 |
| 表記の決まり | 教室で使う表記(「答えなさい」と「答えよ」のどちらか、単位の書き方、送り仮名) | 教務部の一覧 |
| 数えた結果 | 設問番号の並び、配点の合計、設問の数の一致 | 数える処理 |
表記の決まりの一覧が、誤字の指摘の質を決めます。 「答えなさい」と「答えよ」が混ざっていることを誤りとするかは、塾の決まりです。一覧が無いと、AIは自分の好みで直そうとします。
数えた結果もAIに渡します。 「問5が2回出てくる」と分かっていれば、AIはその周りを特に注意して読めます。ただし、数えた結果をAIに確かめ直させることはしません。 数えた結果は数えた結果として、そのまま点検結果に載せます。
データの取得方法を決める
| 取るもの | どこから | どう取るか |
|---|---|---|
| 点検待ちのファイル | ドライブのフォルダ | getFilesByType() でドキュメントだけを取り出す |
| 組の判定 | ファイル名 | 名前の最後の「問題」「解答」を外して突き合わせる |
| 本文と段落 | ドキュメント | getBody() の getParagraphs() で段落ごとに |
| 表 | ドキュメント | getTables() で表ごとに、行とセルを読む |
| 作った講師 | ファイル | 作成者(所有者)を取り、メールの宛先にする |
段落ごとに読むのは、設問の切れ目を見つけるためです。 getText() で本文をまとめて取ると、改行の位置しか手がかりが残りません。段落ごとに読み、「問1」「(1)」「【1】」で始まる段落を設問の始まりとします。 塾の中で、設問番号の書き方を2〜3種類に決めておきます。
表は、解答欄と配点の表として扱います。 解答を「設問番号・解答・配点」の3列の表で作る決まりにすると、配点の合計は表の列を足すだけで出ます。 問題の側で「(各3点)」と書いている場合は、その設問の小問の数を掛けます。
AIへ渡す前に整形する
- 設問に分ける … 段落の先頭の番号で設問を区切り、小問まで含めて番号の木を作ります
- 配点を拾う … 「(5点)」「(各3点)」「配点:」などの書き方を決めた形だけ拾います。拾えない書き方のものは「配点不明」として点検結果に載せます
- 数える … 設問番号が1から順に並んでいるか、重複や飛びが無いか。配点の合計が満点と一致するか。問題と解答で設問の数と番号が同じか
- 図の位置に印を付ける … 本文の中の画像の位置に「【図】」と入れ、AIに図があることだけを伝えます
- 長さを確かめる … 1組の本文が極端に長いもの(総合問題など)は、大問ごとに分けて呼びます
3番目は、AIを呼ぶ前に終わらせます。 数えた結果に誤りがあっても、AIの点検は続けます。ただし点検結果の先頭には、数えた誤りを載せます。 番号のずれと配点の合計の誤りは、印刷前に必ず直すものだからです。
4番目で図があることだけを伝えるのは、AIに図の中身を想像させないためです。 「図のように」と書かれた設問は、図を見ないと解答が正しいか分かりません。 AIには「図を見ていないので判断できない」と返させます。
AIに処理させる
させるのは、決めた種類の指摘に印を付け、根拠の文を書き出すことだけです。
| 指摘の種類 | 見るもの | 判断できないときの扱い |
|---|---|---|
typo | 誤字・脱字、表記の決まりから外れた書き方 | 決まりに無い書き方は style_question |
instruction_mismatch | 「記号で」「2つ」「〇字以内」と、解答の形の食い違い | 指示が読み取れなければ unclear |
answer_doubt | 解答が問題文の条件と合わない、計算をやり直すと違う値になる | 必ず needs_teacher |
choice_issue | 選択肢の記号の重複・飛び、解答の記号が選択肢に無い | - |
reference_issue | 「問2の答えを使って」「下の表から」の参照先が無い | 図が参照先なら figure_not_checked |
figure_not_checked | 図を見ないと判断できない設問 | 指摘ではなく、点検担当への申し送り |
3行目の answer_doubt は、確定ではなく疑いです。 AIが計算をやり直して違う値になった、というだけで、違っているのがAIの計算のほうである可能性も残ります。 そのため、この種類の指摘は必ず needs_teacher とし、点検担当が解き直す設問の一覧になります。全部の設問を解き直す代わりに、疑わしいものだけを解き直すのが、第4章の④を減らす仕組みです。
| させないこと | 理由 |
|---|---|
| 原稿を書き換える | 直すかどうかは作った講師が決める |
| 配点の合計や設問の数を数える | 数える処理で行う。AIの合計は使わない |
| 問題の良し悪し・難易度の評価 | 教務の責任者の判断 |
| 図の中身の推測 | 図を見ていない |
| 新しい問題の提案 | この構成の役目ではない |
2行目がいちばん大事です。 AIに配点を足させると、多くの場合は正しい合計を返しますが、ときどき100点ではないものを100点と書きます。 合計を確かめたいのに確かめる手段が誤る、というのでは意味がありません。
指示内容を固定する
あなたは学習塾の教務部で、配る前の確認テストを点検する係です。
下の問題と解答だけを根拠にしてください。原稿を書き換えないでください。
【指摘する種類】
- typo: 誤字・脱字、【表記の決まり】から外れた書き方
- instruction_mismatch: 問題文の指示(記号で・〇つ・〇字以内・単位をつけて など)と
解答の形が合わない
- answer_doubt: 解答が問題文の条件と合わない、または計算をやり直すと違う値になる
- choice_issue: 選択肢の記号の重複・飛び、解答の記号が選択肢に無い
- reference_issue: 「問〇の答えを使って」などの参照先が見つからない
- figure_not_checked: 【図】を見ないと解答の正しさを判断できない設問
【厳守事項】
- 指摘ごとに、該当する設問番号と、根拠にした文を原文のまま quote に写してください。
- 直し案は suggestion に書いてもよいですが、原稿の書き換えではなく案として書いてください。
- 配点の合計、設問の数、番号の並びは数えないでください。
【数えた結果】に書かれているものを、そのまま正しいものとして扱ってください。
- answer_doubt のときは、あなたが計算した過程を reasoning に短く書いてください。
自分の計算が誤っている可能性があるので、断定しないでください。
- 【図】を含む設問では、図の中身を想像しないでください。
図を見ないと判断できない場合は figure_not_checked にしてください。
- 【表記の決まり】に無い書き方の違いは typo にせず、style_question にしてください。
- 問題の良し悪しや難易度については書かないでください。
- 指摘が無い場合は、findings を空の配列にしてください。
【テストの情報】{grade} {subject} {class} 満点{full_score}点
【表記の決まり】{style_rules}
【数えた結果】{count_result}
【問題】{question_text}
【解答】{answer_text}
「数えないでください」を明記するのは、AIが親切に数え直すからです。 数え直した結果が数える処理と違うと、どちらが正しいかを人が確かめることになります。数えるのは仕組みの仕事と決め、AIには触らせません。
answer_doubt で計算の過程を書かせるのは、点検担当の確認を速くするためです。 過程を読めば、AIがどこで問題文を読み違えたのか、本当に解答が違うのかを数十秒で判断できます。
出力形式を固定する
Claude API の構造化出力で、次の形のJSONを受け取ります。 構造化出力では output_config.format に json_schema の型と JSON Schema を渡し、応答が決めた形に合うことが保証されます。 ただし、安全上の理由で応答を断った場合と、出力の上限に達した場合は形が合わないことがあるとされているので、停止の理由を確かめてから読みます。
{
"test_id": "中2_数学_標準_10月確認",
"findings": [
{
"type": "typo | instruction_mismatch | answer_doubt | choice_issue | reference_issue | figure_not_checked | style_question",
"question_no": "問3(2)",
"quote": "",
"suggestion": "",
"reasoning": "",
"route": "author | needs_teacher"
}
]
}
JSONで受け取る1つ目の理由は、点検結果のスプレッドシートに1指摘1行で並べられることです。 講師は自分のテストの行だけを見て、「直した」「直さない」を1列に書き込めます。
2つ目は、route で振り分けを決められることです。
type | route | 誰が見るか |
|---|---|---|
typo、instruction_mismatch、choice_issue、reference_issue | author | 作った講師が直すかを決める |
answer_doubt | needs_teacher | 点検担当が解き直す |
figure_not_checked | needs_teacher | 点検担当が図を見る |
style_question | author | 表記の決まりに足すかを教務部が決める |
3つ目は、数えた結果と並べて1枚にできることです。 点検結果の先頭の行には、数える処理が出した「問5が重複」「合計98点(満点100点)」を入れ、その下にAIの指摘を並べます。数えた誤りとAIの指摘を、出どころが分かる形で分けて見せます。
スクリプトの側では、quote が問題か解答の本文に実際に含まれているかを確かめます。含まれていない quote は、AIが作った文として指摘ごと「要確認」にします。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Google ドライブ | Folder、File | 点検待ちのファイルを探し、点検済みへ移す |
| Google ドキュメント | Body | 段落と表を読む。書き込まない |
| Claude API | UrlFetchApp から Messages API | 指摘の一覧をJSONで受け取る |
| 点検結果 | スプレッドシートへ追記 | 1指摘1行。数えた結果は先頭 |
| 講師と点検担当 | Gmail からの送信 | 点検結果へのリンクと、指摘の件数 |
ドキュメントには書き込みません。 コメントや修正の提案を原稿に直接付ける形も考えられますが、原稿に触れるのは作った講師だけ、と決めておくほうが、どの版を印刷したかが追いやすくなります。 指摘はすべてスプレッドシートの側にあります。
Claude API の呼び出しは UrlFetchApp.fetch() で、method を post、contentType を application/json にし、ヘッダに APIキーと anthropic-version を入れます。 muteHttpExceptions を true にすると、失敗の応答でも例外を投げずに応答を返すので、応答コードを見て再試行するかを決められます。 APIキーはスクリプトのプロパティに置き、コードには書きません。
点検結果の列は、テストID、版(何回目の点検か)、指摘の出どころ(数えた/AI)、種類、設問番号、根拠の文、直し案、計算の過程、振り分け、講師の判断(直した/直さない/該当しない)、点検担当の確認、日時です。
人が確認する
- 作った講師が、
authorの指摘を1件ずつ見る … 直すなら原稿を直し、直さないなら理由を一言書きます - 直したら、もう一度「点検待ち」に入れる … 直した周りのずれを、数える処理がもう一度見ます
- 点検担当が、
needs_teacherの設問を解き直し、図を見る …answer_doubtは計算の過程を読み、本当に違うかを確かめます - 点検担当が、指摘の無い組も含めて体裁を見る … 図の位置、改ページ、解答欄の大きさは、この構成では見ていません
- 点検担当が、印刷してよいと点検結果に書く … この記入が無いテストは印刷に回しません
4番目を省かないでください。 AIの指摘が0件の組ほど、点検担当は安心して流しがちです。図の多い理科や社会では、0件は「見られる部分に誤りが無かった」というだけです。
目標は、1組8分です。 指摘を読み、疑わしい計算問題を解き直し、体裁を見るだけになります。最初から全部を読み直す必要はありません。
例外に対処する
| 起きること | 対応 |
|---|---|
| 問題だけ、解答だけが入っている | 2時間たったら作った講師に知らせる。点検は始めない |
| 名前の付け方が決まりと違う | 組を作れないので、教務部に知らせる |
| Word のファイルが入っている | 点検しない。Google ドキュメントで保存し直して入れるよう講師に知らせる |
| 設問番号の書き方を拾えない | 「設問の区切り不明」として点検結果に載せ、AIの点検は大問単位で行う |
| 配点の書き方を拾えない | 「配点不明」と載せる。合計の確認は点検担当が行う |
| 1回の実行が6分に近づく | 3組で打ち切り、残りは次の回に回す |
| 生成AIが応答しない、または形が合わない | ファイルを「点検待ち」に残し、次の回に再処理する |
quote が本文に無い | その指摘を「要確認」にする |
| 同じテストが何度も入る | 版を1つずつ増やし、前の版の指摘との差を点検結果に示す |
上から4行目までは、原稿の作り方の決まりの問題です。 名前の付け方、ファイルの種類、設問番号の書き方。決まりが守られていないものを無理に読もうとせず、決まりに戻してもらいます。 2か月も回すと、講師の側の作り方がそろってきます。
記録を残す
- 点検したドキュメントのID、版、点検した日時
- 数える処理の結果(設問番号の並び、配点の合計、設問の数)
- 生成AIへ渡した本文と、返ってきたJSONの全文
- 講師の判断(直した/直さない/該当しない)と、その理由
- 点検担当の確認と、印刷してよいと決めた日時
- 配った後に見つかった誤りと、それが点検結果に載っていたかどうか
4つ目の「該当しない」は、指示を直す材料になります。 AIの指摘のうち講師が「該当しない」とした種類が偏っていれば、表記の決まりの一覧か、指示の書き方が足りていません。
最後の行は、この構成の効き目を測る唯一の記録です。 配った後の誤りが、点検結果に載っていたのに直されなかったのか、そもそも載っていなかったのかで、手を入れる場所が違います。
04実装レベルの3段階
最小構成では、番号と配点が見られません。 AIに数えさせない設計なので、最小構成は誤字と食い違いだけを確かめる段階です。 半自動化が、本記事の想定です。 番号と配点を数え、AIが指摘を出し、直したら再点検される。1組20分が8分になるのは、この段階です。 本格構成で増えるのは、点検の基準が育つことです。 「単位の付け忘れが理科で多い」「国語の字数指定と解答の字数が合わない」のような型を、教科ごとの指示に入れていきます。時間よりも、配った後の誤りの件数に効いてきます。
05工数削減シミュレーション
導入後 120件 × 8分 ÷ 60 = 16 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 学年・教科ごとの確認テストを毎月自前で作り、作った人とは別の講師が読み合わせで点検している学習塾。社内の資格講座や研修で理解度テストを定期的に作る研修会社。問題と解答を Google ドキュメントで作っている、または作る運用に寄せられる場合。点検する人によって見落とす箇所が違い、配った後に誤りが見つかったことがある場合。
- テストを教材会社の市販品や問題データベースからそのまま使っており、自前で作る問題が少ない場合。問題の大半が図形・グラフ・地図などの図で、文字で書かれた部分がわずかな場合。入試問題のように、作問の段階から外部のサービスに一切出せない取り決めがある場合。なお、問題として適切か、難易度が合っているかの判断は、この構成では代替できません。
07最小構成で試す方法
- 過去3か月のテストから、配った後に誤りが見つかったものを10組集める
- 誤りの無かったテストを10組加え、20組にする
- 問題と解答のドキュメントの本文を、手元のAIサービスの画面に貼り付ける
- 「この確認テストの問題と解答を点検し、誤字、指示と解答の形の食い違い、疑わしい解答、選択肢の記号の問題を、設問番号と根拠の文つきで表にしてください。原稿は書き換えないでください。配点は数えないでください」と指示する
- 配った後に見つかった誤りが指摘に出たかを確かめる
20組は必ずやってください。 スクリプトを書く前に、「配った後に見つかった誤りが、AIに見つけられる種類のものだったか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 配った後の誤りの多くが指摘に出た | スクリプトとフォルダの連携に進む |
| 配点や番号のずれだけが出なかった | 予想どおり。数える処理で拾う部分 |
| 誤りの多くが図の中にあった | この構成の外。 図の点検は人の手順として残す |
2行目は失敗ではありません。 AIに配点や番号を数えさせない設計なので、最小構成で拾えないのは当然です。ここは、数える処理を書けば確実に拾える部分です。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| AIが配点を数え直して違う合計を書く | 数えないよう指示し、数える処理の結果だけを使う |
| 計算問題の指摘がAIの計算違いだった | answer_doubt は疑いとして扱い、計算の過程を読ませる |
| 図を想像して解答を判定する | 【図】の印を入れ、figure_not_checked を返させる |
| 好みの言い回しへの直しが大量に出る | 表記の決まりの一覧を渡し、決まりに無いものは style_question に |
| 設問の区切りを拾えない | 設問番号の書き方を2〜3種類に決める |
| 問題と解答の組が作れない | ファイル名の決まりを最後の「問題」「解答」だけが違う形にする |
| Word で作った原稿が入る | Google ドキュメントで保存し直す決まりにする |
| 直した後に再点検されない | 「点検待ち」に入れ直せば、同じ仕組みでもう一度数える |
| 指摘が0件の組を点検担当が流す | 図と体裁の確認を、指摘の有無にかかわらず残す |
| 印刷してよいかの記入が飛ばされる | 記入の無いテストを週に1回、教務部へ一覧で出す |
上の3行が、この構成の失敗のほとんどです。 どれも「AIに任せすぎる」という同じ型です。数えるのは仕組み、計算の正しさは人、図は人と分けておけば、AIが間違えても誤りがそのまま印刷に回ることはありません。
4行目は、運用の最初の1か月で必ず出ます。 講師は、自分の言い回しを「直せ」と言われ続けると、指摘の一覧を読まなくなります。表記の決まりに無いものは誤りとしない、と最初から決めておいてください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 配る前のテストの問題と解答です。生徒の氏名や成績は扱いません。
- 配る前のテストの中身を外へ出してよいかを確かめる … 実施前のテストは、塾にとって外に出したくない情報です。生成AIのAPIは、商用の利用として契約したものを使います。 Anthropic は、Anthropic API などの商用の製品の入力と出力を、既定ではモデルの学習に使わないとしています
- 市販の教材や過去の入試問題を使ったテストの扱いを確かめる … 教材会社との契約で、問題を外部のサービスで処理してよいかが決まっていることがあります。自前で作った問題と、市販の教材から引いた問題を分けておきます
- 生徒の情報を混ぜない … 原稿に生徒の名前や過去の得点を書き込む講師がいれば、原稿と生徒の情報を分ける決まりを先に作ります
- 問題の良し悪しを代替させない … この構成が出すのは、誤字、食い違い、疑わしい解答の印です。難易度や単元の狙いに合っているかは、作った講師と教務の責任者が決めます
- APIキーを講師に見せない … スクリプトは教務部の専用アカウントで作り、編集権限を絞ります
誤りが起きた場合のリスクは、誤りのあるテストが配られることと、正しい解答が「違う」と指摘されて直されてしまうことの2つです。 前者は図の点検と体裁の確認を人に残すことで、後者は answer_doubt を必ず人が解き直すことで止めます。AIの指摘で原稿が直接変わる経路は、どこにもありません。
10まず何から始めるか
1週目:書き方の決まりを作る
ファイル名、設問番号の書き方、配点の書き方、解答の表の列の決まりを、教務部で1枚にまとめます。表記の決まりの一覧もここで作ります。 すでにある教材作成の手引きがあれば、そこから引き写します。
2週目:20組で試す
配った後に誤りが見つかったテスト10組と、誤りの無かった10組を、手元のAIサービスに貼り付けて点検させます。配った後の誤りが指摘に出たか、出なかったならそれは図の中か番号・配点か、を数えます。
3週目:数える処理を作る
Google Apps Script で、設問番号の連番、配点の合計、問題と解答の設問の数を数える処理を作ります。AIを呼ぶ前に、この処理だけで20組を流し、番号と配点の誤りを拾えるかを確かめます。
4週目:フォルダからメールまでをつなぐ
フォルダの見張り、AIの呼び出し、点検結果への書き込み、講師へのメールをつなぎます。この時点では、点検担当はこれまでどおりの読み合わせも並行して行い、点検結果と見比べます。
2か月目: 読み合わせをやめ、指摘の確認と図・体裁の確認だけにします。講師が「該当しない」とした指摘を毎週数えます。3か月目以降: 配った後に見つかった誤りを記録し、表記の決まりと教科ごとの指示に積み上げます。点検担当が読み合わせをせずに「印刷してよい」と書けるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 時間主導型トリガーが毎分から月1回まで指定でき、実行時刻が少しばらつくこと。インストール型トリガーが作成者のアカウントで動くこと | Google for Developers: Installable Triggers | 2026-10-06 |
| 1回の実行が6分まで、トリガーが1スクリプトにつき1人20本までであること | Google for Developers: Quotas for Google Services | 2026-10-06 |
Body に getText()、getParagraphs()、getTables()、正規表現で探す findText() があること | Google for Developers: Class Body | 2026-10-06 |
Folder に getFiles() と getFilesByType() があること | Google for Developers: Class Folder | 2026-10-06 |
File に moveTo()、getMimeType()、getOwner()、getUrl() があること | Google for Developers: Class File | 2026-10-06 |
UrlFetchApp.fetch() の method・contentType・headers の指定と、muteHttpExceptions を true にすると失敗の応答でも例外を投げずに応答を返すこと | Google for Developers: Class UrlFetchApp | 2026-10-06 |
構造化出力が output_config.format に json_schema を渡す形で一般提供されていること。応答が形に合うことが保証されるが、応答を断った場合と出力の上限に達した場合は合わないことがあること | Claude Docs: Structured outputs | 2026-10-06 |
Messages API が POST /v1/messages であり、anthropic-version と content-type のヘッダが必要なこと。要求の大きさが32MBまでであること | Claude Docs: API overview | 2026-10-06 |
| Anthropic API などの商用の製品の入力と出力を、既定ではモデルの学習に使わないこと | Anthropic Privacy Center: Is my data used for model training? | 2026-10-06 |
問題として適切か、難易度が合っているかは、作った講師と教務の責任者が判断してください。 本記事は公式の資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0479)についてのご相談はこちらから。
