教員から Google Chat に届く出張・休暇・物品・会計の手続きの質問に、学校の事務の手引きを根拠に答え、手引きに無いものを事務室へ回す
教員が Google Chat のアプリに書いた出張・休暇・物品・会計の手続きの質問に、学校の事務の手引きを根拠に答えます。条件が足りなければ聞き返し、手引きに無いものや判断の要るものは事務室の受付に回します。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Power Automate/Python
- 対象業界
- 教育/自治体
- 対象部門
- 総務
- 対象業務
- 問い合わせ対応/情報検索
- 主な課題
- 人手が足りない/問い合わせが多い/情報が見つからない
- AIで行う処理
- 対話
- 主な効果
- 対応スピード向上/工数削減/検索時間短縮
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 教員が事務室の窓口・内線・Chat で手続きを聞く
- 事務職員が、日帰りか宿泊か、引率かなど、答えに要る条件を聞き返す
- 手引きの該当する節を開き、手順と様式名と締切を確かめる
- 教員に答える。様式の場所を案内し、必要なら共有ドライブのリンクを送る
- 手引きに書いていないことは、事務長に確かめてから答える
- 答えた内容は記録しない
- 人教員が Google Chat で、事務室の手続きのアプリに質問を書く
- 自動アプリ(Apps Script)が質問を受け、同じ教員の直近のやり取りを会話の記録から引く
- 自動手引きの節の一覧から、質問の語と節の見出し・キーワードが重なる節を最大5つ選ぶ
- 自動質問・直近のやり取り・選んだ節を Claude API に渡す
- 自動「答える/聞き返す/事務室へ回す」のどれかと、その中身が返る
- 自動答えるときは、節の番号・様式名・締切を付けて Chat に返す
- 自動聞き返すときは、選択肢付きの質問を返し、教員の返事を待つ
- 自動回すときは、事務室の受付シートに条件と近い節を書き、事務室の Chat のスペースに知らせる
- 人事務職員が受付シートの質問に答え、必要なら手引きに節を足す
- 人事務室が週1回、答えた記録を見て、誤った案内や足りない節を直す
各工程の詳しい説明を読む
- 教員が事務室の窓口・内線・Chat で手続きを聞く
- 事務職員が、日帰りか宿泊か、引率かなど、答えに要る条件を聞き返す
- 手引きの該当する節を開き、手順と様式名と締切を確かめる
- 教員に答える。様式の場所を案内し、必要なら共有ドライブのリンクを送る
- 手引きに書いていないことは、事務長に確かめてから答える
- 答えた内容は記録しない
(a)同じ質問が毎日届く。 「年休の申請はいつまでに」「立替払いの精算の様式はどれか」は、毎月何十回も届きます。手引きに書いてあることを、手引きを読む代わりに事務室に聞いている状態です。 答えるのは数分でも、そのたびに作業が止まります。
(b)答えが職員によって少しずつ違う。 手引きを確かめずに覚えている内容で答えると、改訂前の締切や、古い様式を案内することがあります。 3名のうち誰が受けたかで、教員が受け取る答えが変わります。
(c)聞き返しが往復になる。 Chat で「出張の申請は?」とだけ届くと、条件を聞き返して返事を待つあいだに授業が始まります。1つの質問が、半日かけて3往復することもあります。
(d)答えた記録が残らない。 どの節についての質問が多いかが分からないため、手引きのどこが分かりにくいかを改訂のときに直せません。
- 【人】 教員が Google Chat で、事務室の手続きのアプリに質問を書く
- 【自動】 アプリ(Apps Script)が質問を受け、同じ教員の直近のやり取りを会話の記録から引く
- 【自動】 手引きの節の一覧から、質問の語と節の見出し・キーワードが重なる節を最大5つ選ぶ
- 【自動】 質問・直近のやり取り・選んだ節を Claude API に渡す
- 【自動】 「答える/聞き返す/事務室へ回す」のどれかと、その中身が返る
- 【自動】 答えるときは、節の番号・様式名・締切を付けて Chat に返す
- 【自動】 聞き返すときは、選択肢付きの質問を返し、教員の返事を待つ
- 【自動】 回すときは、事務室の受付シートに条件と近い節を書き、事務室の Chat のスペースに知らせる
- 【人】 事務職員が受付シートの質問に答え、必要なら手引きに節を足す
- 【人】 事務室が週1回、答えた記録を見て、誤った案内や足りない節を直す
7番目が、この設計の分かれ目です。 手引きの手順が条件で分かれる節(出張の宿泊の有無、休暇の種類など)は、条件がそろうまで答えません。 聞き返しの往復は、事務職員ではなくアプリが受け持ちます。
10番目で事務室が見るのは、答えた記録のうち、教員が「解決しなかった」と押したものと、根拠の節が1つだけのものです。 全件を読む設計にはしません。
02今回想定するシステム構成
教員(Google Chat で、事務室の手続きのアプリに質問) ▼【トリガー】メッセージを受けたとき(Chat アプリの Message の機能) Google Apps Script(Chat アプリ) ├──▶ 会話の記録のシートから、直近のやり取りを引く ├──▶ 手引きの節の一覧から、近い節を最大5つ選ぶ ▼ Claude API(構造化出力) │ 答える/聞き返す/事務室へ回す と、その中身 ▼ Google Apps Script ├──▶ 答え・聞き返しを Chat に返す(30秒以内) ├──▶ 回すものは事務室の受付シートへ └──▶ 事務室の Chat のスペースへ知らせる(Webhook) ▼ 【事務職員が受付シートの質問に答え、手引きを直す】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Google Apps Script(Google Chat アプリ) | Power Automate、Python |
| 生成AI | Claude API(構造化出力) | Gemini API、OpenAI API |
| シート | Google スプレッドシート(手引きの節の一覧・会話の記録・受付・答えた記録) | Microsoft 365 のブック |
| 通知 | Google Chat(事務室のスペースへの Webhook) | Gmail |
新しく足すのは、Chat アプリとしてのスクリプトと Claude API の契約だけです。 手引きは今の Google ドキュメントを節ごとにシートへ写して使います。申請の様式やほかのシステムには書き込みません。 申請そのものは、これまでどおり教員が様式で行います。
土台になるのは、Apps Script で作る Google Chat のアプリです。 公式のクイックスタートでは、Google Cloud のプロジェクトで Chat API を有効にし、アプリの名前・機能・接続先として Apps Script のデプロイ ID・公開する相手を設定する手順が示されています。前提として、Google Chat を使える Business または Enterprise の Google Workspace のアカウントが挙げられています。 学校向けの版を使っている場合は、Chat アプリを設定・公開できるかを管理者が先に確かめてください。
Chat アプリは、Google Workspace のアドオンとして作ります。 メッセージを受けたときなどのトリガーに対応する関数は、Chat API の設定で指定します。アプリが受け取るイベントには、送った人(chat.user)、スペース(chat.space)、メッセージの中身(messagePayload)が入ります。 利用者の言語や時間帯も commonEventObject から取れます。
答えは30秒以内に返す必要があります。 同期で答えるには30秒以内に応答し、それを超える場合や別のスペースに書く場合は、Chat API を呼んで非同期で返すとされています。第7章で、この30秒の中に処理を収める方法を書きます。
03どうやって実装するのか
処理の起点を決める
教員がアプリにメッセージを送ったときに動きます。 教員は、アプリとの1対1のチャットに書くか、学年のスペースでアプリを指名して書きます。このアプリは1対1のチャットだけで使う設定にします。 学年のスペースで答えると、休暇の理由などを他の教員に見せることになるためです。
事務室の勤務時間外も動かします。 夜や週末に書かれた質問にも答え、回すものは翌朝の受付シートに並びます。回したときの返事には「事務室は翌開室日の朝に確認します」と書き、すぐに答えが来ると思わせないようにします。
定時のトリガーを1つだけ置きます。 毎朝7時台に、手引きのドキュメントの最終更新日を見て、変わっていれば節の一覧のシートを作り直します。作り直しの途中で質問が来たときは、古い一覧で答えます。 節の一覧は新しいものを別のシートに作り、終わってから入れ替えます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 質問 | 教員が書いた本文、送った日時 | Chat のイベント(messagePayload) |
| 送った人 | 教員のメールアドレスと表示名 | Chat のイベント(chat.user) |
| 直近のやり取り | 同じ教員との直近3往復の質問・聞き返し・答え | 会話の記録のシート |
| 手引きの節 | 節の番号、章、見出し、キーワード、本文、様式名、締切、改訂日 | 手引きの節の一覧のシート |
| 判断を回す一覧 | 「答えず事務室へ回す」と決めた事柄の一覧(休暇の事由の該当、校費で払えるか、など) | 事務室が作る一覧 |
質を決めるのは、手引きの節の一覧のキーワードの欄です。 教員は「年休」「有休」「休みの届」と書き、手引きの見出しは「年次休暇の申請」です。見出しの語だけで節を選ぶと、近い節が選ばれません。 事務室が、教員が実際に使う言い方を節ごとに5〜10語書き足します。
判断を回す一覧は、事務長と決めます。 「どこまでをアプリが答え、どこからを事務室が受けるか」を、AIの判断ではなく学校の取り決めとして持ちます。
データの取得方法を決める
質問は、Chat のイベントから取り出します。 メッセージの本文、送った人、スペースの種類をイベントから読みます。スペースが1対1のチャットでなければ、「1対1のチャットで聞いてください」とだけ返して終わります。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 質問の本文と送った人 | Chat のイベント | 答えの対象と、会話の記録の鍵 |
| 直近3往復 | 会話の記録のシート(送った人で絞る) | 聞き返しへの返事をつなぐ |
| 近い節の候補 | 手引きの節の一覧(見出しとキーワードの一致の数で並べる) | AIへの根拠 |
| 判断を回す事柄 | 判断を回す一覧 | AIへの指示 |
節の候補は、スクリプトで選びます。 質問の語と、節の見出し・キーワードが重なる数を数え、上位5節を取ります。直近のやり取りに出た節は、必ず候補に残します。 聞き返しへの返事(「宿泊です」)だけでは、どの節の話か分からないためです。
手引きのドキュメントからの節の一覧づくりは、毎朝の定時の処理で行います。 見出しのスタイルで節を区切り、本文・様式名・締切を列に分けて書き出します。質問のたびにドキュメントを読むと、30秒の中に収まりません。
| 節 | 見出し | キーワード(事務室が足す) | 様式名 | 締切 |
|---|---|---|---|---|
| 2-4 | 宿泊を伴う県外への引率 | 大会、遠征、引率、泊まり、出張 | 旅行命令伺(引率) | 出発の10日前 |
| 3-1 | 年次休暇の申請 | 年休、有休、休みの届、半日 | 休暇届 | 前日まで |
キーワードの欄だけは、毎朝の作り直しで上書きしないようにします。 ドキュメント側に無い、事務室が足した列だからです。節の番号で前の一覧から引き継ぎます。
AIへ渡す前に整形する
- スペースの確認 … 1対1のチャットでなければ答えません
- 個人の事情の目印 … 本文に病名・家族の状態などの語があれば、AIへ渡す前に「(個人の事情)」に置き換えます。手続きを答えるのに、事情の中身は要りません
- 会話のつなぎ … 直近のやり取りが30分以内なら同じ話の続きとし、それより前なら新しい質問として扱います
- 節の候補の選び出し … 見出しとキーワードの一致の数で上位5節。一致が1つも無ければ、AIを呼ばずに事務室へ回します
- 節の本文の切り詰め … 5節の本文の合計が長すぎる場合は、手順・様式名・締切の欄だけを渡します
- 判断を回す一覧の添付 … 一覧の全文を毎回渡します
4番目で AI を呼ばないのは、根拠の無い答えを作らせないためです。 一致する節が無い質問は、手引きに書いていない可能性が高く、AIに渡すと一般的な知識で答えを組み立ててしまいます。
AIに処理させる
させるのは、選ばれた節だけを根拠に、答えるか、聞き返すか、事務室へ回すかを選び、その中身を書くことです。
| させること | 中身 | 判断できないときの扱い |
|---|---|---|
| 応じ方の選択 | answer/clarify/escalate | 迷えば escalate |
| 答え | 手順を3〜5行、節の番号、様式名、締切 | 節に締切が無ければ締切を書かない |
| 聞き返し | 答えを分ける条件を1つ、選択肢を2〜4個 | 条件が2つ以上なら、先に分かれるほうを1つ |
| 回す理由 | 手引きに無い/判断を回す一覧に当たる/節どうしが食い違う | — |
| 分かった条件の要約 | 回すときに、やり取りで分かった条件を箇条で | — |
聞き返しは1回に1つの条件だけにさせます。 「日帰りか宿泊か、県内か県外か、引率か」を一度に聞くと、教員は授業の合間に答えきれません。答えを分ける条件のうち、節の分かれ目に近いものから1つずつ聞きます。 3往復で条件がそろわなければ、事務室へ回します。
やり取りは、たとえば次のようになります。
| 回 | 教員 | アプリ |
|---|---|---|
| 1 | 来月の大会の引率の出張は、何を出せばいいですか | 宿泊はありますか。(日帰り/1泊以上) |
| 2 | 1泊です | 行き先は県内ですか、県外ですか。(県内/県外) |
| 3 | 県外です | 節2-4「宿泊を伴う県外への引率」によると、旅行命令の伺いを出発の10日前までに出します。様式は「旅行命令伺(引率)」です。旅費の金額は精算のときに事務室が確かめます |
2回目の聞き返しは、1回目の返事を受けて選んだものです。 日帰りなら県内・県外で手順が分かれない節もあり、その場合は2回目を聞かずに答えます。 どの条件で節が分かれるかは、節の本文の書き方で決まります。
| させないこと | 理由 |
|---|---|
| 出張・休暇を認めるかの判断 | 校長・事務長が決める |
| 支出を校費で払えるかの判断 | 会計の規程の解釈は事務室が行う |
| 旅費や日当の金額の計算 | 金額は事務室が精算のときに確かめる |
| 節に無い手順の補い | 一般的な知識で手順を作らない |
| 休暇の事由に当たるかの判断 | 教員の個人の事情に関わる |
3行目がいちばん起きやすい失敗です。 「○○市への出張の旅費はいくらになりますか」と聞かれると、AIは手引きの日当の表から金額を組み立てようとします。経路や時間帯で金額が変わり、誤った金額を教員が覚えると精算のときにもめます。 金額は「精算のときに事務室が確かめる」と答えさせ、手順だけを案内します。
指示内容を固定する
あなたは中学・高校の事務室の、教員向けの手続きの案内役です。
下の【手引きの節】だけを根拠に、教員の質問に応じてください。
【応じ方】次のどれか1つを mode に入れてください。
- answer ... 節に手順が書いてあり、答えに要る条件がそろっている
- clarify .. 節の手順が条件で分かれ、その条件がまだ分からない
- escalate . 節に書いていない/【事務室へ回す事柄】に当たる/節どうしが食い違う
【厳守事項】
- 【手引きの節】に書いていない手順・様式・締切を書かないでください。
一般的な学校の慣行や、ほかの学校の例で補わないでください。
- 答えるときは、根拠にした節の番号を cited_sections に必ず入れてください。
節の番号を挙げられない答えは書かず、escalate にしてください。
- 聞き返すときは、条件を1つだけ聞き、選択肢を2〜4個付けてください。
- 出張や休暇を認めるか、校費で払えるか、休暇の事由に当たるかは判断せず、
escalate にしてください。
- 旅費・日当などの金額を計算しないでください。
- 「(個人の事情)」の中身を推測したり、尋ねたりしないでください。
- 迷ったときは answer を選ばず、escalate にしてください。
【事務室へ回す事柄】{escalation_rules}
【直近のやり取り】{history}
【手引きの節】{sections}
【教員の質問】{question}
「迷ったときは answer を選ばない」を明記しないと、AIは答えるほうに寄ります。 案内役として作られた指示は、回すより答えることを良いことと受け取りがちです。誤った案内の1件は、回した10件より事務室の手間を増やします。
「節の番号を挙げられない答えは書かない」は、スクリプトの照合とつながっています。 cited_sections が空の answer は、スクリプトの側で escalate に置き換えます。
出力形式を固定する
次の形のJSONで受け取ります。 Claude API の構造化出力を使い、要求の output_config の format に type を json_schema として下の形のスキーマを入れます。
{
"mode": "answer | clarify | escalate",
"category": "travel | leave | purchase | accounting | other",
"answer": {
"steps": ["", ""],
"form_names": [""],
"deadline": "",
"cited_sections": ["2-3"]
},
"clarify": { "question": "", "options": ["", ""] },
"escalate": {
"reason": "not_in_manual | judgment_required | conflicting_sections",
"known_conditions": [""],
"nearest_sections": [""]
}
}
1つ目の理由は、cited_sections をスクリプトで照合できることです。 挙げられた節の番号が、渡した5節の中に本当にあるかを確かめ、無い番号を挙げた答えは escalate に置き換えます。 様式名も、その節の様式名の欄と一致するかを確かめます。
2つ目は、mode ごとに Chat の返し方を変えられることです。 answer は手順と様式名と、共有ドライブの様式へのリンクをスクリプトが足して返します。clarify は選択肢を並べ、escalate は「事務室に回しました」と受付の番号を返します。リンクはAIに書かせず、節の一覧の様式の欄からスクリプトが付けます。
3つ目は、known_conditions で事務室が聞き直さずに済むことです。 「宿泊あり」「県外」「生徒の引率なし」と分かっていれば、事務職員は受付シートを読むだけで答えに入れます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Google Chat | Chat アプリのイベントと応答 | 質問を受け、答え・聞き返し・受付の番号を返す |
| 手引きの節の一覧 | 読み取り(毎朝の作り直しのときだけ書く) | 節の候補と様式の欄 |
| 会話の記録のシート | 読み書き | 直近3往復 |
| Claude API | UrlFetchApp.fetch() で POST | 応じ方と中身 |
| 受付シート | 書き込み | 回した質問・分かった条件・近い節 |
| 事務室の Chat のスペース | 受信 Webhook に POST | 「受付が1件増えた」の知らせ |
UrlFetchApp.fetch() は、method に post、contentType に JSON、headers に API キー、payload に要求の本文を入れて呼びます。muteHttpExceptions を true にして、失敗の応答でも例外で止まらないようにします。 失敗したときは「いまは答えられないので事務室に回しました」と返し、受付シートに書きます。
API キーと Webhook の URL は、スクリプト プロパティに置きます。 スクリプト プロパティはスクリプトのすべての利用者で共有されるため、スクリプトの編集権限は事務室と情報担当の教員に限ります。
事務室のスペースへの知らせには、教員の名前と質問の分類だけを書きます。 質問の本文は受付シートで読みます。休暇の質問の中身を、スペースの全員に流さないためです。
人が確認する
AIの答えを、教員に返す前に人が見ることはしません。 授業の合間に答えが要る質問で、人の確認を挟むとアプリの意味がなくなるためです。その代わりに、答えてよい範囲を節の根拠で絞り、後から記録を見ます。
- 回された質問に答える … 事務職員が受付シートを見て、教員に Chat で答えます
- 手引きに節を足す … 同じ質問が2回回されたら、手引きに節を足すかを事務長と決めます
- 答えた記録を週1回見る … 教員が「解決しなかった」を押したものと、根拠の節が1つだけの答えを読みます
- 誤った案内を直す … 誤りがあれば、その教員に正しい案内を送り、節の本文かキーワードを直します
答えの最後には「解決した/解決しなかった」のボタンを付けます。 押されたかどうかを答えた記録に残し、「解決しなかった」は翌朝の受付シートにも並べます。
目標は、300件をならして1件2分です。 回されたものは事務職員が答えるので数分、アプリが答えたものは週1回の見直しで数十秒です。回される割合が3割を超える月は、キーワードの欄が足りていないか、手引きに無い手続きが増えています。
例外に対処する
| 起きること | 対応 |
|---|---|
| 1対1のチャット以外で質問された | 「1対1のチャットで聞いてください」とだけ返す |
| 節の候補が1つも無い | AIを呼ばずに事務室へ回す |
| 30秒に間に合わない | 受け取った旨だけを先に返し、答えは Chat API で後から送る(本格構成)。半自動化の段階では事務室へ回す |
| Claude API がエラーを返す | 「いまは答えられないので事務室に回しました」と返し、受付シートへ |
cited_sections が渡した節に無い | escalate に置き換える |
| 3往復で条件がそろわない | 分かった条件を添えて事務室へ回す |
| 手引きの改訂の途中 | 古い節の一覧で答え、入れ替えが終わってから新しい一覧を使う |
| 写真やファイルだけが送られた | 「文字で質問を書いてください」と返す |
| 様式のリンクが開けない | 様式名だけを返し、答えた記録に「リンク切れ」の印を付ける |
| 同じ教員が同じ質問を短い間に繰り返す | 2回目は事務室へ回す。答えが伝わっていない可能性がある |
3行目は、この構成でいちばん気にする例外です。 節の候補の選び出しをスクリプトで先に済ませ、AIに渡す本文を短くすると、多くの質問は30秒の中に収まります。 それでも間に合わない質問は、半自動化の段階では事務室に回して取りこぼしを防ぎます。
記録を残す
- 質問の本文(個人の事情を置き換えたもの)、送った人、日時
- 選んだ節の候補と、AIが返したJSONの全文
- 教員に返した答え・聞き返し・受付の番号
- 「解決した/解決しなかった」の記録
- 回した質問と、事務職員が答えた内容、手引きに節を足したかどうか
- 答えたときに使った節の一覧の改訂日
最後の行は、改訂のあとに誤った案内を探すときに使います。 締切が変わった節について、改訂前の一覧で答えた記録を抜き出し、その教員にだけ正しい締切を送り直せます。
節ごとの質問の数は、手引きの改訂の材料になります。 質問が多い節は、本文が分かりにくいか、見つけにくい場所にあります。
04実装レベルの3段階
本記事の想定は本格構成です。 1件8分が2分になる計算は、この段階で置いています。半自動化の段階では、間に合わずに回るものと、事務室が受付シートから答える手間が残ります。 段階を飛ばさないでください。 半自動化を1か月回すと、どの章の質問が多く回されるかが分かります。その章のキーワードと節を足してから本格構成に進むほうが、回される割合が下がります。
05工数削減シミュレーション
導入後 300件 × 2分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 教職員が100名前後いる中学・高校(学校法人の私立校や、事務の手引きを学校ごとに持つ公立校)で、事務室の2〜4名が教員からの手続きの質問に口頭・内線・チャットで答えている場合。出張・休暇・物品の購入・校費の会計の手続きを、事務の手引きとして文書にまとめている場合。Google Workspace を使っており、管理者が Chat アプリの設定と公開を行える場合。
- 事務の手引きが無く、手続きが事務職員の頭の中にしかない場合(先に手引きを作るほうが効きます)。教員が数十名で、事務室に直接聞く数が月に数十件しかない場合。手続きの多くが教育委員会の電子申請で完結し、学校の事務室に質問が来ない場合。AIに出張や休暇の可否、経費として認めるかの判断をさせたい場合(この構成が答えるのは手引きに書かれた手順までです)。
07最小構成で試す方法
- 先月、事務室に届いた質問から30件を書き出す(答えた内容も事務職員に思い出して書いてもらう)
- 手引きのうち、30件に関係する章を会社が契約しているAIサービスに貼る
- 30件を1件ずつ、「この手引きだけを根拠に、答えるか、聞き返すか、事務室へ回すかを選んでください。答えるときは節の番号を書いてください」と指示して入れる
- 出てきた応じ方と答えを、事務職員の答えと比べる
| 出てきた内容 | 判断 |
|---|---|
| 事務職員と同じ答え・同じ聞き返しが出て、判断の要るものを回した | Chat アプリとの連携に進む |
| 答えは合っているが、聞き返さずに答えたものがある | 指示の書き方と、節に条件の分かれ目を書くことで直る。構成は有効 |
| 手引きに無い手順を補って答えた | 手引きの節の不足が先。 節を足してからやり直す |
3行目が出ることは珍しくありません。 事務職員が手引きに無いことを、覚えている内容で答えてきたということです。AIが補った手順を事務長に見せ、手引きに書くべきかを決めてください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 条件を聞かずに答える | 節の手順が条件で分かれるなら clarify。 節の本文にも分かれ目を書く |
| 手引きに無い手順を補って答える | 節の候補が無ければAIを呼ばない。cited_sections を照合する |
| 教員の言い方で節が選ばれない | キーワードの欄に、教員が使う言い方を足す |
| 30秒を超えてエラーになる | 節の候補をスクリプトで選び、本文を切り詰める。超えるものは回す |
| 旅費の金額を答えてしまう | 指示で禁じ、スキーマに金額の欄を作らない |
| 学年のスペースで休暇の相談が見える | 1対1のチャットだけで答える |
| 改訂前の締切で答える | 毎朝の作り直しと、答えた記録への改訂日の保存 |
| Chat アプリを設定できない版を使っている | 管理者が先に、Chat アプリの設定と公開ができるかを確かめる |
| 回す範囲が職員によって違う | 判断を回す一覧を事務長と決め、毎回AIに渡す |
上の3行が、誤った案内のほとんどです。 どれも、答える根拠を手引きの節に置き切れていないことから起きます。指示より、節の一覧とキーワードを整えるほうが効きます。
下の2行は、運用の約束で防ぎます。 回す範囲が決まらないまま動かすと、アプリが判断に踏み込んだ答えを返し、事務室が後からその答えを打ち消すことになります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 教員の名前とメールアドレス、手続きの質問の本文、事務の手引きです。休暇の質問には、本人や家族の健康の事情が書かれることがあります。
- 個人の事情をAIに渡さない … 病名や家族の状態の語は、AIに渡す前に置き換えます。手続きの案内に事情の中身は要りません。 教員にも「事情は書かずに手続きだけを聞いてください」とアプリの説明に書きます
- 学習に使われない契約で使う … Anthropic は、API などの商用の製品への入力と出力を、既定ではモデルの学習に使わないとしています。フィードバックを送るなど明示的に許可した場合は別とされているため、学校の利用ではフィードバックの機能を使わない運用にします
- 1対1のチャットだけで使う … スペースで答えると、他の教員に質問が見えます
- 判断をAIに渡さない … 出張・休暇を認めるか、校費で払えるかは、校長・事務長・事務室が決めます。 この構成が答えるのは手引きに書かれた手順までです
- 生徒の情報を入れない … 引率や部活動の会計の質問で、生徒の名前を書かないようアプリの説明に書きます。このアプリは教員だけが使う設定にし、生徒のアカウントには公開しません
- 知らせに本文を載せない … 事務室のスペースには、教員の名前と分類だけを送ります
誤りが起きた場合のリスクは、誤った手順や締切を案内して申請が遅れることと、判断の要る事柄にアプリが答えてしまうことの2つです。 前者は節の照合と改訂日の記録で、後者は判断を回す一覧と「迷えば回す」の指示で防ぎます。
10まず何から始めるか
1週目:回す事柄の一覧を決める
事務長と、「アプリが答えず事務室に回す事柄」を書き出します。出張・休暇の可否、校費で払えるか、金額の計算は、最初から一覧に入れます。
2週目:30件で試す
先月の質問から30件を選び、手引きを貼ったAIサービスで応じ方を比べます。聞き返さずに答えたもの、手引きに無い手順を補ったものを数えます。
3週目:手引きを節の一覧にする
手引きのドキュメントを節ごとにシートへ写し、様式名・締切・キーワードの欄を埋めます。2週目で聞き返しが要った節には、条件の分かれ目を本文に書き足します。
4週目:Chat アプリを事務室の中で動かす
Chat アプリを作り、事務室の3名と情報担当の教員だけに公開して、過去の質問を投げて確かめます。30秒に収まるか、回されたものが受付シートに正しく並ぶかを見ます。
2か月目: 教員に公開し、半自動化で回します。回された質問の章を数え、キーワードと節を足します。3か月目以降: 非同期の返信と解決ボタンの集計を足し、本格構成にします。1件8分が何分になったかと、回される割合、「解決しなかった」の割合を実測した時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Apps Script で Chat アプリを作るには、Google Chat を使える Business または Enterprise の Google Workspace のアカウント、Chat API を有効にした Google Cloud のプロジェクトが前提で、アプリの名前・機能・接続先(Apps Script のデプロイ ID)・公開する相手を設定すること | Google for Developers: Build a Google Chat app with Apps Script | 2026-10-07 |
Chat アプリをアドオンとして作り、トリガーに対応する関数を Chat API の設定で指定すること。イベントに commonEventObject と chat.user・chat.space・messagePayload が入ること。30秒を超える応答や別の場所への書き込みは Chat API を呼ぶこと | Google for Developers: Build Google Chat apps as Google Workspace add-ons | 2026-10-07 |
| 同期で応答するには30秒以内に、やり取りのあったスペースへ返す必要があり、それ以外は Chat API で非同期に返すこと | Google for Developers: Receive and respond to interaction events | 2026-10-07 |
| 1回の実行が6分まで。URL の取得が Google Workspace で1日100,000回 | 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 |
| 受信 Webhook が一方向の知らせで、スペースあたり毎秒1回の上限を共有すること。URL を公開の場所に貼らないこと | Google for Developers: Send Google Chat messages with incoming webhooks | 2026-10-07 |
Claude API の構造化出力を output_config の format(type: json_schema と schema)で指定すること | Claude Platform Docs: Structured outputs | 2026-10-07 |
| Anthropic API などの商用の製品への入力と出力を、既定ではモデルの学習に使わないこと。フィードバックの送信などで明示的に許可した場合は別であること | Anthropic Privacy Center: Is my data used for model training? | 2026-10-07 |
どの事柄をアプリが答えず事務室に回すかは、校長・事務長と決めてください。 学校向けの Google Workspace の版で Chat アプリを設定・公開できるかは、管理者が確かめてください。本記事は Google for Developers、Claude Platform Docs、Anthropic Privacy Center で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0815)についてのご相談はこちらから。
