生徒が毎週書く振り返りシートの記述を生徒ごと・クラスごとに要約し、気になる記述を担任へ知らせる
生徒が毎週Googleフォームで出す振り返りシートを、生徒ごとの要約とクラスの傾向にまとめます。体調・人間関係・学習の不安などの気になる記述は、要約せず原文のまま担任に知らせます。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Make/Power Automate/Python
- 対象業界
- 人材/教育
- 対象部門
- 総務
- 対象業務
- 内容確認・チェック/要約
- 主な課題
- 人手が足りない/属人化している/期限・対応漏れが起きる
- AIで行う処理
- 要約
- 主な効果
- 品質標準化/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 金曜の終礼で、生徒がGoogleフォームから振り返りを提出する
- 担任が週末か月曜の朝に、クラスの回答のスプレッドシートを開く
- 35人分の自由記述を上から順に読む
- 気になる記述があれば、生徒名と内容を手元のメモに書き写す
- 急ぎと判断したものは、月曜に学年主任や養護教諭へ口頭で伝える
- 前の週と比べて様子が変わった生徒がいないか、記憶をたよりに思い出す
- 月に一度、学年会の前にメモを見返して「気になる生徒」をまとめる
- 【生徒】 金曜の終礼で、Googleフォームから振り返りを提出する
- 自動提出のたびにスクリプトが動き、自由記述に強い語が含まれていないかを規則で確かめる
- 自動強い語が含まれていれば、その場で担任と学年主任へ「確認してください」とだけ知らせる(本文は載せない)
- 自動週に一度、クラスごとに1週分の回答と、生徒ごとの過去4週の記録を集める
- 自動Claude API が生徒ごとに2〜3文の要約を作り、気になる記述を原文のまま抜き出し、区分を付ける
- 自動達成度の数値の変化は、スクリプトが規則で拾う(AIには計算させない)
- 自動クラスの傾向を5行程度にまとめ、担任ごとの確認シートに書き出す
- 人担任が確認シートを開き、気になる記述の行を先に読み、元の回答を確かめる
- 人対応が必要な生徒について、面談・養護教諭への相談・保護者への連絡を担任が決める
- 人確認シートの「対応」欄に、何をしたかを担任が書く
- 自動月末に、学年会用の一覧(気になる記述の件数と、対応の記録)を作る
各工程の詳しい説明を読む
- 金曜の終礼で、生徒がGoogleフォームから振り返りを提出する
- 担任が週末か月曜の朝に、クラスの回答のスプレッドシートを開く
- 35人分の自由記述を上から順に読む
- 気になる記述があれば、生徒名と内容を手元のメモに書き写す
- 急ぎと判断したものは、月曜に学年主任や養護教諭へ口頭で伝える
- 前の週と比べて様子が変わった生徒がいないか、記憶をたよりに思い出す
- 月に一度、学年会の前にメモを見返して「気になる生徒」をまとめる
(a)気づくのが遅れる。 金曜に書かれた記述を担任が読むのは、早くて週末、遅いと月曜の放課後です。「明日学校に行きたくない」という一文が、読まれたときにはすでに過去のことになっています。 週に一度の提出でも、深刻な記述ほど早く気づく必要があります。
(b)変化を記憶で追っている。 「3週続けて目標の達成度が下がっている」「先月から『眠れない』が続いている」といった変化は、1週分を読んでも見えません。前の週の記述を担任が覚えているかどうかで、気づけるかが決まります。
(c)担任ごとに書き残し方が違う。 学年会での報告が「特に問題なし」の一言で終わるクラスもあれば、生徒ごとに詳しく話すクラスもあります。学年として同じ基準で生徒を見られていません。 担任が替わる年度の初めには、前の担任のメモがほとんど引き継がれません。
(d)読み切れない週がある。 行事や定期試験の前は、35人分を読む時間が取れず、「困ったこと」の欄だけを拾い読みする週が続きます。 拾い読みで落ちるのは、「よかったこと」の欄に書かれた気になる一言です。
- 【生徒】 金曜の終礼で、Googleフォームから振り返りを提出する
- 【自動】 提出のたびにスクリプトが動き、自由記述に強い語が含まれていないかを規則で確かめる
- 【自動】 強い語が含まれていれば、その場で担任と学年主任へ「確認してください」とだけ知らせる(本文は載せない)
- 【自動】 週に一度、クラスごとに1週分の回答と、生徒ごとの過去4週の記録を集める
- 【自動】 Claude API が生徒ごとに2〜3文の要約を作り、気になる記述を原文のまま抜き出し、区分を付ける
- 【自動】 達成度の数値の変化は、スクリプトが規則で拾う(AIには計算させない)
- 【自動】 クラスの傾向を5行程度にまとめ、担任ごとの確認シートに書き出す
- 【人】 担任が確認シートを開き、気になる記述の行を先に読み、元の回答を確かめる
- 【人】 対応が必要な生徒について、面談・養護教諭への相談・保護者への連絡を担任が決める
- 【人】 確認シートの「対応」欄に、何をしたかを担任が書く
- 【自動】 月末に、学年会用の一覧(気になる記述の件数と、対応の記録)を作る
3番目で本文を載せないのは、知らせがメールで届くからです。 メールは転送や誤送信で外に出ます。生徒の記述そのものはスプレッドシートの中に置き、知らせには生徒の番号と確認シートへのリンクだけを書きます。
8番目が、この設計の分かれ目です。 担任は要約を読んで終わりにはしません。気になる記述の行は、元の回答まで必ず開きます。 要約はそれ以外の生徒の様子をつかむためのもので、気になる記述の判断材料にはしません。
02今回想定するシステム構成
生徒(Googleフォームで振り返りを提出) ▼ 回答はクラスごとのスプレッドシートへ 【トリガー1】フォーム送信時(提出のたび) Google Apps Script └──▶ 規則で強い語を確認 → 該当すれば担任・学年主任へ知らせ(本文なし) 【トリガー2】時間主導型(毎週土曜の朝。クラスごとに分けて処理) Google Apps Script ├──▶ 1週分の回答と、生徒ごとの過去4週の記録を読む ├──▶ 達成度の変化を規則で計算する ▼ Claude API(構造化出力) │ 生徒ごとの要約、気になる記述の原文の抜き出しと区分、クラスの傾向 ▼ Google Apps Script ── 担任ごとの確認シートへ書き出し、担任へ知らせる ▼ 【担任が読み、対応を決めて記録する】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Google Apps Script | Power Automate、Make、Python |
| 生成AI | Claude API(構造化出力) | Gemini API、OpenAI API |
| フォーム | Google フォーム(クラスごとの振り返り) | Microsoft Forms |
| シート | Google スプレッドシート(回答・確認シート・記録) | Microsoft 365 のブック |
| メール | Gmail(担任・学年主任への知らせ) | Google Chat |
新しく足すのは、スクリプトと Claude API の契約だけです。 フォームも回答のスプレッドシートも、今あるものを使います。回答のシートには書き込みません。 スクリプトが書き込むのは、担任ごとの確認シートと記録のシートだけです。
土台になるのは、Google Apps Script のインストール型トリガーです。 フォームの送信を起点に動くトリガーと、決まった時刻に動く時間主導型のトリガーの両方を使えます。時間主導型は毎分から毎月までの間隔で設定できます。インストール型トリガーは、作成した人のアカウントで実行されます。 知らせのメールは、トリガーを作った人のアカウントから送られます。学年ごとの共用アカウントで作るか、学年主任のアカウントで作るかを先に決めます。
スクリプトの実行時間には上限があります。 1回の実行は6分まで、トリガーの合計の実行時間は Google Workspace のアカウントで1日6時間までです。外部の API の呼び出し(URL の取得)は Google Workspace で1日100,000回まで、メールの宛先は1日1,500までとされています。18クラスを1回の実行で処理しきれないことがあるため、週の処理はクラスごとに分けます。
生成AIには Claude API を使います。 構造化出力で、指定した JSON スキーマに沿った応答を受け取れます。Anthropic の商用規約では、サービスの顧客コンテンツをモデルの学習に使わないとされています。 生徒の記述を渡す以上、この点は導入前に学校の設置者と確認しておきます。
03どうやって実装するのか
処理の起点を決める
トリガーは2つ置きます。役割がまったく違うためです。
1つ目は、フォームの送信時に動くトリガーです。回答のスプレッドシートに紐づけて作ります。提出のたびに1回動き、その1人分の自由記述に強い語が含まれていないかを規則で確かめます。ここではAIを呼びません。 提出のたびに外部へ送る必要はなく、規則で足ります。
2つ目は、時間主導型のトリガーです。毎週土曜の朝に動かし、1週分の回答をクラスごとに要約します。18クラスを1回で処理すると、1回6分の上限に近づきます。 そこで、1回の実行で処理するのは3クラスまでとし、どこまで終わったかをスクリプト プロパティに残して、次の実行で続きから始めます。土曜の朝6時から10分おきに動かせば、昼までに全クラスが終わります。
金曜の終礼で書けなかった生徒は、翌週の月曜に出すことがあります。 遅れた提出は次の週の要約に入れず、提出のあった週の分として確認シートの別の欄に足します。 週の区切りは、フォームの回答の日時ではなく、フォームの「対象の週」の設問で決めます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 1週分の回答 | 生徒の番号、対象の週、達成度(1〜5)、よかったこと、困ったこと・不安なこと、来週の目標、先生に伝えたいこと | 回答のスプレッドシート |
| 過去4週の記録 | 生徒ごとの達成度の推移と、前の週までの要約 | 記録のシート |
| 生徒の一覧 | 番号、クラス、担任、在籍の状態(休学・転出など) | 学年が持つ名簿のシート |
| 強い語の一覧 | 体調・睡眠、人間関係、家庭、登校、自分を傷つけることをにおわせる語 | 学年主任と養護教諭が用意する一覧 |
AIに渡すのは、生徒の番号と記述だけです。 氏名は渡しません。番号と氏名の対応は名簿のシートにだけ置き、確認シートに書き出すときにスクリプトが付け直します。 AIの側から見れば、記述は番号で区別されるだけです。
強い語の一覧は、学年主任と養護教諭が作ります。 担任が1人で決めると、クラスによって拾う範囲が変わります。学年で1つの一覧を持ち、年に数回見直します。
データの取得方法を決める
フォームの送信時のトリガーでは、イベントの情報から、その1人分の回答をそのまま受け取れます。 スプレッドシートに紐づけた送信時のトリガーは、設問の名前と値の組(namedValues)と、シートに並んだ順の値(values)を渡してきます。シートを読み直す必要はありません。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 1人分の回答 | 送信時のイベント(namedValues) | 強い語の確認 |
| 1週分の回答 | 回答のシートを「対象の週」で絞って読む | 要約の材料 |
| 過去4週の記録 | 記録のシート | 変化を拾う、前の週の要約を渡す |
| 担任と学年主任のアドレス | 名簿のシート | 知らせの宛先 |
同じ時刻に35人が一斉に提出します。 送信時のトリガーが短い間に何十回も動き、記録のシートへ同時に書き込むと、行が重なることがあります。書き込みの前にスクリプトのロック(LockService.getScriptLock())を取り、1人ずつ順に書き込みます。 ロックは取得の関数を呼んだだけでは取れず、tryLock か waitLock で待ち時間を決めて取ります。
AIへ渡す前に整形する
- 在籍の確認 … 名簿で休学・転出の生徒を外します。外した生徒は確認シートに「対象外」と出します
- 空欄の扱い … 自由記述が3つとも空の回答は、AIに渡さず「記述なし」とします。3週続いた場合は、規則で「記述なしが続いている」と出します
- 氏名の除去 … 自由記述の中に友人の氏名が書かれていることがあります。名簿の氏名と一致する文字列を「(生徒A)」のような記号に置き換えます
- 強い語の確認 … 一覧の語を含む記述に印を付けます。この印はAIの判定とは別に持ち、AIの結果で消しません
- 達成度の変化の計算 … 過去4週の数値から、2段階以上下がった、3週続けて下がった、をスクリプトで計算します
- 長さの確認 … 1人分が長すぎる場合も切りません。切った後ろに気になる記述があると落ちるためです
4番目を前処理に置くのが、この構成の安全装置です。 AIが気になる記述を拾い損ねても、規則の印は残ります。確認シートには、規則の印とAIの区分を別の列で並べます。 どちらか一方でも付いていれば、担任が元の回答を開く対象にします。
3番目の氏名の置き換えは、完全ではありません。 あだ名や名字だけの表記は一致しません。置き換えられなかった名前がAIに渡ることを前提に、第13章の扱いを決めます。
AIに処理させる
させるのは、生徒ごとの要約と、気になる記述の抜き出しと、クラスの傾向の3つです。
| させること | 中身 | 判断できないときの扱い |
|---|---|---|
| 生徒ごとの要約 | 3つの自由記述を2〜3文にまとめる。前の週の要約と比べて変わった点があれば1文足す | 記述が短すぎれば「記述が短い」と書く |
| 気になる記述の抜き出し | 該当する文を原文のまま引用し、区分を付ける | 迷ったら抜き出す側に倒す |
| 区分 | 体調・睡眠/人間関係/家庭/登校/学習の不安/自分を傷つけることをにおわせる表現/その他 | 1つに決められなければ「その他」 |
| クラスの傾向 | 行事・試験・部活など、複数の生徒に共通する話題を5行程度で | 共通する話題がなければ「特になし」 |
区分に「自分を傷つけることをにおわせる表現」を入れていますが、AIにその深刻さを判定させることはしません。 抜き出して区分を付けるところまでで、どう受け止めるかは担任と養護教諭が決めます。
| させないこと | 理由 |
|---|---|
| 深刻さの判定・点数付け | 生徒の心身の状態の判断は、担任・養護教諭・専門職の仕事 |
| 気になる記述の言い換え | 言い換えた瞬間に、受け取る重さが変わる |
| いじめに当たるかの判断 | 学校として組織で判断する事項 |
| 達成度の計算 | 数値の変化はスクリプトが計算する |
| 生徒への返事の文 | 生徒への声かけは担任が自分の言葉でする |
| 成績や所見の文 | 振り返りの目的と違う |
2行目がいちばん起きやすい失敗です。 要約を頼むと、AIは「死にたいくらい疲れた」を「強い疲労を訴えている」と丁寧に言い換えます。言い換えは要約としては正しくても、担任に届けるべき情報としては誤りです。 抜き出しの欄には、生徒が書いた文字をそのまま入れさせます。
指示内容を固定する
あなたは中学・高校の学年の担任団を手伝う立場です。
生徒が毎週書く振り返りシートの記述を、担任が短い時間で読めるように整理します。
生徒を評価したり、診断したりする立場ではありません。
【入力】
- 生徒ごとに、番号、達成度(1〜5)、よかったこと、困ったこと・不安なこと、
来週の目標、先生に伝えたいこと、前の週の要約
- 記述の中の他の生徒の名前は「(生徒A)」のような記号に置き換えてあります
【してほしいこと】
1. 生徒ごとに、3つの自由記述を2〜3文で要約してください。
前の週の要約と比べて変わった点があれば、1文で書き足してください。
2. 次のどれかに当たる記述があれば、該当する文を原文のまま quote に入れ、
category を付けてください。
体調・睡眠/人間関係/家庭/登校/学習の不安/
自分を傷つけることをにおわせる表現/その他
3. クラス全体で複数の生徒に共通する話題を、5行以内でまとめてください。
【厳守事項】
- quote には生徒が書いた文字をそのまま写してください。
言い換え、要約、表記の修正、敬語への書き換えをしないでください。
- 気になる記述を要約の文に混ぜないでください。要約には
「気になる記述あり(下記)」とだけ書いてください。
- 当たるかどうか迷ったときは、抜き出してください。
抜き出さないことを選ぶのは、明らかに当たらないときだけです。
- 深刻さの程度、緊急度、点数を書かないでください。
- いじめに当たるか、病気に当たるかを書かないでください。
- 冗談や比喩に見える表現でも、上の区分に当たる語があれば抜き出してください。
- 記述に書かれていないことを推測で補わないでください。
- 達成度の数値について計算や比較をしないでください。
- 生徒への返事や助言の文を作らないでください。
【生徒ごとの記述】{students}
「迷ったら抜き出す」を明記しないと、AIは慎重に絞り込みます。 絞り込まれた結果は読みやすくなりますが、拾い損ねた1件は、担任が要約しか読まなかった場合に誰にも気づかれません。 この構成では、抜き出しすぎて担任が数件多く読む失敗のほうを選びます。
「冗談や比喩でも抜き出す」も同じ理由です。 中高生の記述には「テストで死んだ」のような言い回しが多く、AIは文脈から冗談と判断して外します。それが本当に冗談かどうかは、その生徒を知る担任にしか判断できません。 区分の語を含むものは抜き出し、担任が「冗談」として閉じる運用にします。
深刻さを書かせないのは、点数が付くと担任がその点数で並べ替えるからです。 AIの点数が低かった記述が後回しになれば、点数を付けなかったときより気づくのが遅れます。
出力形式を固定する
次の形のJSONで受け取ります。 Claude API の構造化出力を使い、output_config.format に json_schema の型でスキーマを渡します。
{
"class_id": "2-B",
"week": "2026-W40",
"students": [
{
"student_no": "2B-14",
"summary": "",
"change_from_last_week": "",
"concerns": [
{ "category": "体調・睡眠", "quote": "", "field": "困ったこと" }
],
"too_short": false
}
],
"class_trend": ["", ""]
}
category は区分の7つの語だけを取る列挙にします。field は、引用がどの設問の欄から来たかを よかったこと / 困ったこと / 来週の目標 / 先生に伝えたいこと のどれかで入れます。
1つ目の理由は、quote と summary を別の欄に置けることです。 気になる記述が要約の文の中に溶けると、担任は要約を読んで分かった気になります。欄を分ければ、確認シートで quote の列だけを赤く表示できます。
2つ目は、field で欄の取り違えを見つけられることです。 「よかったこと」の欄に書かれた気になる一言は、拾い読みで落ちる型の代表です(第3章の(d))。どの欄から拾ったかが分かれば、担任はその欄を読み直します。
3つ目は、規則の印と突き合わせられることです。 スクリプトは、前処理で強い語の印を付けた生徒に concerns が1つも無い場合、「規則では当たり、AIは抜き出していない」として確認シートに目立つ印を付けます。 逆の場合(AIだけが抜き出した)も、そのまま担任に回します。
構造化出力を使っても、quote が元の記述に本当に含まれているかはスクリプトで確かめます。 元の記述の中に quote の文字列が見つからない場合は、AIが言い換えたものとして扱い、元の欄の全文を確認シートに載せ直します。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 回答のスプレッドシート | 送信時のトリガー/読み取り | 1人分の回答、1週分の回答 |
| 記録のシート | 読み書き | 過去4週の達成度と要約 |
| Claude API | UrlFetchApp.fetch() で POST | 要約・抜き出し・傾向 |
| 担任ごとの確認シート | 書き込み | 要約、規則の印、AIの区分、引用、対応の欄 |
| Gmail | GmailApp.sendEmail() | 担任・学年主任への知らせ(本文なし) |
UrlFetchApp.fetch() は、method に post、contentType に JSON、headers に API キーとバージョンの見出し、payload に要求の本文を入れて呼びます。muteHttpExceptions を true にすると、失敗の応答でも例外を投げずに応答を返します。 状態コードを見て、そのクラスを後で再試行するかを決めます。
API キーはコードに書かず、スクリプト プロパティに置きます。 スクリプト プロパティはスクリプトのすべての利用者で共有される置き場所です。スクリプトの編集権限は、学年主任と情報担当の教員に限ります。 担任には確認シートの閲覧と「対応」欄の編集だけを渡します。
人が確認する
担任が確認シートで最初に見るのは、規則の印かAIの区分が付いた行です。 要約だけの行はそのあとで流し読みします。
- 印の付いた行を先に読む …
quoteと規則の印を見て、元の回答の行を開いて全文を読みます - 規則とAIが食い違う行を見る … 規則だけが当たった行は、AIが冗談と判断した可能性があります。担任の目で確かめます
- 対応を決める … 声をかける、面談する、養護教諭やスクールカウンセラーに相談する、学年主任に上げる、様子を見る
- 「対応」欄に書く … 何をしたか、誰に相談したかを短く残します。「様子を見る」も記録します
- 要約の行を流し読みする … クラスの傾向と、達成度が下がった生徒を見ます
提出のたびの知らせが来た場合は、週の要約を待たずに当日中に1番目を行います。 知らせのメールには本文が無いので、確認シートか回答のシートを開いて読みます。
目標は、1クラス1週分で15分です。 35人のうち印が付くのは数人という想定で、印の付いた行が毎週10人を超えるなら、強い語の一覧が広すぎるか、行事の前後で記述が荒れているかのどちらかです。
例外に対処する
| 起きること | 対応 |
|---|---|
| 提出のたびの確認で強い語が当たる | 担任と学年主任へ知らせる。本文は載せず、確認シートへのリンクだけ |
| 担任が不在(出張・休暇) | 名簿の「代わりの連絡先」の列(副担任・学年主任)へ送る |
| 週の処理が6分で終わらない | 処理したクラスまでをプロパティに残し、次の実行で続きから |
| Claude API がエラーを返す | そのクラスを「未処理」とし、次の実行で再試行。規則の印は先に確認シートへ書く |
quote が元の記述に見つからない | AIが言い換えたものとして、元の欄の全文を載せ直す |
| 規則は当たり、AIは抜き出していない | 確認シートに目立つ印。担任が必ず読む |
| 記述が3週続けて空 | 規則で「記述なしが続いている」と出す |
| 遅れて提出された回答 | 提出のあった週の欄に足す。提出のたびの確認は遅れた回答にもかける |
| 生徒の番号が名簿に無い | 処理せず、学年主任へ知らせる |
2行目と4行目を最初から作っておきます。 提出のたびの知らせは、担任が読まなければ意味がありません。APIが止まった週でも、規則の印だけは確認シートに出るようにします。 要約が出ない週はあっても、印が出ない週は作りません。
記録を残す
- 週ごと・クラスごとに、AIへ渡した記述(氏名を置き換えた後のもの)と、返ってきたJSONの全文
- 規則の印の結果と、そのとき使った強い語の一覧の版
- 提出のたびの知らせを、いつ・誰に送ったか
- 担任の「対応」欄の記録 … 何をしたか、誰に相談したか、いつ閉じたか
- 規則とAIが食い違った件数(クラスごと・週ごと)
quoteが元の記述に見つからなかった件数
3つ目と4つ目は、学年として「気づいて、動いた」ことの記録です。 知らせを送っても、誰も読まずに終わっていれば仕組みは働いていません。知らせの送信と対応の記録を並べ、対応が空のまま1週間たったものを学年主任へ一覧で出します。
記録のシートは、学年主任と管理職だけが読めるようにします。 担任の確認シートより範囲が広く、学年全体の気になる記述が並ぶためです。保存の期間は、学校の文書の保存の規程に合わせます。
04実装レベルの3段階
本記事の想定は半自動化です。 1クラス45分が15分になる計算は、この段階で置いています。担任が読む時間は残し、読む順番を変えることと、メモを書き写す手間をなくすことで時間を減らします。 本格構成で足すのは、年度をまたいだ引き継ぎです。 4月に担任が替わるとき、前の年の気になる記述と対応の記録を、生徒ごとに1枚にまとめます。引き継ぐ範囲は、学校の方針として先に決めます。
05工数削減シミュレーション
導入後 72件 × 15分 ÷ 60 = 18 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 中学・高校で、生徒が毎週の振り返りをGoogleフォームで提出し、担任が1クラス30〜40人分の記述を週末や放課後に読んでいる学校。学年会で「最近気になる生徒」を共有したいのに、担任ごとに読み方と書き残し方が違う場合。研修会社や専門学校で、受講者の週ごとの振り返りを講師が読んでいる場合も同じ形で使えます。
- 1クラスの人数が少なく、担任が全員の記述を毎週無理なく読めている場合。振り返りが紙で、デジタルで集める予定がない場合。生徒の記述を外部のAIサービスへ渡すことについて、学校の設置者の方針や保護者への説明が整っていない場合。生徒の心身の状態の判断や、いじめの認定をAIに任せたい場合(この構成が出すのは要約と、原文を添えた知らせまでです)。
07最小構成で試す方法
- 1クラス分、先月の4週分の振り返りを選ぶ(担任が当時「気になった」と覚えている生徒を含める)
- 生徒の氏名を番号に置き換え、他の生徒の名前も記号にする
- 学校が契約しているAIサービスの画面に、1週分ずつ貼り付ける
- 「生徒ごとに2〜3文で要約し、体調・人間関係・家庭・登校・学習の不安・自分を傷つけることをにおわせる表現に当たる記述は、要約せず原文のまま抜き出してください。迷ったら抜き出してください」と指示する
- 出てきた結果を、担任の当時のメモと突き合わせる
生徒の記述を貼る前に、学校が使ってよいAIサービスかを確かめてください。 個人の無料のアカウントには貼りません。
| 出てきた内容 | 判断 |
|---|---|
| 担任が当時気になった記述がすべて原文で抜き出された | スクリプトとの連携に進む |
| 抜き出されたが、言い換えられていた | 指示の書き方で直る。構成は有効 |
| 担任が気になった記述が抜き出されなかった | 規則の一覧を先に作る。 AIだけに頼る設計にしない |
3行目が出たら、それがこの構成で最も大事な発見です。 AIが拾い損ねる型が分かれば、その型を強い語の一覧に足します。規則とAIの二重にしている理由を、担任団で共有する材料になります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 気になる記述が言い換えられる | 原文のまま引用と明記し、元の記述に含まれるかをスクリプトで確かめる |
| 冗談に見える記述が外される | 区分の語を含めば抜き出すと明記。冗談かどうかは担任が決める |
| AIが深刻さの点数を付けてくる | スキーマに点数の欄を作らない。指示でも禁じる |
| 35人が一斉に提出して書き込みが重なる | スクリプトのロックを取ってから書き込む |
| 週の処理が6分で終わらない | 1回3クラスまでにし、続きをプロパティに残す |
| 知らせのメールに記述の本文が載る | 本文を載せず、番号とリンクだけにする |
| 担任が不在で知らせが読まれない | 代わりの連絡先の列を名簿に持たせる |
| 友人の名前がそのままAIに渡る | 名簿の氏名で置き換え。あだ名は残る前提で扱いを決める |
| 遅れた提出が要約から漏れる | 「対象の週」の設問で区切り、遅れた回答にも提出時の確認をかける |
| 担任が要約だけを読んで終わる | 印の付いた行は元の回答まで開くを運用の約束にする |
| 強い語の一覧が担任ごとに違う | 学年で1つの一覧を持ち、学年主任と養護教諭が管理する |
| 対応の記録が空のまま残る | 1週間空いたものを学年主任へ一覧で出す |
上の2行が、この構成の失敗のほとんどです。 どちらも、AIが「読みやすく整える」ことを善意で行った結果として起きます。要約の仕組みに、要約してはいけないものを通さないことが設計の中心です。
下から3行目は、仕組みでは防ぎきれません。 要約が便利になるほど、担任は要約だけで済ませたくなります。元の回答を開くことを、学年の約束として最初に決めてください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 未成年の生徒が自分の体調・人間関係・家庭・気持ちについて書いた記述です。学校が持つ情報の中でも、最も慎重に扱うべきものの一つです。
- 生徒の記述を外部へ渡すことを、学校の設置者と決めてから始める … 担任団の判断だけで始めません。生徒と保護者に、振り返りの記述をAIで整理していることを説明できる状態にします
- 生徒はAIと直接やり取りしない設計にする … この構成でAIの出力を読むのは教員だけで、生徒にAIの文は返しません。Anthropic は、未成年がAPIを組み込んだ製品と直接やり取りする場合に、年齢の確認や内容の絞り込み、AIであることの表示などの安全策を求めています。生徒への返事をAIに作らせる設計に広げるときは、この指針の対象になります
- 商用の契約で使う … Anthropic の商用規約では、サービスの顧客コンテンツをモデルの学習に使わないとされています。個人のアカウントや無料の画面で生徒の記述を扱わないでください
- 渡す範囲を絞る … 氏名は番号に置き換え、友人の名前も記号にします。番号と氏名の対応は名簿のシートにだけ置きます
- 知らせに本文を載せない … メールには番号と確認シートへのリンクだけを書きます
- AIに判断させない … 深刻さ、いじめに当たるか、病気に当たるかは、担任・養護教諭・スクールカウンセラー・管理職が判断します。 この構成が出すのは、要約と、原文を添えた知らせまでです
- 閲覧の範囲を分ける … 担任は自分のクラスの確認シートだけ、学年主任と管理職は記録のシートまで、と権限を分けます
誤りが起きた場合のリスクは、気になる記述を見落とすことと、言い換えによって軽く受け取ることの2つです。 前者は規則とAIの二重の確認で、後者は原文の引用とその照合で防ぎます。どちらも、AIを信用しない前提で組んであることが守りになります。
10まず何から始めるか
1週目:方針を決める
学校の設置者と管理職に、生徒の記述をAIで整理してよいか、どのAIサービスを使うか、生徒と保護者にどう説明するかを確かめます。ここが決まるまで、実際の記述は使いません。
2週目:強い語の一覧を作る
学年主任と養護教諭で、体調・睡眠、人間関係、家庭、登校、自分を傷つけることをにおわせる語の一覧を作ります。過去の振り返りで担任が気になった記述を持ち寄り、その語が一覧に入っているかを確かめます。
3週目:1クラス4週分で試す
氏名を番号に置き換えた記述を、学校が契約しているAIサービスに貼り、要約と抜き出しをさせます。担任が当時気になった記述が原文で抜き出されたかを最優先で見ます。
4週目:提出のたびの確認を先に動かす
送信時のトリガーで、強い語の確認と、本文なしの知らせだけを動かします。AIを使わないこの部分だけでも、気づくまでの日数は縮みます。
2か月目: 週に一度の要約を足し、1学年3クラスで確認シートを使います。規則とAIが食い違った件数を毎週数えます。 3か月目以降: 全学年に広げ、学年会用の月次の一覧を作ります。1クラス45分が何分になったかと、対応の記録が空のまま残った件数を実測した時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| インストール型トリガーにフォーム送信時のトリガーと時間主導型のトリガーがあること。時間主導型は毎分から毎月までの間隔で動かせること。インストール型トリガーは作成した人のアカウントで実行されること。失敗した実行はメールで通知されること | Google for Developers: Installable triggers | 2026-10-07 |
スプレッドシートの送信時のイベントが namedValues(設問の名前と値)と values(シートの並び順の値)を渡すこと | Google for Developers: Event objects | 2026-10-07 |
| 1回の実行が6分まで。トリガーの合計実行時間が Google Workspace で1日6時間。URL の取得が Google Workspace で1日100,000回。メールの宛先が Google Workspace で1日1,500 | Google for Developers: Quotas for Google Services | 2026-10-07 |
UrlFetchApp.fetch() の method・contentType・payload・headers・muteHttpExceptions | Google for Developers: UrlFetchApp | 2026-10-07 |
| スクリプト プロパティがスクリプトのすべての利用者で共有されること | Google for Developers: Properties Service | 2026-10-07 |
LockService.getScriptLock() がコードの同時実行を防ぐロックを返し、tryLock か waitLock を呼ぶまで取得されないこと | Google for Developers: LockService | 2026-10-07 |
Claude API の構造化出力が output_config.format に json_schema の型で指定でき、ベータの見出しが不要なこと | Claude Docs: Structured outputs | 2026-10-07 |
| Anthropic がサービスの顧客コンテンツでモデルを学習しないこと | Anthropic: Commercial Terms of Service | 2026-10-07 |
| 未成年がAPIを組み込んだ製品と直接やり取りする場合に、年齢の確認・内容の絞り込み・監視と報告の仕組み・AIであることの表示などが求められること | Claude Help Center: Responsible use of Anthropic's models: guidelines for organizations serving minors | 2026-10-07 |
生徒の記述をAIで扱ってよいか、どの語を気になる記述とするかは、学校の設置者・管理職・養護教諭と決めてください。 本記事は Google for Developers、Claude Docs と Anthropic の公開文書で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0634)についてのご相談はこちらから。
