飲食店に外国語で届く予約の要望(アレルギー・宗教上の食事制限・人数の変更)を訳して予約台帳に要点を書き、日本語で書いた返事を相手の言語に直して返す
自社サイトの予約フォームとメールに外国語で届く要望を日本語に訳し、アレルギー・宗教上の食事制限・人数の変更を予約台帳の欄に分けて書き込みます。スタッフが日本語で書いた返事は相手の言語に訳し、数と否定のずれを点検してから返します。
- 生成AI
- ChatGPT/Claude
- 連携・自動化
- Make/n8n/Power Automate/Zapier
- 対象業界
- 宿泊/小売/飲食
- 対象部門
- カスタマーサポート/営業
- 対象業務
- 台帳・マスタ管理/問い合わせ対応
- 主な課題
- 問い合わせが多い/属人化している/確認ミスが多い
- AIで行う処理
- 翻訳
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★☆☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 予約フォームの送信の通知、または予約客からのメールが予約用のアドレスに届く
- 予約係が本文を開き、英語以外なら翻訳サイトに貼って日本語で読む
- 予約台帳で予約を探し、日付・時刻・人数・コースを確かめる
- アレルギーや食事制限があれば、店長に電話かチャットで伝え、厨房で応じられるかを聞く
- 返事を英語で考えて書く。英語以外の予約客には、日本語で書いて翻訳サイトで相手の言語に直す
- 訳した文をメールに貼って送る
- 要望の要点を、予約台帳の備考の欄に書き写す
- 自動予約フォームが送信されるか、予約用のアドレスに予約客からのメールが届くと、ワークフローが動く
- 自動機械翻訳が要望の文を日本語に訳し、元の言語を判定する
- 自動AIが原文と訳文を読み、アレルギーの食材と程度、宗教上の食事制限、人数の変更、到着の変更、質問を台帳の欄に分けて書き出す
- 自動予約台帳で予約の行を探し、AIが書き出した欄に書き込む。予約の人数や時刻の欄には書き込まない
- 自動アレルギー・食事制限・人数の変更のあるものは、その店の店長に知らせる
- 人店長が厨房と相談して応じられることを決め、台帳の「店の回答」の欄に日本語で書く
- 人予約係が店の回答をもとに、返事を日本語で台帳の欄に書き、状態を「返事あり」にする
- 自動機械翻訳が日本語の返事を相手の言語に訳し、さらに日本語へ訳し戻す
- 自動AIが日本語の返事と訳し戻した文を比べ、日付・時刻・人数・否定・食材の語のずれを点検する
- 自動点検を通った訳文を、予約客あてのメールの下書きにする
- 人予約係が下書きと点検の結果を見て送る
各工程の詳しい説明を読む
- 予約フォームの送信の通知、または予約客からのメールが予約用のアドレスに届く
- 予約係が本文を開き、英語以外なら翻訳サイトに貼って日本語で読む
- 予約台帳で予約を探し、日付・時刻・人数・コースを確かめる
- アレルギーや食事制限があれば、店長に電話かチャットで伝え、厨房で応じられるかを聞く
- 返事を英語で考えて書く。英語以外の予約客には、日本語で書いて翻訳サイトで相手の言語に直す
- 訳した文をメールに貼って送る
- 要望の要点を、予約台帳の備考の欄に書き写す
(a)返事を書ける人が限られる。 書けない予約係は要望を開いても、そのまま閉じて次の日の人に任せます。 同じメールを何人もが開いて閉じています。
(b)要望が台帳に写されない。 7番目の書き写しは、返事を送った後の作業です。忙しい日は備考の欄が空のまま当日を迎えます。 写しても訳文をそのまま貼るので、厨房は何の食材の話かを長い文から探すことになります。
(c)訳した返事の否定を確かめる手段がない。 中国語やタイ語に訳した返事が「除けます」と「除けません」のどちらになっているかを、送る前に確かめられる人がいません。アレルギーの返事でここがずれると、来店の当日に厨房とお客様の間で食い違いが起きます。
(d)人数の変更が台帳の人数を書き換えてしまう。 「6名から8名に増やしたい」を受けた予約係が、席を確かめる前に台帳の人数を8に直すことがあります。店の席の都合で受けられなかったときに、台帳だけが8名のまま残ります。
- 【自動】 予約フォームが送信されるか、予約用のアドレスに予約客からのメールが届くと、ワークフローが動く
- 【自動】 機械翻訳が要望の文を日本語に訳し、元の言語を判定する
- 【自動】 AIが原文と訳文を読み、アレルギーの食材と程度、宗教上の食事制限、人数の変更、到着の変更、質問を台帳の欄に分けて書き出す
- 【自動】 予約台帳で予約の行を探し、AIが書き出した欄に書き込む。予約の人数や時刻の欄には書き込まない
- 【自動】 アレルギー・食事制限・人数の変更のあるものは、その店の店長に知らせる
- 【人】 店長が厨房と相談して応じられることを決め、台帳の「店の回答」の欄に日本語で書く
- 【人】 予約係が店の回答をもとに、返事を日本語で台帳の欄に書き、状態を「返事あり」にする
- 【自動】 機械翻訳が日本語の返事を相手の言語に訳し、さらに日本語へ訳し戻す
- 【自動】 AIが日本語の返事と訳し戻した文を比べ、日付・時刻・人数・否定・食材の語のずれを点検する
- 【自動】 点検を通った訳文を、予約客あてのメールの下書きにする
- 【人】 予約係が下書きと点検の結果を見て送る
6番目と7番目が、この設計の分かれ目です。 応じられるかを決めるのは店長と厨房で、返事を書くのは予約係、書く言葉は日本語です。
4番目で予約の人数の欄に書き込まないのも、意図してのことです。 人数の変更は「変更の依頼」の欄に書くだけにし、席を確かめて受けると決めた人が、人数の欄を直します。
02今回想定するシステム構成
自社サイトの予約フォーム ──(送信の内容を Webhook へ送る) 予約用のアドレスに届くメール(ラベル「予約_外国語」) ▼【トリガー①】Custom webhook / Watch emails Make(シナリオ①) ├──▶ 要望の文と、予約を特定する手がかり(予約番号・氏名・日付)を取り出す ▼ DeepL API ── 日本語へ翻訳(元の言語を自動で判定) ▼ Claude API ── 原文と訳文から、アレルギー・食事制限・人数の変更などを欄に分ける ▼ Parse JSON ─▶ Google Sheets(Search Rows → Update a Row)予約台帳の要望の欄 ▼ ルーター ├─ アレルギー・食事制限・人数の変更 ▶ その店の店長へ通知(Gmail) └─ フォールバック ─────────────▶ 予約係の一覧に載せるだけ 【人】店長が「店の回答」、予約係が日本語の返事を書き、状態を「返事あり」に ▼【トリガー②】10分ごと(Search Rows:状態が「返事あり」) Make(シナリオ②) DeepL API ── 日本語の返事を相手の言語へ(食材と食事制限の用語集を当てる) ├──▶ DeepL API ── 訳文を日本語へ訳し戻す ▼ Claude API ── 日本語の返事と訳し戻しを比べ、日付・人数・否定・食材の語のずれを点検 ▼ Gmail ── Create a draft email(予約客あての下書き)、台帳の状態を「送信待ち」に ▼【人が確かめて送る】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | Make | Zapier、n8n、Power Automate |
| 生成AI | Claude API(要望の欄分けと、訳文の否定・数・食材の語の点検) | OpenAI API |
| 翻訳 | DeepL API | Google Cloud Translation |
| 台帳 | Google スプレッドシート(予約台帳) | Airtable |
| メール | Gmail(予約用のアドレス) | Outlook |
新しく足すのは、Make のシナリオ2本と、予約台帳の要望の欄だけです。 予約台帳に「アレルギー」「程度」「食事制限」「人数の変更の依頼」「質問」「店の回答」「日本語の返事」「状態」の列を足します。最初の準備作業は、食材と食事制限の用語集を、店のメニューの各言語の表記に合わせて作ることです。
予約フォームからは、Make の Webhooks の Custom webhook で受けます。 このモジュールは固有の URL を作り、そこへデータが届くとシナリオがすぐに動きます。API キーの認証を足せて、キーは x-make-apikey のヘッダーで送ります。 データの構造を決めないと、届いたデータが検証されないまま後の手順に進むので、決めておきます。
メールは Gmail の Watch emails で受けます。 ラベルや送信元、件名、含む語で絞り込めます。予約客への返事は Create a draft email で下書きにし、送るのは人です。
翻訳は、DeepL API の翻訳の機能で行います。 元の言語の指定を省くと自動で判定し、応答に判定した言語(detected_source_language)が入ります。用語集を使うときは元の言語の指定が必要で、 1回の依頼に用語集を5つまで指定できます。context に渡した文は訳に影響しますが訳されず、その文字数は料金の計算に入らないとされています。Make には DeepL のアプリがあり、文を訳す Translate a Text と、任意の API を呼ぶ Make an API Call があります。用語集と context を使う依頼は、Make an API Call で組みます。
生成AIは、Make の Anthropic Claude のアプリの Create a Prompt で呼びます。 接続には Anthropic のコンソールで作った API キーを使います。返ってきた文は JSON のアプリの Parse JSON で項目に分け、台帳の列に当てます。振り分けにはルーターを使い、経路は順に処理され、どの条件にも合わないものはフォールバックの経路で受けます。
03どうやって実装するのか
処理の起点を決める
トリガーは3つで、シナリオは2本です。 届いた要望を訳して台帳に書くもの(①)と、人が書いた返事を訳して点検するもの(②)です。
| トリガー | きっかけ | すること |
|---|---|---|
| ①-1 フォーム | 予約フォームの送信(Custom webhook) | 訳す、欄に分ける、台帳に書く、店長に知らせる |
| ①-2 メール | ラベル「予約_外国語」の付いた新しいメール(Watch emails) | 同上 |
| ② 返事 | 10分ごと(台帳の状態が「返事あり」の行を探す) | 返事を訳す、訳し戻す、点検する、下書きにする |
①-1は、要望の欄が空でない送信だけを受けます。 要望の欄が空の予約は訳すものが無いので、シナリオの最初のフィルタで落とします。
①-2は、専用のラベルが付いたメールだけを見ます。 予約の確認メールへの返信(件名に予約番号が入るもの)に Gmail のフィルタでラベルを付け、取引先からのメールや広告には付けません。
②を10分ごとにしているのは、人が書き終えたことを知る方法が台帳の状態の列しかないからです。 状態を「返事あり」に変えるのは、書いた予約係自身です。書きかけのまま訳されないよう、状態を変えるまでは訳しません。 台帳の変更をきっかけにする Watch Changes は、画面での変更だけで動き、新しく足された行は見ないとされているので使いません。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| フォームの送信 | 予約番号、氏名、メールアドレス、店舗、日付、時刻、人数、要望の自由記入、フォームの表示言語 | Custom webhook |
| 予約客からのメール | 件名(予約番号を含む)、送信元、本文、受信日時 | 予約用のアドレス |
| 用語集 | 食材と食事制限の語の、言語ごとの決まった訳(えび、かに、そば、ごま、豚肉、みりん、だし、ハラール、ヴィーガン、グルテンなど) | DeepL の用語集 |
| 店の回答の決まり文句 | 厨房で応じられること・応じられないことの書き方の見本(日本語) | 自社で用意する一覧 |
質を決めるのは、下の2つです。 決まり文句が無いと、店長ごとに「対応可能です」「できる限り対応します」と書き方が変わり、訳した後に「できる」のか「努める」のかが読み取れなくなります。
予約台帳の人数やコースは、AIに渡しません。 渡すと、要望に書かれていない人数を台帳から補って欄に書くことがあります。
データの取得方法を決める
フォームの送信からは、要望の欄と、予約を特定する手がかりを取ります。 Custom webhook のデータの構造に、フォームの欄を1つずつ定義しておきます。
メールの本文からは、予約客が書いた部分だけを取ります。 返信には、こちらが送った確認の文が引用として付いています。引用の目印(「On ... wrote:」や「>」で始まる行)より前だけを取り、 目印が見つからないものは本文全体を取って「抽出できず」の印を付けます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 要望の文 | フォームの要望の欄、メールの本文(引用より前) | 翻訳と欄分けの入力 |
| 予約番号 | フォームの欄、メールの件名 | 台帳の行を探す |
| 氏名と来店日 | フォームの欄、メールの送信元と本文 | 予約番号が無いときの手がかり |
| 元の言語 | DeepL の detected_source_language | 返事を訳す先の言語 |
台帳の行は Search Rows で探し、見つかった行を Update a Row で書き換えます。 探す順は、予約番号が先、氏名とメールアドレスと来店日が後です。予約番号で見つからず、手がかりで2行以上が当たったときは、どの行にも書きません。 予約係の一覧に「予約を特定できず」として載せます。
元の言語は、台帳の列に必ず残します。 ②で返事を訳す先の言語はこの列から取り、予約係が選び直せるようにしておきます。
AIへ渡す前に整形する
- 引用の削除 … メールでは、予約の確認メールの引用と署名を落とします
- 予約番号の取り出し … フォームの欄か、メールの件名から、自社の予約番号の形で取ります
- 個人情報の確認 … クレジットカードの番号らしい数字の並びがあれば、翻訳に送る前に伏せ字にします
- 重複の検知 … 同じ予約番号・同じ本文の送信が直近にあれば、二度目は訳しません
- 日本語かどうかの確認 … 訳した結果、元の言語が日本語と判定されたものは、訳文を使わずに原文を台帳に書きます
- 返事の側の確認 … ②では、返事の欄が空でないこと、店の回答の欄が埋まっていること、書いた人の欄が埋まっていることを確かめます
1番目を軽く見ないでください。 引用が残ったまま欄に分けると、こちらが送った確認の文の「えびの天ぷら」まで、予約客の要望として読まれます。
6番目で店の回答の欄を見るのは、店長が決める前に返事を送らないためです。 「確認して改めてご連絡します」とだけ返すときも、店の回答の欄に「確認中」と書きます。
AIに処理させる
させるのは2つです。 ①で、要望の原文と訳文を読み、台帳の欄に分けること。②で、日本語の返事と訳し戻した文を比べ、ずれを書き出すことです。翻訳そのものは DeepL に任せ、生成AIには訳させません。
①の欄分け
| 欄 | 書き出すもの | 書き方 |
|---|---|---|
allergens | アレルギーの食材と、それを食べる予定の人数 | 食材ごとに1つ。原文の語と日本語の語の両方 |
severity | 程度の表現(微量でも反応する、エピペンを持っている、加熱すれば大丈夫) | 原文の表現をそのまま写し、日本語を添える |
diet_restrictions | 宗教上・信条上の食事制限(豚肉を使わない、アルコールを使わない、牛肉を食べない、肉と魚を食べない) | 予約客が書いた範囲だけ。「ハラール」と書かれていなければハラールと書かない |
party_change | 人数の変更の依頼(変更前と変更後、子どもの人数) | 数字は原文から写す |
time_change | 時刻・日付の変更の依頼 | 原文から写す |
questions | 予約客が尋ねていること | 日本語で1行ずつ |
diet_restrictions の書き方の決まりが、この欄分けでいちばん大事なところです。 「豚肉が食べられません」と書いた予約客と、「ハラールの料理を希望します」と書いた予約客では、店が確かめることが違います。 前者は豚肉を使わない料理で足りるかもしれませんが、後者は調味料や調理器具、店としての認証の有無まで関わります。予約客の言葉を広げも狭めもしないで欄に置きます。
allergens に原文の語を残すのは、訳語が1つに決まらない食材があるためです。 英語の「nuts」は、落花生を含めていることもあります。
②の点検
| 見るもの | 例 |
|---|---|
| 否定 | 「除けません」が「除けます」になっていないか。「使っていません」と「使っているかもしれません」 |
| 程度の語 | 「完全には」「できる限り」「同じ油で」が落ちていないか |
| 食材の語 | 用語集の語が決まった訳になっているか |
| 日付・時刻 | 来店日と時刻、午前と午後 |
| 人数と金額 | 「8名」が「8席」に、「お子様2名」が「2名」になっていないか |
| 増えた内容 | 日本語の返事に無い約束・条件が増えていないか |
| させないこと | 理由 |
|---|---|
| 応じられるかを決める・書く | 厨房と店長が決める。AIが書いた「対応できます」は誰も確かめていない |
| 返事の中身を書く・足す | 返事は予約係が日本語で書く |
| 訳文を直す | 直すのは人。直した文は点検の外に出る |
| 台帳の人数・時刻を書き換える | 変更の依頼の欄に書くだけ。受けると決めた人が直す |
| 食材から料理を推し量る | 「えびが食べられない」から「天ぷらのコースは不可」と書かない |
| 言葉の自然さの評価 | 点検は否定・程度・数・食材の語に絞る。広げると危ない指摘が埋もれる |
指示内容を固定する
①の欄分けの指示
あなたは飲食店の予約係で、予約客から届いた要望を
予約台帳の欄に分ける担当です。原文と日本語訳の両方を見て判断してください。
【要望の原文】{source_text}
【元の言語】{source_lang}
【日本語訳】{text_ja}
【欄】
allergens / severity / diet_restrictions / party_change / time_change / questions
【厳守事項】
- 書かれていないことを書かないでください。該当が無い欄は空の配列にしてください。
- allergens には食材ごとに、原文の語(source_term)と日本語の語(term_ja)を
両方入れてください。食材の範囲を広げたり狭めたりしないでください。
- 程度の表現(微量、エピペン、加熱、においなど)は、原文の表現をそのまま
severity に写してください。程度を推し量らないでください。
- 宗教上・信条上の食事制限は、予約客が書いた語のまま diet_restrictions に
入れてください。「ハラール」「ヴィーガン」「コーシャ」などの語は、
原文にその語があるときだけ使ってください。
- 人数・日付・時刻の変更は、原文の数字をそのまま写してください。
予約台帳の内容から補わないでください。
- 応じられるかどうか、返事の文、料理の提案は書かないでください。
- 原文と日本語訳で食い違いがありそうな箇所は uncertain に入れてください。
- evidence には、各欄の根拠にした原文の文をそのまま写してください。
②の点検の指示
あなたは飲食店で、予約係が日本語で書いた返事と、
その訳文を日本語へ訳し戻した文を比べる担当です。
【予約係の返事(日本語)】{reply_ja}
【訳文を日本語へ訳し戻した文】{back_translation_ja}
【店の回答】{store_answer_ja}
【用語集の語】{glossary_terms}
【点検すること】
1. 否定(できない、除けない、使っていない、保証できない)が逆になっていないか
2. 程度の語(完全には、できる限り、同じ油で、同じ調理場で)が落ちていないか
3. 用語集の食材と食事制限の語が、決まった語として戻っているか
4. 日付、時刻、人数、子どもの人数、金額が一致しているか
5. 返事に無い約束・条件が増えていないか
6. 返事の内容が、店の回答と食い違っていないか
【厳守事項】
- 言い回しや自然さの違いは指摘しないでください。
- 一致していない箇所は、両方の文をそのまま写してください。
- 訳文の直し方を提案しないでください。
- 判断できない箇所は uncertain に入れてください。
①で「原文にその語があるときだけ使う」と書くのは、欄分けが言葉を広げるのを止めるためです。 何も言わなければ、「豚肉とお酒が駄目です」をハラールとまとめます。まとめた語は正しそうに見えるので、店長はそのまま厨房に伝えます。
②の6番目で店の回答と比べるのは、予約係が書き写すときのずれを拾うためです。 店長が「同じ油は使う」と書いたのに返事が「えびは使いません」なら、訳す前の日本語の段階で約束が変わっています。
出力形式を固定する
①の出力
{
"request_id": "",
"reservation_no": "",
"source_lang": "",
"allergens": [
{ "source_term": "", "term_ja": "", "persons": "" }
],
"severity": [ { "source": "", "ja": "" } ],
"diet_restrictions": [ { "source": "", "ja": "" } ],
"party_change": { "from": "", "to": "", "children": "" },
"time_change": { "date": "", "time": "" },
"questions": [],
"uncertain": [],
"evidence": []
}
②の出力
{
"request_id": "",
"target_lang": "",
"mismatches": [
{ "type": "negation | degree | food_term | date | count | added | store_answer",
"reply_ja": "", "back_ja": "" }
],
"uncertain": [],
"check": "clear | needs_review"
}
1つ目の理由は、欄ごとに台帳の列へ当てられることです。 allergens は「アレルギー」の列に「えび(shrimp)/2名」のように、diet_restrictions は「食事制限」の列に書きます。厨房が見るのは長い訳文ではなく、この2つの列です。
2つ目は、通知の経路を規則で決められることです。 allergens、diet_restrictions、party_change のどれかが空でなければ店長へ知らせ、どれも空なら予約係の一覧に載せるだけにします。ルーターの経路の順もこの順にし、 どの条件にも合わないものはフォールバックで受けます。
3つ目は、mismatches が空かどうかで check を決められることです。 1つでもあれば needs_review にし、下書きを作りません。uncertain に何か入っているときも needs_review です。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 予約フォーム | Webhooks の Custom webhook | 送信の内容を受ける |
| 予約用のアドレス | Gmail の Watch emails | 予約客からのメールを受ける |
| DeepL API | Make の DeepL のアプリ(Make an API Call) | 日本語への翻訳、返事の翻訳、訳し戻し |
| Claude API | Make の Anthropic Claude のアプリ(Create a Prompt) | 欄分けと点検 |
| 予約台帳 | Google Sheets の Search Rows/Update a Row | 要望の欄、店の回答、返事、訳文、点検、状態 |
| 店長への通知 | Gmail の Send an email(社内あて) | アレルギー・食事制限・人数の変更の知らせ |
| 予約客への返事 | Gmail の Create a draft email | 下書きまで。送るのは人 |
台帳の状態の列は、「新着」「店に確認中」「返事あり」「送信待ち」「送信済み」「対応不要」の6つです。 ②が書き換えるのは「返事あり」から「送信待ち」だけで、「送信済み」に変えるのは、下書きを送った予約係です。
台帳の人数・時刻・コースの列には、この構成からは書き込みません。 書き込むのは足した要望の列だけです。
人が確認する
- 店長が通知を受けたら、アレルギーと食事制限の列を見る … 原文の語も見ます。「nuts」のように範囲が決まらない語は、予約客に確かめる質問を店の回答に書きます
- 店長が厨房と相談し、店の回答を書く … 決まり文句の書き方で、「除ける」「除けない」「同じ調理場で扱う」を分けて書きます
- 予約係が返事を日本語で書く … 店の回答をもとに書き、状態を「返事あり」にします
- 予約係が点検の結果を見る …
clearなら下書きを開いて送ります。needs_reviewなら、ずれの箇所を読み、日本語の返事を書き直して状態を戻します - 人数の変更は、席を確かめてから台帳の人数を直す … 受けられないときは、その旨を返事に書きます
4番目で、訳文を直接直さないでください。 下書きの訳文を手で直すと、点検を通っていない文が送られます。日本語の返事を直して、もう一度訳させます。
目標は、360件をならして1件3分です。 店長が厨房と相談する時間は、第4章と同じく入れていません。
例外に対処する
| 起きること | 対応 |
|---|---|
| 予約番号が無く、手がかりで2行以上が当たる | どの行にも書かず、「予約を特定できず」で予約係へ |
| 予約台帳に当たる行が無い | 予約の前の問い合わせとして、予約係の一覧に新しい行で載せる |
| 元の言語が日本語 | 訳さずに原文で欄分けし、台帳に書く。返事も訳さない |
| 1通に2つの言語が混ざる | 判定された言語で訳す。返事の言語は予約係が台帳で選び直せる |
| 用語集の無い言語 | 用語集なしで訳し、点検の「食材の語」は見ない。needs_review にして予約係が見る |
| 原文と訳文で食材の語が食い違う | uncertain に入れ、店長への通知に原文の語を添える |
| カードの番号らしい数字がある | 伏せ字にしてから訳す。元の番号はメールの側で人が見る |
| 翻訳の応答が無い | 台帳の状態を変えずに残し、次の実行で拾い直す |
| 来店の当日に届いたアレルギーの要望 | 通知に加え、店長に電話で知らせる。 返事を待たずに来店時に口頭で確かめる |
| 「返事あり」なのに店の回答の欄が空 | 訳さずに状態を「店に確認中」へ戻し、予約係へ知らせる |
上から2行目は、予約の前に「この料理は食べられるか」と尋ねてくる予約客で起きます。 捨てずに問い合わせとして載せ、予約が入ったときに予約の行と結び付けます。
記録を残す
- フォームの送信の内容と、予約客からのメールの本文(伏せ字にする前のものはメールの側にだけ残す)
- 取り出した要望の文、判定された言語、日本語の訳
- 欄分けの結果(
allergens、severity、diet_restrictions、party_change、uncertain、evidence) - 店の回答と、書いた店長
- 予約係が書いた日本語の返事と、書いた人
- 訳文、訳し戻し、点検の結果(
mismatches、check) needs_reviewから書き直した記録 … どのtypeのずれで、どう書き直したか- 送った予約係と送った日時
4つ目の「店の回答と書いた店長」は、来店の当日に何かが起きたときに、店が何を約束したかを確かめるためのものです。 返事の訳文だけでは、店長の判断どおりだったかが後から分かりません。
04実装レベルの3段階
半自動化で、1件10分が6分程度になります。 読むことと台帳への書き写しは自動になりますが、返事を訳して貼る作業が残ります。本格構成で3分になり、この段階が本記事の想定です。 差が大きいのは、返事を訳して確かめる作業が、外国語の得意な人にしかできなかったからです。 段階を飛ばさないでください。 半自動化を1か月回すと、引用を落とせないメールの形と、欄分けで迷う言い回しが先に分かります。そこを直してから返事の側を足すほうが、台帳が正しく埋まります。
05工数削減シミュレーション
導入後 360件 × 3分 ÷ 60 = 18 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 訪日客の予約が多く、自社サイトの予約フォームの要望欄と予約用のメールアドレスに、英語・中国語・韓国語などで食物アレルギーや宗教上の食事制限、人数の変更が毎日届く飲食店。返事を書けるのが外国語の得意な一部のスタッフに限られ、要望が予約台帳に書き写されないまま当日を迎えることがある場合。予約台帳を Google スプレッドシートで持ち、予約用のアドレスが Gmail である場合。
- 訪日客の予約が少なく、外国語の要望が月に数十件の場合。予約をグルメサイトや予約の代行サービスだけで受けていて、自社のフォームやメールに要望が届かない場合。予約台帳を紙や予約システムの中だけで持ち、外から書き込めない場合。なお、アレルギーや宗教上の食事制限に応じられるかの判断、人数の変更を受けられるかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の外国語の要望から30件を選ぶ(アレルギー、宗教上の食事制限、人数の変更を必ず入れる)
- その30件に当時どう返事をしたかと、台帳の備考に何を書いたかを写す
- 要望を手元のAIサービスの画面に貼り、日本語に訳させ、アレルギー・程度・食事制限・人数の変更・質問の欄に分けさせる。「原文に無い語を使わないでください」と指示する
- 当時の返事を日本語で書き直し、相手の言語に訳させ、さらに日本語に訳し戻させる。「日本語の返事と訳し戻しで、否定・程度の語・食材の語・日付・人数が一致しているかだけを見てください」と指示する
- 欄分けを当時の台帳の備考と、点検の結果を当時の返事と突き合わせる
30件は必ずやってください。 ワークフローを組む前に、「欄分けが予約客の言葉を広げないか」「訳し戻しで否定のずれが見つかるか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の備考に無かった食材や程度が欄に出た | ワークフローの連携に進む |
| 「豚肉が駄目」を「ハラール」とまとめた | 指示の書き方で直る。構成は有効 |
| 訳し戻しで否定のずれが見つからない言語がある | その言語は点検に頼らず、決まり文句の訳を店で用意する |
1行目が出ることは珍しくありません。 当時の備考に「えびアレルギー」とだけあり、原文には「微量でも反応する」と書かれていた、ということがあります。それが、来店の当日に厨房が慌てた理由だったかもしれません。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 訳文で「除けません」が「除けます」になる | 訳し戻しと比べ、否定と程度の語に絞って点検する |
| 「豚肉が駄目」を「ハラール」とまとめる | 原文にその語があるときだけ使うと指示する |
| 引用された確認の文の食材まで要望になる | 前処理で引用を落とす |
| 人数の変更で台帳の人数が書き換わる | 変更の依頼の列に書くだけにする。人数の列は人が直す |
| 店長が決める前に返事が出る | 店の回答の欄が空なら訳さない |
| 訳文を手で直して送る | 直すのは日本語の返事。もう一度訳させる |
| 用語集を使うと翻訳が失敗する | 元の言語の指定が必要。 判定した言語を入れて依頼する |
| 「nuts」の範囲が分からない | 原文の語を台帳に残し、予約客に確かめる |
上の2行が、この構成の失敗のほとんどです。 1行目は返事の側、2行目は要望の側の問題ですが、どちらも「店と予約客の間で、食べ物についての理解がずれる」という同じ結果になります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 予約客の氏名、メールアドレス、来店日時、人数、要望の本文(食物アレルギー、体調、宗教上・信条上の食事制限、子どもの同席に触れる)です。
- 外部へ渡す範囲を、訳と欄分けに必要なものに限る … 渡すのは要望の文と返事だけで、予約台帳の内容や予約客の連絡先は渡しません。 カードの番号らしい数字は伏せ字にします
- 応じられるかをAIに決めさせない … アレルギーと食事制限に応じられるかは、厨房と店長が決めます。この構成が出すのは、何が求められているかの整理だけです
- アレルギーの返事は、訳の点検だけで済ませない … 程度の表現や範囲の決まらない語は、必要なら予約客に確かめ、来店の当日にも店で口頭で確かめます。 機械の訳だけで食材の判断をしないでください
- 宗教上の食事制限の情報を広げない … 食事制限の列は、その予約の料理のために使います。予約客の信条を推し量る列を作らず、他の用途に使いません
- 台帳の要望の列を残しすぎない … 来店日を過ぎた分は一定の期間で消し、次の来店のために残すかは予約客に尋ねます
誤りが起きた場合のリスクは、店がしていない約束を予約客が受け取ることと、要望が厨房に届かないことの2つです。 前者は訳し戻しの点検で、後者は台帳の欄分けと店長への通知で防ぎます。どちらも、送る操作と応じるかの判断を人に残してあることが最後の守りです。 送信まで自動にすると、点検の見落としがそのまま予約客に届きます。
10まず何から始めるか
1週目:要望の届き方を集める
予約フォームの送信と、予約の確認メールへの返信を、言語ごとに5件ずつ集めます。引用の目印になる文字列と、予約番号が件名にどう入るかを確かめます。 フォームの側で Webhook へ送れるかも、サイトの管理者に確かめます。
2週目:30件で試す
外国語の要望30件で、訳と欄分けと、返事の訳し戻しの点検を手元のAIサービスで試します。予約客の言葉を広げていないかと、否定のずれが見つかるかを最優先で見ます。
3週目:用語集と決まり文句を作る
食材と食事制限の用語集を、メニューの各言語の表記に合わせて作ります。 あわせて、厨房で応じられること・応じられないことの書き方を、店長と厨房で決めます。
4週目:受信から台帳までをつなぐ
Make でフォームの送信とメールを受けて訳し、欄に分けて台帳に書き、店長に知らせるところまで作ります。この時点では返事の訳を作らず、欄分けが合っているかだけを見ます。
2か月目: 返事の訳と訳し戻し、点検と下書きを足し、needs_review の数を毎週数えます。3か月目以降: 書き直しの多いずれの種類から返事の書き方の決まりを作り、1件10分が何分になったかを実測します。外国語の得意な予約係がいない日にも要望がたまらず、来店の当日に台帳の欄が埋まっている状態になった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
元の言語の指定を省くと自動で判定し、応答に detected_source_language が入ること。用語集を使うときは元の言語の指定が必要で、用語集を5つまで指定できること。context が訳に影響するが訳されず、その文字数が料金の計算に入らないこと。依頼の大きさの上限が128KiBであること | DeepL API: Translate text | 2026-10-09 |
| Make の DeepL のアプリに Translate a Text と Make an API Call があり、接続に DeepL API のアカウントと API キーが要ること | Make: DeepL | 2026-10-09 |
Custom webhook が固有の URL を作り、外のサービスからのデータでシナリオをすぐに動かすこと。API キーの認証を足せて、キーを x-make-apikey のヘッダーで送ること。データの構造を決めないと、届いたデータが検証されないこと | Make: Webhooks | 2026-10-09 |
| Watch emails がラベル・送信元・件名・含む語で絞り込め、1回の実行の上限を500以下で設定すること。Send an email、Reply to an email、Create a draft email のモジュールがあること | Make: Gmail modules | 2026-10-09 |
| Google Sheets のモジュールに Add a Row、Search Rows、Update a Row があること。Watch Changes がユーザーによる画面での変更だけで動き、新しく足された行を見ないこと | Make: Google Sheets modules | 2026-10-09 |
| Anthropic Claude のアプリに Create a Prompt があり、接続に Anthropic のコンソールで作った API キーを使うこと | Make: Anthropic Claude | 2026-10-09 |
| JSON のアプリに Parse JSON と Create JSON があり、データの構造で項目を後の手順に当てられること | Make: JSON | 2026-10-09 |
| ルーターの経路が順に処理され、どの条件にも合わないデータをフォールバックの経路で処理できること | Make Help: Router | 2026-10-09 |
アレルギーや宗教上の食事制限への応じ方は、厨房と店の責任者で決め、必要なら専門家に確かめてください。 本記事は上の公開情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1213)についてのご相談はこちらから。
