外国人材の採用で、応募者とのやり取りと案内の文面を多言語でそろえる
外国人の応募者に送る募集要項、選考の案内、面接の日程、持ち物、内定後の手続きの文面を、やさしい日本語と母語の併記で作ります。用語集を先に当てるので、訳がぶれません。
- 利用ツール
- ChatGPT/Claude/Gemini/Google Apps Script/Make/Power Automate
- 対象業界
- 人材/介護/宿泊/建設/飲食
- 対象部門
- 人事/採用
- 対象業務
- 問い合わせ対応/書類作成
- 主な課題
- 人手が足りない/属人化している/確認ミスが多い
- AIで行う処理
- 翻訳
- 主な効果
- 品質標準化/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 採用担当が、募集要項や案内の日本語の原文を書く(過去のメールを探して手直しすることが多い)
- 無料の翻訳サイトに原文を貼り、応募者の母語に訳す
- 出てきた訳文を、読めないまま目で眺めて「たぶん大丈夫」と判断する
- 賃金や労働時間の数字が訳文にも入っているかを、数字だけ見比べる
- 日本語版を短い文に書き直して、やさしい日本語版を作る(時間が無いと省く)
- 日本語版と訳文をメールに並べて貼り、応募者へ送る
- 「分からない」と返信が来たら、言い方を変えて送り直す
- 送った文面は送信済みフォルダに残るだけで、次の応募者には引き継がれない
- 人採用担当が応募者管理シートの行に、送る文面の種類(受付の返信、書類の案内、面接の日程、持ち物、選考結果、内定後の手続き)と個別の事情を入れる
- 自動15分ごとに、未処理の行を拾う
- 自動募集要項シートから、職種・賃金・労働時間・業務内容・就業場所を固定値として取り出す
- 自動用語集の語を原文の中でタグに置き換え、訳がぶれないようにする
- 自動聞いてはいけない項目の辞書で、原文を点検する
- 【AI】 やさしい日本語版を作り、応募者の母語へ訳す
- 【AI】 母語の訳文を日本語へ訳し戻す
- 自動訳し戻しと原文で、数字・固有名詞・日付・書類名が一致するかを機械で見る
- 自動シートに下書きを書き戻し、Gmail の下書きを作る(送信はしない)
- 人採用担当が確認する。労働条件の4項目は労務担当も確認する
- 人採用担当が Gmail から送信し、送った文面を記録に残す
各工程の詳しい説明を読む
- 採用担当が、募集要項や案内の日本語の原文を書く(過去のメールを探して手直しすることが多い)
- 無料の翻訳サイトに原文を貼り、応募者の母語に訳す
- 出てきた訳文を、読めないまま目で眺めて「たぶん大丈夫」と判断する
- 賃金や労働時間の数字が訳文にも入っているかを、数字だけ見比べる
- 日本語版を短い文に書き直して、やさしい日本語版を作る(時間が無いと省く)
- 日本語版と訳文をメールに並べて貼り、応募者へ送る
- 「分からない」と返信が来たら、言い方を変えて送り直す
- 送った文面は送信済みフォルダに残るだけで、次の応募者には引き継がれない
問題は6つあります。
(a)用語がばらばらになる。 同じ「在留カード」が、訳す日によって residence card、zairyu card、ID card になります。書類名や職種名も同じです。 応募者は、案内のたびに別のことを言われていると受け取ります。
(b)訳が正しいかを確かめる手段が無い。 担当者は訳文の言語を読めません。数字が入っているかを見るだけで、意味が変わっていないかは分かりません。 「夜勤あり」が「夜勤の可能性あり」に変わっていても、気づけません。
(c)労働条件の誤訳が、来日後の紛争になる。 賃金の締め日と支払日、控除の項目、労働時間、業務の範囲、就業場所。この部分の誤訳は、応募者が仕事を辞める理由に直結します。
(d)やさしい日本語版が省かれる。 時間が無いと、日本語の原文と母語の訳だけを送ります。原文は敬語と長い文でできているため、応募者は読めません。 結局、母語の訳しか読まれず、来日後に日本語の書類でつまずきます。
(e)制度の説明を書いてしまう。 在留資格についての説明を、担当者が親切心で書き足すことがあります。条件は個別の事情で変わるため、断定した説明は誤案内になります。
(f)文面が個人に残る。 担当者Aが作った良い案内文は、担当者Bのメールには無いため、Bは一から書きます。担当者が替わると、案内の質が振り出しに戻ります。
- 【人】 採用担当が応募者管理シートの行に、送る文面の種類(受付の返信、書類の案内、面接の日程、持ち物、選考結果、内定後の手続き)と個別の事情を入れる
- 【自動】 15分ごとに、未処理の行を拾う
- 【自動】 募集要項シートから、職種・賃金・労働時間・業務内容・就業場所を固定値として取り出す
- 【自動】 用語集の語を原文の中でタグに置き換え、訳がぶれないようにする
- 【自動】 聞いてはいけない項目の辞書で、原文を点検する
- 【AI】 やさしい日本語版を作り、応募者の母語へ訳す
- 【AI】 母語の訳文を日本語へ訳し戻す
- 【自動】 訳し戻しと原文で、数字・固有名詞・日付・書類名が一致するかを機械で見る
- 【自動】 シートに下書きを書き戻し、Gmail の下書きを作る(送信はしない)
- 【人】 採用担当が確認する。労働条件の4項目は労務担当も確認する
- 【人】 採用担当が Gmail から送信し、送った文面を記録に残す
自動化されるのは「原文の下書き」「用語の当て込み」「やさしい日本語への書き直し」「母語への翻訳」「訳し戻しの突き合わせ」「下書きの作成」の6つです。残るのは、書かれている事実が正しいかを人が決めることと、送ることです。
送信は自動にしません。 応募者ごとに、面接日が仮なのか確定なのか、書類が揃っているのかが違います。下書きまでを機械が作り、最後に人が開いて出します。
賃金や労働時間の数値を、AIに書かせません。 募集要項シートの値をそのまま差し込み、AIには「差し込まれた値をそのまま訳す」ことだけをさせます。数値を生成させると、桁が変わる事故が起こります。
02今回想定するシステム構成
Google スプレッドシート 応募者管理シート / 用語集シート / 募集要項シート / リンク集シート │ ▼【トリガー】15分ごと(Apps Script の時間主導トリガー) Google Apps Script │ ├──▶ 未処理の行を拾う │ ├──▶ 前処理 │ ├ 用語集の語をタグに置き換える │ ├ 労働条件の4項目を募集要項シートから差し込む │ ├ 聞いてはいけない項目の辞書で原文を点検する │ └ 氏名・生年月日・在留カード番号を伏せ字にする │ ├──▶ Gemini API ── ①やさしい日本語版と母語訳(JSON) │ ├──▶ Gemini API ── ②訳し戻し(母語訳を日本語へ) │ ├──▶ 差分の判定 ── 数字・固有名詞・日付・書類名を機械で突き合わせる │ ├──▶ 応募者管理シートへ書き戻す(下書き / 用語の当たり / 差分 / 要確認の印) │ └──▶ Gmail の下書きを作る(送信はしない) │ ▼ 採用担当が確認 ──【人】 労働条件の4項目は労務担当も確認 │ ▼ 採用担当が Gmail から送信 ──【人】 → 送った文面を記録
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Google Apps Script | Power Automate、Make |
| 処理 | Gemini API | Claude API、OpenAI API |
| 集計 | Google スプレッドシート | Excel、Airtable |
| 連携 | Gmail | Microsoft 365のメール、採用管理システム |
Google Apps Script を置いているのは、用語集・募集要項・応募者管理がスプレッドシートにあるためです。 表を読み、文字列を組み立て、APIを呼び、メールの下書きを作るところまでが1つの環境で完結します。すでに Google Workspace を使っているなら、追加の契約は生成AIの利用分だけです。
Apps Script には、スクリプトの所有者が設定する「インストール可能なトリガー」があります。公式の説明では、時間主導型のトリガーは1分に1回から月1回までの間隔で動かせ、書き方は ScriptApp.newTrigger("myFunction").timeBased().everyHours(6).create(); のような形です。曜日と時刻を指定することもできます。このトリガーは、それを作った人のアカウントで動きます。 担当者個人のアカウントで作ると異動したときに止まるため、採用チームの共有アカウントで作ります。
割り当ての制限も先に見ておきます。公式の一覧では、1回の実行時間は無料アカウント・Google Workspace とも6分、トリガーの合計実行時間は無料アカウントで1日90分、Google Workspace で1日6時間、外部への通信は無料アカウントで1日20,000回、Google Workspace で1日100,000回です。月60件なら、どちらの枠にも余裕があります。 ただし1回の実行が6分で切られるため、1回に処理する件数を絞る作りにします。
Power Automate や Make でも同じ流れは組めます。 この構成で結果を左右するのは、ツールより用語集と募集要項シートの中身です。
03どうやって実装するのか
処理の起点を決める
15分ごとの時間主導トリガーを基本にします。採用担当がシートに行を入れてから、遅くとも15分後には下書きができている状態にします。Apps Script のインストール可能なトリガーで作り、分の間隔を指定します。採用のやり取りは即時性がそこまで高くないため、これで十分です。
もう1つ、応募フォームの送信を起点にする経路を置きます。 応募フォームの回答がシートに入った時点で、受付の返信だけは自動で下書きを作ります。応募から最初の返信までの時間が長いと、他社に流れます。 公式の説明では、インストール可能なトリガーはAPIの呼び出しやスクリプトの実行では発火しません。フォームからの送信という、人の操作を起点にします。
失敗したときは、Google から通知のメールが届きます。 このメールが採用担当の共有アカウントに届くようにし、誰も見ないアドレスに設定しないでください。 下書きが作られていないことに気づかないまま、応募者を3日待たせる、という取りこぼしが起きます。
用語集を直したときに、過去の文面を作り直す経路は作りません。 すでに送った案内の訳を後から変えると、応募者の手元にある案内と食い違います。用語集の変更は、その日以降に作る文面から効かせます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 応募者の行 | 応募者ID、応募職種、選考段階、母語、送る文面の種類、個別の事情 | 応募者管理シート |
| 募集要項 | 職種名、賃金(時給・月給、締め日、支払日、控除の項目)、労働時間、休日、業務内容、就業場所 | 募集要項シート(人事が確定した値) |
| 用語集 | 日本語の語、やさしい日本語の言い換え、各言語の訳、決めた日、出典 | 用語集シート |
| 文面の型 | 文面の種類ごとの構成(何を、どの順で書くか) | 型のシート |
| リンク集 | 制度の説明を載せている公的な案内のURLと言語 | リンク集シート |
| 聞かない項目の辞書 | 本籍・出生地、家族、住宅状況、生活環境・家庭環境、宗教、支持政党、人生観・生活信条、思想などに当たる語 | 辞書シート |
| 過去に送った文面 | 応募者ID、送った日、種類、日本語版、訳文 | 送信記録シート |
募集要項シートが正本です。 賃金も労働時間も就業場所も、このシートの値を差し込みます。担当者が思い出しながら書いた値を使わないでください。 施設ごとに時給が違う法人では、ここがずれると全部がずれます。
用語集は、最初に80語から100語で足ります。 書類名(在留カード、住民票、雇用契約書、健康診断書)、職種名(介護職員、調理補助、客室清掃)、賃金の項目(基本給、時給、深夜手当、社会保険料、寮費)、選考の言葉(書類選考、面接、内定、入社日)。この4群を先に埋めます。 「決めた日」と「出典」の列も置き、公的な案内で使われている訳があるものはその訳に合わせます。
データの取得方法を決める
応募者の行: SpreadsheetApp でシートを開き、処理待ちの状態になっている行だけを読みます。全行を毎回読むと、応募者が増えたときに1回の実行の6分に収まらなくなります。 状態の列で絞り、1回の実行で処理する件数の上限を決めます。
母語の取得: 応募フォームで応募者自身に選んでもらいます。AIに推定させません。 国籍と母語は一致しないことがあり、推定を間違えると、読めない言語の案内が届きます。選択肢に「日本語で大丈夫です」も入れます。
募集要項と用語集: 実行のたびに読み直します。用語集が数百語を超えたら、応募職種に関係する行だけに絞って渡します。
リンク集: 手で管理します。公的な案内のURLは変わることがあるため、半年に1回、リンク先が開くかを担当者が確かめます。 ここを自動で拾いに行かせると、関係のないページが案内に入ります。
送信記録: 同じ応募者への過去の文面を渡し、前に伝えた内容と食い違わないかを後段で見ます。
AIへ渡す前に整形する
- 用語集の当て込み … 原文の中の用語を、
{{TERM:在留カード}}のようなタグに置き換えます。AIには「タグはそのまま残す」と指示し、後で各言語の訳に置き換えます。 訳をAIに任せず、表の値で確定させるためです - 労働条件の固定 … 賃金・労働時間・業務内容・就業場所を、募集要項シートの値でタグに置き換えます。
{{FIX:賃金}}のようにし、AIが数値を書き換えられない形にします - 聞いてはいけない項目の点検 … 辞書に当たる語が原文にあれば、その時点で止めて担当者に戻します。訳す前に止めるのが要点です
- 個人情報の伏せ字化 … 氏名、生年月日、在留カードの番号、パスポート番号を
{{NAME}}のようなプレースホルダに置き換えます - 長さの確認 … 文面の種類ごとに、原文の上限を決めます。内定後の手続きの案内でも2,000字に収まります
- 渡す順序 … 用語集と文面の型を先に置き、応募者ごとの原文を最後に置きます
6つ目には理由があります。 Gemini の長いコンテキストについての公式の説明では、質問や指示はプロンプトの最後に置くことが推奨されています。 また、繰り返し使う部分にはコンテキストのキャッシュが使え、費用を下げられるとされています。用語集と文面の型は毎回同じなので、先頭に置くほうが理にかないます。
用語集を丸ごと渡しても問題ない規模です。 公式の説明では、Gemini のモデルは100万トークンを超えるコンテキストを扱えるとされています。ただし複数の情報を同時に取り出す場合は精度が落ちることがあるとも書かれているため、用語集が数百語に育ったら、職種と文面の種類で絞って渡してください。
AIに処理させる
計算処理にさせること:
| 処理 | 内容 |
|---|---|
| 用語の置き換え | 用語集の表を引いて、タグを各言語の訳に確定させる |
| 労働条件の差し込み | 募集要項シートの値をそのまま入れる |
| 聞かない項目の検出 | 辞書との文字列照合 |
| 訳し戻しの突き合わせ | 数字・日付・固有名詞・書類名の一致を見る |
| 文面の記録 | 応募者IDごとに送った内容を残す |
生成AI(Gemini API)にさせること:
| 処理 | 内容 |
|---|---|
| やさしい日本語への書き直し | 敬語と長い文を、短く区切った平易な日本語にする |
| 母語への翻訳 | やさしい日本語版を応募者の母語へ訳す |
| 訳し戻し | 母語の訳文を日本語へ訳し戻す(別の呼び出しで行う) |
| 用語の当たり外れの指摘 | 用語集に無い語で、訳を決めておくべきものを挙げる |
| 聞かない項目の混入の指摘 | 辞書では拾えない言い回しを挙げる |
訳し戻しは、必ず別の呼び出しで行います。 同じ呼び出しの中で訳と訳し戻しを両方させると、AIは自分が訳した内容を思い出して書くため、訳文が間違っていても正しい日本語が返ってきます。
5つ目は、辞書の取りこぼしを拾う役です。 「ご実家はどちらですか」「ご家族は日本に来られる予定ですか」といった一文は、辞書の語に当たらないことがあります。本籍・出生地や家族のことを聞いている一文として、AIに指摘させます。 最終的に消すかどうかは人が決めます。
在留資格の要件や法令の解釈を、AIに書かせません。 プロンプトで禁止し、制度の説明が必要な箇所にはリンク集のURLを置くよう指示します。
訳文の言い回しの良し悪しは、扱いません。 自然かどうかを気にし始めると、確認が長くなります。見るのは、事実が変わっていないかと、用語がそろっているかだけです。
指示内容を固定する
やさしい日本語版と母語訳を作る呼び出しです。
あなたは、外国人の応募者へ送る採用の案内文を作る担当者です。
下の【原文】を、(1) やさしい日本語 と (2) {target_lang} に直してください。
【厳守事項】
- {{TERM:...}} と {{FIX:...}} と {{NAME}} などの二重波かっこのタグは、
中身も形も変えずにそのまま残してください。訳さないでください。
- 原文に書かれていない事実を足さないでください。
日付、金額、時間、場所、書類の名前を、推測で補わないでください。
- 在留資格、ビザ、法令、税、社会保険の「制度の説明」を書かないでください。
説明が要ると判断した箇所には、本文を書かずに
[LINK_NEEDED: 何の説明が要るか] とだけ書いてください。
- 応募者の本籍・出生地、家族、住宅の状況、生活環境・家庭環境、
宗教、支持政党、人生観・生活信条、思想について、
たずねる文・ふれる文を書かないでください。
原文にそうした内容があれば、訳さずに prohibited_hits に挙げてください。
- やさしい日本語は、1文を40字以内にし、敬語を減らし、
漢字の語はやさしい言い方に置き換えてください。
例:「ご持参ください」→「もってきてください」
「面接を実施いたします」→「面接をします」
- {target_lang} の訳は、やさしい日本語版から訳してください。
原文の日本語からではありません。
- 用語集に無い語で、今後も繰り返し使いそうな語があれば、
glossary_missing に日本語のまま挙げてください。訳は書かないでください。
- 分からないことは推測せず、notes に「確認が必要」と書いてください。
【文面の種類】{doc_type}
【応募職種】{job_title}
【文面の型】
{template}
【用語集(この訳だけを使う。タグの置き換えは後の処理で行う)】
{glossary}
【原文】
{source_text}
「やさしい日本語版から訳す」の1行が効きます。 元の日本語から直接訳すと、母語の訳も長く回りくどくなります。先に短く区切ってから訳すと、両方の版が読みやすくなり、訳し戻しの突き合わせもしやすくなります。
[LINK_NEEDED: ...] という逃げ道を用意してください。 これが無いと、AIは制度の説明を書きます。「書くな」とだけ言うと、書かずに黙って進むため、担当者は説明が抜けたことに気づきません。要るのに書けない箇所を、印として残させます。
次に、訳し戻しの呼び出しです。こちらには原文を渡しません。
下の文章を、日本語に訳してください。
【厳守事項】
- 書かれていることだけを訳してください。補わないでください。
- 意味が取れない箇所は、[不明] と書いてください。
自然な日本語になるように推測で埋めないでください。
- 数字、日付、時刻、金額、固有名詞は、書かれているとおりに訳してください。
- 二重波かっこのタグはそのまま残してください。
【文章】
{translated_text}
原文を渡さないことが、訳し戻しの前提です。 原文があると、AIは訳文ではなく原文を写します。
出力形式を固定する
1つ目の呼び出しの出力です。
{
"applicant_id": "",
"doc_type": "受付の返信 | 書類の案内 | 面接の日程 | 面接の持ち物 | 選考結果 | 内定後の手続き | 募集要項",
"easy_ja": "",
"target_lang": "",
"translation": "",
"glossary_missing": [],
"link_needed": [],
"prohibited_hits": [],
"notes": []
}
Gemini API で構造化された出力を受け取るには、リクエストの response_format に type を "text"、mime_type を "application/json" とし、schema にJSONスキーマを渡します。スキーマでは string number integer boolean object array の型が使え、description と required を指定できます。doc_type のように値が決まっている項目は enum で固定します。
テキスト生成のリクエストでは、model input system_instruction と、temperature などを含む generation_config を渡します。temperature は低めにします。 案内文に必要なのは、同じ入力から同じ文面が出ることです。
2つ目(訳し戻し)の出力は、次の形で受け取ります。
{
"applicant_id": "",
"back_translation": "",
"unclear_spans": []
}
この2つを、後の処理で機械的に突き合わせます。
| 見るもの | 方法 | 一致しないとき |
|---|---|---|
| 金額・時給・時間数 | 数字を正規表現で抜き出し、集合として比べる | 要確認の印を立てる |
| 日付・曜日 | 日付の表記をそろえてから比べる | 要確認の印を立てる |
| 固有名詞・施設名・駅名 | 用語集と募集要項の語が、訳し戻しに現れるかを見る | 要確認の印を立てる |
| 書類の名前 | 用語集の書類名が、訳し戻しに現れるかを見る | 要確認の印を立てる |
[不明] の数 | 訳し戻しに [不明] があれば数える | 1つでもあれば人が見る |
意味が変わったかどうかを、AIの判定だけに頼りません。 金額と日付と固有名詞は、文字列として機械で比べられます。この5つが全部そろっていれば、訳が大きく外れている可能性は低くなります。
システムへ連携する
下書きはスプレッドシートとメールの両方に作ります。 シートの行に結果を書き戻し、同時に GmailApp でメールの下書きを作ります。送信はしません。
| 列 | 中身 |
|---|---|
| 応募者ID / 応募職種 / 母語 | 基本情報 |
| 文面の種類 | doc_type |
| やさしい日本語版 | easy_ja |
| 母語の訳 | translation |
| 用語の未登録 | glossary_missing |
| リンクが要る箇所 | link_needed |
| 聞いてはいけない項目 | prohibited_hits |
| 訳し戻しの差分 | 数字・日付・固有名詞・書類名のうち一致しなかったもの |
| 労働条件の確認 | 労務担当が入れる(確認済み/要修正) |
| 採用担当の確認 | 人が入れる(送る/直す/止める) |
| 送信日 | 送ったあとに記録 |
メールの本文は、やさしい日本語を先、母語を後にします。 母語を先にすると、日本語のほうは読まれません。同じ内容が上下に並んでいることが分かるよう、区切り線と言語名を入れます。
glossary_missing は、用語集の「未登録」シートへ自動で追記します。 月に1回、採用担当が訳を決めて用語集に入れます。これを回さないと、用語集はいつまでも最初の100語のままです。
link_needed の箇所は、リンク集から候補を出して担当者が選びます。 自動で差し込みません。どの説明ページを案内するかは、応募者の状況で変わります。
採用管理システムがある場合は、そちらに書き戻す経路も作れます。 ただし最初の2か月はシートで回してください。システムに入れると、下書きのどこを人が直しているかが見えなくなります。
人が確認する
賃金・労働時間・業務内容・就業場所の4項目は、必ず人が確認します。 確認するのは、採用担当だけでなく労務担当もです。この4項目は募集要項シートの値がそのまま差し込まれているはずなので、確認は「シートの値と、送る文面の値が同じか」を見るだけです。訳文の側は、訳し戻しに同じ数字が出ているかで見ます。
それ以外の文面は、採用担当1名の確認で出します。 面接の持ち物や会場までの行き方は、間違っても言い直せます。全部を二重に見ると、1件6.0分では終わりません。
止める条件を決めておきます。
prohibited_hitsが1件でもある … 送らずに、原文から直す- 訳し戻しの差分がある … 該当の箇所だけを読み、必要なら訳をやり直す
[不明]が訳し戻しにある … 母語の訳が意味を成していない可能性。人が作り直すlink_neededがある … 担当者がリンクを選ぶか、その一文を削る- 労働条件の4項目が初めて出る文面 … 労務担当の確認を必ず通す
確認を速くする工夫が効きます。
- やさしい日本語版と訳し戻しを、左右に並べて表示する
- 一致しなかった数字・日付だけを色で示す
- 前回の応募者に送った同じ種類の文面を、すぐ開けるようにする
- 用語集の未登録語を、下書きの下にまとめて出す
2つ目が効きます。 訳文を読めない担当者が見るのは、結局「数字が合っているか」です。そこだけを目立たせれば、1件の確認が短く済みます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 募集要項シートに値が入っていない | 下書きを作らず、人事へ差し戻す。空欄のまま訳させない |
| 用語集に無い語が多い(10語以上) | 下書きは作るが「用語の整備が必要」の印を立て、担当者に先に用語を決めてもらう |
| 応募者の母語が対応言語に無い | 英語とやさしい日本語の併記にし、その旨を担当者に知らせる |
| 訳し戻しで数字が一致しない | 要確認の印を立て、訳をやり直す。2回続けば人が訳す |
| AIが制度の説明を書いた | 後処理で在留資格・ビザ・法令に関する語を検出し、該当の段落を落として印を立てる |
prohibited_hits が出た | 送らずに原文へ戻す。辞書にその言い回しを足す |
| 1回の実行が6分に収まらない | 処理する件数の上限を下げ、残りは次の起動に回す |
| APIがエラーを返す | 3回まで間を空けて再実行し、それでも駄目なら行を未処理に戻して通知する |
| 面接日を一度伝えたあとに変更になった | 過去に送った文面を渡し、「前回お伝えした日から変更」と明記する型を使う |
| 同じ応募者に同じ文面が二重に作られた | 応募者IDと文面の種類で重複を見て、後から作られたほうを止める |
| 応募者から「分からない」と返信が来た | その文面と応募者の返信を記録し、月次で型とやさしい日本語の指示を見直す |
| 応募者が日本語で返信してきた | 以後は日本語を主にし、母語は補足に回す(止めるかは本人に聞く) |
記録を残す
この記録は、採用の案内が伝わっているかを測る材料になります。
- 応募者IDごとの、送った日・文面の種類・やさしい日本語版・母語の訳
- 使った用語集の版と、当てた用語の一覧
glossary_missingに挙がった語と、訳を決めた日- 訳し戻しの差分が出た件数と、その内訳(数字/日付/固有名詞/書類名)
prohibited_hitsの件数と、原文を書いた担当者- 労働条件4項目の確認を、誰がいつ行ったか
- 応募者から「分からない」と返ってきた件数と、その文面
- 選考の途中で連絡が途切れた応募者と、その直前に送った文面
労働条件の確認の記録は、必ず残してください。 来日後に「聞いていた話と違う」となったとき、いつ・どの文面で・どう伝えたかが残っていることが、会社と応募者の双方を守ります。
「分からない」と返ってきた文面を集めると、やさしい日本語の指示を直す材料になります。 訳の品質ではなく、元の日本語が難しすぎることが原因であることが多いです。連絡が途切れた応募者の直前の文面も見てください。 書類の案内で途切れることが多ければ、必要書類の説明が伝わっていません。
04実装レベルの3段階
半自動化の時点で、18分が7分程度になります。 訳す作業とやさしい日本語に直す作業が消えるためです。本格構成で6.0分になりますが、減るのは応募者ごとの情報を手で入れる部分と、過去の文面を探す時間です。 半自動化から始めてください。 この題材は、自動化の範囲を広げることより、用語集と募集要項シートが整っているかで結果が決まります。 ツールを先に組んでも、用語集が空なら訳はぶれ続けます。 本格構成の「応募フォームからの受付返信」は、効果が分かりやすい部分です。 日本語が得意でない応募者にとっては、最初に届いた案内が読めるかどうかが、その会社を選ぶかの判断材料になります。
05工数削減シミュレーション
導入後 60件 × 6分 ÷ 60 = 6 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 介護・建設・飲食・宿泊などで、日本語が得意でない応募者を月に10名以上受け入れている企業。募集要項や選考の案内を担当者が日本語で書き、その都度翻訳ツールに1本ずつかけている場合。応募から入社までの案内文が、担当者ごとの書き方で残っており、同じ言葉に違う訳が当たっている場合。
- 応募者がすべて日本語で読み書きでき、案内文を訳す必要がない企業。募集する職種・賃金・勤務地・業務内容が社内で文書として確定しておらず、その都度口頭で決めている場合(まず募集要項を確定するほうが先)。監理団体や登録支援機関が応募者とのやり取りを一括して行っており、自社が文面を作っていない場合。
07最小構成で試す方法
- 用語集を80語から100語で作る(書類名、職種名、賃金の項目、選考の言葉の4群)
- 募集要項シートに、職種・賃金・労働時間・業務内容・就業場所を確定した値で書く
- 過去に送った案内文を、文面の種類ごとに3本ずつ、計15本用意する
- 生成AIのチャット画面に、上記のプロンプトと用語集・原文を貼り、やさしい日本語版と訳を出させる
- 別のチャット(新しい会話)に訳文だけを貼り、日本語へ訳し戻させる
- 原文と訳し戻しを並べて、数字・日付・固有名詞・書類名が合っているかを見る
見るのは次の3点です。
| 見る点 | 判断 |
|---|---|
| 訳し戻しで、金額・時間・日付が原文と一致した割合 | 9割を下回るなら、やさしい日本語版の作り方かタグの置き換えを見直す |
| 用語集の語が、訳文で用語集どおりに使われているか | 使われていないなら、タグによる置き換えを前処理で必ず行う |
| 制度の説明が混ざっていないか | 混ざるなら、プロンプトの禁止をもっと具体的な語で書く |
5つ目の手順を省かないでください。 同じ会話の中で訳し戻しをさせると、AIは原文を覚えているため、訳が間違っていても正しい日本語が返ります。
あわせて、母語が読める人に1回だけ見てもらってください。 支援機関、すでに働いている外国籍の従業員、通訳の方など、誰でも構いません。15本のうち5本で、訳し戻しでは見えなかったずれ(敬意の度合い、命令に聞こえる言い方)が出てくることがあります。 ここで出たものを、プロンプトの指示に足します。
スクリプトを書かずに、ここまでは試せます。所要は2〜3日です。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 同じ語に違う訳が当たる | 用語集の語をタグに置き換え、表の値で訳を確定させる。AIに訳させない |
| 賃金の数字が訳で変わる | 募集要項シートの値をタグで差し込み、AIが書き換えられない形にする |
| 訳し戻しが正しく見える | 訳し戻しは原文を渡さず、別の呼び出しで行う |
| AIが在留資格や法令の説明を書く | プロンプトで禁止し、[LINK_NEEDED: ...] を置かせる。後処理でも語を検出する |
| 面接の案内に家族や住まいのことが入る | 辞書で原文を点検し、AIにも言い回しの指摘をさせる。訳す前に止める |
| やさしい日本語が敬語のまま | 1文40字以内という具体的な条件と、言い換えの例をプロンプトに書く |
| 母語だけの案内になる | メールの型を、やさしい日本語が先、母語が後の並記に固定する |
| タグが訳文で消える | 「二重波かっこはそのまま残す」を明記し、後処理でタグの数を突き合わせる |
| 1回の実行が6分で切られる | 1回に処理する件数の上限を決め、残りを次の起動に回す |
| トリガーが動かない | インストール可能なトリガーは作った人のアカウントで動く。共有アカウントで作る |
| 失敗の通知に誰も気づかない | 通知のメールを採用チームの共有アドレスに届くようにする |
| 用語集がいつまでも育たない | glossary_missing を未登録シートへ自動で追記し、月に1回訳を決める |
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 応募者の氏名、国籍、母語、在留に関する情報、連絡先、応募職種、選考の状況と、会社が決めた労働条件です。選考の過程で知り得た情報は、採用のためだけに使うものです。
- 応募者の個人情報を外部AIへ送らないこと … 氏名、生年月日、在留カードの番号、パスポート番号、連絡先は、前処理で
{{NAME}}のようなプレースホルダに置き換えてから渡します - 国籍と在留に関する情報の扱い … 厚生労働省の説明では、求職者の個人情報の保護の観点から、職業安定法第5条の5及び指針により、社会的差別の原因となるおそれのある個人情報などについては、原則として収集が認められないとされています。選考に必要のない属性の列を、管理シートに作らないでください
- 聞いてはいけない項目を、訳の工程で混入させないこと … 本籍・出生地、家族、住宅状況、生活環境・家庭環境、宗教、支持政党、人生観・生活信条、思想。原文の点検と、AIによる言い回しの指摘の二段で見ます
- 労働条件の4項目を人が確認すること … 賃金、労働時間、業務内容、就業場所。この4つの誤訳は、来日後の紛争になります。 採用担当と労務担当の2名で確認し、確認した人と日時を記録に残します
- 在留資格や法令の解釈を、AIにも担当者にも書かせないこと … 条件は個別の事情で変わります。制度の説明は公的な案内へのリンクに寄せます
- 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます。伏せ字にしていても、賃金や勤務地は会社の情報です
- シートの権限 … 応募者管理シートは、採用チームと労務担当だけが開ける状態にします。各施設の管理者には、面接に必要な範囲だけを別のシートで共有します
- 送った文面の保存期間 … 採用に使う目的の範囲で保存し、期間を決めます。不採用となった応募者の情報の扱いも決めておいてください
- 自動実行してよい範囲 … 原文の下書き、用語の当て込み、翻訳、訳し戻し、突き合わせ、下書きの作成までです。送信、労働条件の確定、選考結果の判断は人が行います
誤りが起きた場合のリスクは、労働条件の誤訳による来日後の紛争、制度の説明の誤りによる誤案内、聞いてはいけない項目の混入、応募者の個人情報の外部送信です。4番目は、伏せ字の処理を前処理に入れておけば防げます。
10まず何から始めるか
1週目:募集要項を確定し、用語集を作る
職種、賃金(時給・月給、締め日、支払日、控除の項目)、労働時間、休日、業務内容、就業場所を、表として確定します。施設ごとに違うなら、施設ごとの行を持たせます。 あわせて、用語集を80語から100語で作ります。書類名、職種名、賃金の項目、選考の言葉の4群から埋めます。
2週目:15本で試す
過去に送った案内文を種類ごとに3本ずつ、計15本用意し、チャット画面で最小構成を試します。訳し戻しは必ず新しい会話で行ってください。 数字・日付・固有名詞・書類名の一致を見て、9割を下回るならプロンプトかタグの置き換えを直します。母語が読める人に、5本だけ見てもらいます。
3週目:聞いてはいけない項目の辞書と、文面の型を作る
本籍・出生地、家族、住宅状況、生活環境・家庭環境、宗教、支持政党、人生観・生活信条、思想に当たる語を辞書にします。過去の案内文を読み返し、実際に入っていた言い回しを足します。 あわせて、文面の種類ごとの型(何を、どの順で書くか)を決めます。
4週目以降: Apps Script で半自動化を組みます。15分ごとのトリガーと、応募フォームからの受付返信の2経路から始めます。 失敗の通知が共有アドレスに届くことを、最初に確かめてください。
2か月目以降: 用語集の未登録語を月に1回決める運用を回します。これを放置すると、用語集は最初の100語のまま止まります。
3か月目以降: 応募者から「分からない」と返ってきた件数と、連絡が途切れた応募者の直前の文面を見ます。ここまで来ると、この仕組みは案内文を訳す道具から、採用の歩留まりがどこで落ちているかを見つける道具になります。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 本籍地や家族の職業など「本人に責任のない事項」、宗教や支持政党など「本来自由であるべき事項(思想・信条にかかわること)」を採用基準としないこと。求職者の個人情報を保護する観点から、職業安定法第5条の5及び指針により、社会的差別の原因となるおそれのある個人情報などについては原則として収集が認められないこと | 厚生労働省 公正な採用選考の基本 | 2026-09-24 |
| 配慮すべき事項として、本人に責任のない事項に「本籍・出生地」「住宅状況」「家族」「生活環境・家庭環境など」が、本来自由であるべき事項に「宗教」「人生観・生活信条など」「思想」「購読新聞・雑誌・愛読書など」「支持政党」「尊敬する人物」「労働組合などの社会運動」が挙げられていること。方法としては、身元調査などの実施、必要性が認められない健康診断の実施が挙げられていること | 厚生労働省 採用選考時に配慮すべき事項 | 2026-09-24 |
構造化された出力を受け取る際に response_format に type mime_type schema を指定すること。スキーマで string・number・integer・boolean・object・array の型が使え、enum で値を列挙でき、description required を指定できること | Gemini API: Structured output | 2026-09-24 |
テキスト生成のリクエストで model input system_instruction generation_config(temperature など)stream を指定できること | Gemini API: Text generation | 2026-09-24 |
| 100万トークンを超えるコンテキストを扱えること。繰り返し使うコンテキストはキャッシュで費用を下げられること。複数の情報を同時に取り出す場合は精度が落ちることがあること。質問や指示はプロンプトの最後に置くことが推奨されること | Gemini API: Long context | 2026-09-24 |
時間主導型のトリガーが1分に1回から月1回までの間隔で実行でき、ScriptApp.newTrigger("myFunction").timeBased().everyHours(6).create(); のように作れること。曜日と時刻も指定できること。作成した人のアカウントで実行され、APIの呼び出しやスクリプトの実行では発火しないこと。失敗時には通知のメールが送られること | Apps Script: Installable triggers | 2026-09-24 |
| 1回のスクリプト実行時間が無料アカウント・Google Workspace とも6分、トリガーの合計実行時間が無料アカウントで1日90分・Google Workspace で1日6時間、外部への通信が無料アカウントで1日20,000回・Google Workspace で1日100,000回であること | Apps Script: Quotas | 2026-09-24 |
応募者の母語の種類、対応する言語の範囲、監理団体や登録支援機関との役割分担は、企業ごとに異なります。この部分は利用環境に応じた個別確認が必要です。 在留資格の要件や、採用選考に関する法令の解釈については、この記事では扱っていません。出入国在留管理庁や厚生労働省の公的な案内を確認し、必要に応じて資格を持つ専門家に確認してください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0217)についてのご相談はこちらから。
