フェリー会社が運航の変更・ダイヤ改正・乗船の案内を英語・中国語・韓国語に訳し、港名と便名の訳語と時刻の表記をそろえる
運航の変更・ダイヤ改正・乗船の案内のお知らせを、Azure OpenAI で英語・中国語・韓国語に訳します。港名・船名・便名は社内の用語集の訳語に置き換え、日付と時刻は言語ごとに決めた書式にそろえ、原文と訳文の数字の一致を機械で確かめます。
- 生成AI
- Azure OpenAI Service/Claude
- 連携・自動化
- Power Automate
- 対象業界
- その他/物流/自治体
- 対象部門
- カスタマーサポート
- 対象業務
- 内容確認・チェック/書類作成
- 主な課題
- 属人化している/書類作成に時間がかかる/確認ミスが多い
- AIで行う処理
- 翻訳
- 主な効果
- 品質標準化/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 運航の管理の担当から、日本語のお知らせの内容を受け取る
- 日本語のお知らせをWebサイトと乗り場の掲示に出す
- 英語ができる社員が、機械翻訳にかけた英文を直す
- 中国語と韓国語は機械翻訳にかけ、港名と船名だけを訳語のスプレッドシートで直す
- 日付と時刻の書き方を、英語・中国語・韓国語それぞれで直す
- 担当がもう一度読み、Webサイトの外国語のページと掲示に出す
- 人日本語のお知らせを書き、お知らせの種類(運航の変更/ダイヤ改正/乗船の案内)を選んで「訳す」を押す
- 自動用語集で港名・ターミナル名・船名・便名を探し、目印に置き換える
- 自動日付・時刻・便の番号・金額を正規表現で探し、目印に置き換える
- 自動定型文の一覧に当たる文は、人が訳した定型の訳文をそのまま使う
- 自動残りの文章を Azure OpenAI が3言語に訳す。目印はそのまま残させる
- 自動目印を、用語集の訳語と言語ごとの書式で戻す
- 自動原文と訳文の数字と目印の数を照合し、ずれがあれば赤く表示する
- 人担当が訳文を見て、赤い箇所と用語集に無い語を確かめ、Webサイトと掲示に出す
各工程の詳しい説明を読む
- 運航の管理の担当から、日本語のお知らせの内容を受け取る
- 日本語のお知らせをWebサイトと乗り場の掲示に出す
- 英語ができる社員が、機械翻訳にかけた英文を直す
- 中国語と韓国語は機械翻訳にかけ、港名と船名だけを訳語のスプレッドシートで直す
- 日付と時刻の書き方を、英語・中国語・韓国語それぞれで直す
- 担当がもう一度読み、Webサイトの外国語のページと掲示に出す
(a)訳語が揺れる。 訳語のスプレッドシートは担当ごとに版が違い、機械翻訳がその都度別の訳し方をします。 同じ船の名前がお知らせごとに違うつづりで出ています。
(b)時刻と日付の書き方が揺れる。 英語で「14:30」と「2:30 p.m.」が混ざり、日付は「11/3」が11月3日か3月11日か分からない書き方になることがあります。機械翻訳は原文の「11/3」をそのまま残します。
(c)数字の書き間違いが後で見つかる。 ダイヤ改正の表を3言語で作るとき、1行ずれて写した時刻が掲示されます。日本語と見比べて確かめる時間がない日に起きます。
(d)英語ができる人に集中する。 英語の直しは1名に頼っており、その人が休みの日は、外国語のお知らせが出ないか、機械翻訳のまま出ます。
(e)運航の状態の語が揺れる。 「欠航」「運休」「条件付き運航」は、機械翻訳がその都度別の英語にします。「条件付き運航」が「運航します」としか読めない英文になり、引き返す可能性が伝わらなかったことがあります。
- 【人】 日本語のお知らせを書き、お知らせの種類(運航の変更/ダイヤ改正/乗船の案内)を選んで「訳す」を押す
- 【自動】 用語集で港名・ターミナル名・船名・便名を探し、目印に置き換える
- 【自動】 日付・時刻・便の番号・金額を正規表現で探し、目印に置き換える
- 【自動】 定型文の一覧に当たる文は、人が訳した定型の訳文をそのまま使う
- 【自動】 残りの文章を Azure OpenAI が3言語に訳す。目印はそのまま残させる
- 【自動】 目印を、用語集の訳語と言語ごとの書式で戻す
- 【自動】 原文と訳文の数字と目印の数を照合し、ずれがあれば赤く表示する
- 【人】 担当が訳文を見て、赤い箇所と用語集に無い語を確かめ、Webサイトと掲示に出す
8番目は省けません。 運航の変更は旅客の安全と予定に直結し、欠航なのに「遅延」と訳された掲示は、旅客を港で待たせます。 担当は全文を訳し直すのではなく、赤い箇所と、用語集に無い語として残った箇所を中心に見ます。
4番目の定型文は、急ぎのお知らせのためです。 「本日の◯便は、天候不良のため欠航いたします」のような文は、人が一度訳して確かめた訳文を使い回します。 生成AIに毎回訳させると、言い回しが毎回少しずつ変わります。定型文で組めるお知らせは生成AIを待たずに出せるので、欠航が続く日ほど、この経路が効きます。 定型文に無い事情(代替の便の案内や、港での待ち方の説明)だけが、生成AIに渡ります。
02今回想定するシステム構成
日本語のお知らせ(担当が入力。種類を選ぶ) │【トリガー】「訳す」のボタン ▼ Azure Functions ├── 用語集で港名・ターミナル名・船名・便名 → 目印 ├── 正規表現で日付・時刻・便の番号・金額 → 目印 ├── 定型文の一覧に当たる文 → 人が訳した定型の訳文 ▼ Azure OpenAI(Chat Completions、構造化出力) │ 目印を残したまま、英語・中国語(簡体字・繁体字)・韓国語に訳す ▼ Azure Functions ├── 目印 → 用語集の訳語・言語ごとの書式 ├── 原文と訳文の数字・目印の数を照合 ▼ 【担当が確認】 → Webサイトの外国語のページ・乗り場の掲示
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 生成AI | Azure OpenAI(Microsoft Foundry) | Claude API |
| 連携 | Azure Functions(目印への置き換え、定型文の照合、目印の戻し、数字の照合) | Power Automate |
| 用語集 | SharePoint のリスト(港名・船名・便名・定型文と3言語の訳語) | 社内のスプレッドシート |
| 掲載 | Webサイトの管理画面、乗り場の掲示 | 運航情報のメール配信 |
Webサイトと掲示には、この構成から直接出しません。 訳文は担当の確認の画面に出るだけで、掲載は担当がいつもの管理画面で行います。 運航の変更は内容そのものが後から変わることが多く、古い訳文が自動で出続ける経路を作りません。
生成AIには Azure OpenAI(Microsoft Foundry)を使い、構造化出力で受け取ります。 公式のページでは、Chat Completions API では response_format に JSON スキーマを定義し、すべてのフィールドを必須にして、オブジェクトには additionalProperties: false を設定するとされています。3言語の訳文と、訳せなかった語の一覧を、決まった欄で受け取ります。
多言語のお知らせは、法律上の努力義務にもつながります。 外国人観光旅客の来訪の促進等による国際観光の振興に関する法律は、海上運送法による一般旅客定期航路事業を営む者を「公共交通事業者等」に含め、第7条で、観光庁長官が定める基準に従い、旅客施設と船舶を含む車両等について外国語等による情報の提供などの措置を講ずるよう努めなければならないとしています。どの言語で何を出すかの基準は、観光庁の定める基準と自社の方針で決めてください。
03どうやって実装するのか
処理の起点を決める
担当が日本語のお知らせを書き、確認の画面で「訳す」を押したときに動かします。 日本語のお知らせをWebサイトに出した瞬間に自動で動かす形にはしません。日本語のお知らせは出した後に直すことが多く、直す前の文で訳文ができてしまうからです。
運航の変更のお知らせは、日本語を出した直後に押す運用にします。 天候による欠航の判断は出航の数時間前に決まることが多く、外国語のお知らせが遅れると、外国人の旅客だけが港に来てしまいます。 押してから訳文が出るまでを1分以内に収め、担当がその場で確かめて出せるようにします。
ダイヤ改正のお知らせは、掲載の日より前に押します。 新しい時刻表が決まった時点で日本語の案を作って訳し、中国語・韓国語の分かる人に読んでもらう時間を、掲載の前に確保します。 急ぎのお知らせと同じ流れで作り、確認の時間の取り方だけを変えます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 日本語のお知らせ | 見出しと本文。時刻表の表を含むこともある | 担当が確認の画面に入力 |
| お知らせの種類 | 運航の変更/ダイヤ改正/乗船の案内 | 担当が選ぶ |
| 用語集 | 港名・ターミナル名・のりば・船名・便名・航路名と、英語・中国語(簡体字・繁体字)・韓国語の訳語 | SharePoint のリスト |
| 定型文の一覧 | よく使う文と、人が訳して確かめた3言語の訳文 | SharePoint のリスト |
| 書式の規則 | 言語ごとの日付・時刻・曜日・金額の書き方 | 自社で決めた一覧 |
質を決めるのは、用語集です。 港名を英語で「Port」とするか「Ferry Terminal」とするか、船名にローマ字の長音を付けるかは、一度決めて全部のお知らせで同じにすることに意味があります。 決め方の正解を探すより、乗り場の案内板と同じつづりにそろえることを優先します。
中国語は簡体字と繁体字で列を分けます。 港名や船名の漢字は、日本語の字体をそのまま使えないことがあり、簡体字と繁体字でも字体が違います。1つの列に混ぜると、繁体字のお知らせに簡体字の港名が入ります。 訳語は、中国語の分かる人に一度確かめてもらってから用語集に入れます。
用語集の1行には、日本語の表記ゆれも持たせます。 「新門司」「新門司港」「新門司フェリーターミナル」を同じ行に入れ、どれが書かれても同じ目印に置き換わるようにします。
書式の規則の例:
| 項目 | 英語 | 中国語(簡体字・繁体字) | 韓国語 |
|---|---|---|---|
| 時刻 | 24時間制(14:30) | 24時間制(14:30) | 24時間制(14:30) |
| 日付 | 曜日・日・月名・年(Tue, 3 Nov 2026) | 年月日と曜日(2026年11月3日(周二)など) | 年月日と曜日(2026년 11월 3일(화)) |
| 便の番号 | 原文のまま(No. 2) | 原文のまま | 原文のまま |
時刻を3言語とも24時間制にそろえるのは、乗り場の時刻表と同じ表記にするためです。 午前・午後の書き間違いが、この規則だけで起きなくなります。
データの取得方法を決める
用語集と定型文の一覧は、Azure Functions が起動のたびに SharePoint のリストから読みます。 件数は数百行なので、毎回読み直しても時間はかかりません。キャッシュを長く持つと、用語集を直したのに古い訳語で戻ることになります。
日付・時刻・便の番号・金額は、正規表現で探します。
| 探すもの | 例 | 置き換える目印 |
|---|---|---|
| 日付 | 11月3日(火)、11/3 | {{DATE_01}} |
| 時刻 | 14時30分、14:30、午後2時30分 | {{TIME_01}} |
| 便の番号 | 2便、第2便 | {{TRIP_01}} |
| 金額 | 1,200円 | {{PRICE_01}} |
「11/3」の解釈は、日本語の原文で一度だけ行います。 置き換えのときに年月日の値として持ち、戻すときに言語ごとの書式で書き出します。生成AIに日付の形を任せないので、月と日の取り違えが起きません。
「午後2時30分」のような書き方も、置き換えの段で14:30の値に直します。 日本語の原文に12時間制と24時間制が混ざっていても、対応表には24時間制の値だけを持たせます。 戻すときに言語ごとの書式で書き出すので、訳文の側で揺れることはありません。「正午」「深夜0時」のような語も、値として持てるよう正規表現の一覧に入れておきます。
時刻表の表は、表のまま扱います。 行と列を分けて、見出しの行だけを訳し、数字のセルは訳さずにそのまま使います。表の数字のセルを生成AIに渡さないことが、第3章の(c)への対策です。
AIへ渡す前に整形する
- 用語集による置き換え … 長い表記から順に照合します(「新門司フェリーターミナル」を「新門司」より先に)
- 数字の置き換え … 日付・時刻・便の番号・金額を目印にし、元の値を対応表に残します
- 定型文の照合 … 文単位で定型文の一覧と照合し、当たった文は定型の訳文に置き換えて、生成AIに渡さないようにします
- 表の分離 … 時刻表の表を本文から分け、見出しの行だけを訳す対象にします
- 目印の数の記録 … 置き換えた目印の種類と数を記録し、訳した後の照合に使います
- 用語集に無い固有名詞の印 … 「◯◯港」「◯◯丸」のように港や船らしいのに用語集に無い語に印を付け、担当の画面で知らせます
1番目で長い表記から照合するのは、短い表記が先に当たると目印の後ろに文字が残るからです。 「新門司」が先に当たると「{{PORT_01}}フェリーターミナル」となり、戻したときに「Shin-Moji Port Ferry Terminal」のような重複が生まれます。
- 目印の番号の振り方 … 同じ港が文中に2回出てくれば、同じ目印を2回使います。別の番号を振ると、戻したときに同じ港が違う訳語になる余地が生まれます
6番目は、用語集を育てる仕組みです。 新しい寄港地や代替船の名前は、最初は用語集にありません。印が付いた語を担当が用語集に足せば、次のお知らせからは同じ訳語で戻ります。
AIに処理させる
させるのは、目印を残したまま、日本語のお知らせの文章を3言語に訳すことだけです。
| させること | 中身 | 判断できないときの扱い |
|---|---|---|
| 文章を訳す | 英語・中国語(簡体字・繁体字)・韓国語 | 意味が二通りに取れる文は unclear に挙げる |
| 目印を残す | {{PORT_01}} などを、そのままの形で訳文に入れる | 目印を文のどこに置くかは言語の語順に合わせる |
| 敬語の調子をそろえる | お知らせとして丁寧で短い文にする | 定型文の訳文の調子に合わせる |
| 訳せなかった語を挙げる | 用語集に無い固有名詞らしい語 | 推測で訳さず、原文のまま残して挙げる |
| させないこと | 理由 |
|---|---|
| 目印を訳す・消す・増やすこと | 戻すときに数がずれ、照合で止まる |
| 日付・時刻・数字を書くこと | 目印で渡しているので、訳文に数字が出るのは誤り |
| 港名や船名を訳すこと | 用語集の訳語だけを使う |
| 内容を足すこと(「ご了承ください」の追加など) | 原文に無いお願いや説明を足さない |
| 「欠航」と「運休」「遅延」を言い換えること | 運航の状態の語は、決まった訳語の一覧で訳す |
文章ごと訳させて後から名前を直す方法を取らないのは、直す場所を探す作業が残るからです。 生成AIが港名を「Port of ◯◯」「◯◯ Harbor」と訳した後で用語集の訳語に直すには、訳文の中から港名を探し当てる必要があります。目印にして渡せば、探す作業そのものがなくなります。
最後の行は、運航のお知らせでいちばん大事な約束です。 「欠航(その便は出ない)」「遅延(遅れて出る)」「条件付き運航(引き返す・寄港地を変えることがある)」「抜港(その港に寄らない)」は、旅客の行動を変える語です。 これらは用語集に「運航の状態の語」として3言語の訳語を持たせ、目印に置き換えて渡します。
指示内容を固定する
あなたはフェリー会社のお知らせを訳す担当です。
日本語のお知らせを、英語・中国語(簡体字)・中国語(繁体字)・韓国語に訳してください。
【目印の扱い】
- {{ と }} で囲まれた目印({{PORT_01}}、{{TIME_02}}、{{STATUS_01}} など)は、
そのままの形で訳文に入れてください。訳さない、消さない、増やさないでください。
- 目印の位置は、訳す言語の自然な語順に合わせて動かしてかまいません。
【厳守事項】
- 日付、時刻、数字を訳文に書かないでください。すべて目印で渡しています。
- 港、ターミナル、船、便、航路の名前を訳さないでください。目印で渡しています。
- 原文に無い説明やお願い(「ご了承ください」など)を足さないでください。
- 港や船の名前らしいのに目印になっていない語は、訳さずに原文のまま残し、
untranslated_terms に挙げてください。
- 意味が二通りに取れる文は、訳したうえで unclear に原文を挙げてください。
- 文体は、乗り場の掲示として丁寧で短い文にしてください。
【お知らせの種類】{notice_type}
【お知らせ】{source_with_tokens}
「目印の位置を動かしてよい」と書いているのは、語順が言語ごとに違うからです。 日本語の「{{PORT_01}}発{{TIME_01}}の便」は、英語では時刻が先、港が後になることがあります。位置を固定させると不自然な訳文になるので、動かすことは許し、数と形だけを守らせます。
指示の順番は、変わらない部分を先に置きます。 公式のページでは、プロンプトのキャッシュは1,024トークン以上で、最初の1,024トークンが同一であることが条件とされ、最初の1,024トークンのうち1文字でも違うとキャッシュに当たらないとされています。キャッシュは対応するモデルで既定で有効とされています。指示と定型の例文を先頭に固定し、お知らせの本文を最後に置くと、件数の多い日に応答が速くなります。 構造化出力のスキーマはシステムのメッセージの前に付く形でキャッシュの対象になるとも書かれているので、スキーマも変えずに使い回します。
出力形式を固定する
次の形のJSONで受け取ります。
{
"translations": [
{ "lang": "en", "title": "", "body": "" },
{ "lang": "zh-Hans", "title": "", "body": "" },
{ "lang": "zh-Hant", "title": "", "body": "" },
{ "lang": "ko", "title": "", "body": "" }
],
"untranslated_terms": [],
"unclear": []
}
1つ目の理由は、言語ごとの訳文を決まった欄で受け取れることです。 lang は列挙型で4つに限り、Webサイトの言語ごとの欄にそのまま対応させます。
2つ目は、untranslated_terms で用語集の不足が分かることです。 前処理の印と合わせて、担当の画面に「用語集に足す候補」として並べます。
3つ目は、照合をしやすくすることです。 Azure Functions は body から目印を数え、前処理で記録した目印の種類と数と比べます。1つでも違えば、その言語の訳文を赤く表示し、目印を戻す前に担当に見せます。 さらに、目印を戻した後の訳文に、目印以外の数字が出ていないかも確かめます。
スキーマの制約は公式のページに合わせます。 配列の minItems・maxItems はサポートされないキーワードとされているので、4言語がそろっているかは Azure Functions で確かめます。 入れ子は5段まで、オブジェクトのプロパティは最大100個とされ、この形なら収まります。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 確認の画面 | 社内のWeb画面から Azure Functions を呼ぶ | 日本語のお知らせを送り、訳文と赤い箇所を受け取る |
| SharePoint のリスト | 読み取り | 用語集、定型文、運航の状態の語 |
| Azure OpenAI | Chat Completions API(構造化出力) | 3言語への訳 |
| Webサイトの管理画面 | 人が貼る | 確かめた訳文だけ |
| 乗り場の掲示 | 人が印刷する | 同上 |
運航情報をメールで配信している場合も、配信の文は確かめた訳文から作ります。 配信の仕組みに日本語と外国語の欄が分かれていれば、言語ごとの欄に貼るだけです。配信の登録者が選んだ言語で届くかは、配信の仕組みの設定で確かめてください。
用語集への書き込みは、担当が SharePoint のリストで行います。 確認の画面から「用語集に足す」を押すと、リストの入力画面が開くだけにします。訳語を決めるのは人で、仕組みが勝手に足すことはしません。
人が確認する
担当が見る順番を決めておきます。
- 赤い箇所を見る … 目印の数のずれ、目印以外の数字。ここが0件になるまで出さない
- 運航の状態の語を見る … 欠航・遅延・条件付き運航・抜港が、原文と同じ訳語になっているか
untranslated_termsと印の付いた語を見る … 用語集に足すか、原文のまま出すかを決めるunclearを見る … 日本語の原文を直したほうが早いことが多い- 英語の文を読む … 英語のできる担当がいれば全文、いなければ見出しと最初の文
急ぎのお知らせでは、確認にかける時間の目安を決めておきます。 欠航のお知らせなら、赤い箇所が0件で運航の状態の語が合っていれば、日本語を出してから10分以内に外国語も出すことを目標にします。待たせるより、照合の済んだ訳文を早く出すほうが旅客のためになります。
中国語と韓国語は、全文を読める人がいない前提で作ります。 その代わりに、目印と運航の状態の語と数字は機械で照合済みなので、担当は「何がいつどうなるか」が正しいことを確かめられます。ダイヤ改正のように影響の大きいお知らせは、出す前に中国語・韓国語の分かる人(社内の他部署や外注)に1回読んでもらいます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 目印の数が合わない | その言語の訳文を赤く表示し、出さない。呼び直すか、担当が手で直す |
| 訳文に目印以外の数字が出る | 赤く表示する。生成AIが数字を書いた可能性があるので、その箇所を消して確かめる |
| 用語集に無い港名・船名がある | 原文のまま残して印を付ける。担当が用語集に足してから訳し直す |
| 定型文の一部だけが変わっている | 定型文には当てず、生成AIに訳させる。定型文を少し変えた文を定型の訳文で出さない |
| 日付の解釈が二通りある(「11/3」が年をまたぐなど) | 置き換えの段で止め、担当に年月日を選ばせる |
| 4言語のどれかが欠ける | 欠けた言語だけ呼び直す |
| 生成AIの応答が返らない | 定型文で組めるお知らせは定型文だけで出し、残りは担当に知らせる |
| 日本語のお知らせが訳した後に直された | 訳文を無効にし、訳し直すよう表示する |
| 原文に用語集の港名が1つも無い | 港名の書き漏れを疑い、担当に日本語のお知らせを確かめるよう表示する |
| 定型文の訳文が用語集の改定と合わなくなった | 定型文の一覧に用語集の版を持たせ、古い版の定型文を赤く表示する |
「訳した後に直された」の行は、運航の変更のお知らせでよく起きます。 「遅延」が「欠航」に変わるのはよくあることで、日本語だけ直して外国語が古いまま残るのがいちばん危ない状態です。日本語のお知らせと訳文に同じ版の番号を付け、版が違う訳文は確認の画面で出せないようにします。
記録を残す
- 日本語のお知らせ(版の番号付き)と、目印に置き換えた文、目印と元の値の対応表
- 生成AIの出力(3言語の訳文、
untranslated_terms、unclear) - 照合の結果(目印の数、目印以外の数字)
- 担当が直した箇所と、掲載した訳文と掲載の日時
- そのとき使った用語集の版
照合の結果は、赤く表示された理由ごとに月ごとに数えます。 目印を消した件数が多ければ指示を、用語集に無い語が多ければ用語集を直します。直す先が数で分かります。
最後の行の用語集の版は、訳語を変えたときに要ります。 港の英語の表記を変えると、過去のお知らせとつづりが違ってきます。どのお知らせがどの版の用語集で訳されたかが分かれば、直すべき掲示を探せます。
04実装レベルの3段階
最小構成では置き換えが手作業です。 1件ずつ目印を付けるので、月160件には使えません。確かめるための段階です。 半自動化で、1件30分が9分になり、この段階が本記事の想定です。 文章の訳と固有名詞・数字の直しが自動になり、担当は赤い箇所と運航の状態の語を確かめるだけになります。本格構成で減るのは掲載の手間で、運航の変更のお知らせが内容ごと差し替わる頻度を考えると、急ぐ必要はありません。 本格構成に進むなら、日本語のお知らせの版と訳文の版をつなぐ仕組みが先です。 版が違う訳文が自動で出る経路を残したまま掲載を自動にすると、第7章の例外処理の「訳した後に直された」の行が、そのまま旅客に届きます。
05工数削減シミュレーション
導入後 160件 × 9分 ÷ 60 = 24 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 複数の航路でフェリーや高速船を運航し、外国人の旅客が増えて、運航の変更やダイヤ改正のお知らせを英語・中国語・韓国語でも出している会社。翻訳を外注するか、語学のできる社員が機械翻訳を直して出しているものの、港名や船名の訳し方がお知らせごとに揺れ、時刻や日付の書き間違いを掲示した後に見つけたことがある場合。Azure の契約があるか、委託先に小さな連携を作ってもらえる場合。自治体が運営する離島の航路の担当にも当てはまります。
- 1航路だけで、お知らせが月に数件しかない場合。外国人の旅客がほとんどおらず、多言語のお知らせを出していない場合。運航の変更のお知らせを、すべて決まった定型文の組み合わせで出せていて、訳す文章が無い場合。なお、欠航するかどうか、代替の便や払い戻しの扱いの判断は、この構成では代替できません。決まったお知らせを訳し、表記をそろえるまでです。
07最小構成で試す方法
- 先月出したお知らせから20件を選ぶ(運航の変更10件、ダイヤ改正3件、乗船の案内7件)
- 港名・船名・便名・日付・時刻を、手で
{{PORT_01}}のような目印に置き換える - 社内で使える Azure OpenAI の画面(Microsoft Foundry のプレイグラウンド)に、第7章の指示と目印入りのお知らせを貼る
- 出てきた訳文の目印の数を数え、数字が出ていないかを見る
- 目印を手で用語集の訳語に戻し、当時出した外国語のお知らせと並べて読む
20件は必ずやってください。 仕組みを作る前に、目印を残したまま訳せるかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 目印が全部残り、文章も自然に訳せた | 置き換えと照合の仕組みに進む |
| 目印を訳した、消した、数字を書いた | 指示の書き方で直る。構成は有効 |
| 港名・船名の訳語がそもそも決まっておらず、戻せない | 用語集の整備が先。 AIの問題ではない |
3行目が出ることは珍しくありません。 失敗ではなく、訳語が揺れていた理由が、担当ごとに版の違う表にあったと分かったということです。 その場合は、乗り場の案内板のつづりを集めるところから始めてください。
20件のうち運航の変更の10件は、天候による欠航と遅延を中心に選びます。 冬と台風の時期にいちばん件数が多く、急いで出すお知らせで目印が守られるかを先に確かめるためです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 港名や船名の訳語が揺れる | 目印に置き換え、用語集の訳語だけで戻す |
| 短い表記が先に当たり、訳語が重複する | 用語集は長い表記から照合する |
| 「11/3」が月日か日月か分からない | 日本語の原文で一度だけ解釈し、年月日の値で持つ |
| 午前・午後を書き間違える | 3言語とも24時間制にそろえる |
| 生成AIが目印を訳す・消す | 目印の数を照合し、ずれたら赤く表示して出さない |
| 訳文に数字が混ざる | 目印以外の数字を検出して赤く表示する |
| 「欠航」が「遅延」と訳される | 運航の状態の語も目印にし、用語集の訳語で戻す |
| 定型文を少し変えた文が定型の訳文で出る | 文全体が一致したときだけ定型文に当てる |
| 日本語だけ直されて外国語が古いまま | 版の番号で結び、版が違う訳文は出せないようにする |
| 用語集を直したのに古い訳語で戻る | 起動のたびに用語集を読み直す |
| 時刻表の数字のセルがずれる | 表の数字のセルは生成AIに渡さず、そのまま使う |
| 4言語のどれかが欠ける | minItems はスキーマで使えないので、Functions で確かめる |
上の4行が、この構成の失敗のほとんどです。 どれも固有名詞と数字の揺れで、旅客が乗り場と時刻を間違える原因になります。生成AIに渡す前に目印にしてあるかどうかで、運用に乗るかが決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 公開する前の運航のお知らせ、ダイヤ改正の時刻表、用語集です。旅客の個人情報は扱いません。 公開前のダイヤ改正は社外に出る前の情報なので、掲載の日まで社内で扱います。
- 欠航するか、代替の便や払い戻しをどうするかは訳さない … 決めるのは運航の管理の担当で、この構成は決まった日本語のお知らせを訳すだけです
- 固有名詞と数字を生成AIに任せない … 目印に置き換え、用語集と書式の規則で戻します。旅客の行動を変える部分を、生成AIの言い回しに頼りません
- 掲載は人が行う … 運航の変更は内容が後から変わります。確かめた訳文だけを、版を確かめて出します
- 中国語・韓国語の訳文は、読める人の確認を入れる機会を作る … 日々のお知らせは機械の照合と担当の確認で出し、ダイヤ改正や重要なお知らせは読める人に見てもらいます
- 用語集の変更を記録する … 訳語を変えた日と変えた人を残し、過去の掲示とのつづりの違いを追えるようにします
- 定型文の訳文は人が訳して確かめる … 急ぎのお知らせほど定型文を使うので、定型の訳文の誤りは何度も旅客に届きます
誤りが起きた場合のリスクは、運航の状態や時刻を誤って伝えることと、港や船の名前を揺らして旅客を迷わせることの2つです。 前者は目印と数字の照合で、後者は用語集で防ぎます。どちらも、生成AIの外側の仕組みで守ります。 訳文の文章の自然さは、多少ぎこちなくても旅客は読み取れます。守るべきは、何がいつどこでどうなるかという中身です。
10まず何から始めるか
1週目:用語集を1つにまとめる
担当ごとに版が違う訳語の表を集め、港名・ターミナル名・のりば・船名・便名・航路名・運航の状態の語を1つのリストにまとめます。 つづりに迷ったら、乗り場の案内板のつづりに合わせます。
2週目:20件で試す
先月のお知らせから20件を選び、手で目印に置き換えてプレイグラウンドで訳させます。目印を残せたか、数字を書いていないかを最優先で見ます。
3週目:書式の規則と定型文を決める
言語ごとの日付と時刻の書き方を決め、よく使う欠航・遅延の文を定型文として人が訳して確かめます。 定型の訳文は、語学のできる社員か外注で一度読んでもらいます。
4週目:置き換えから照合までをつなぐ
Azure Functions で用語集と正規表現の置き換え、1回の呼び出し、目印の戻し、数字の照合までを作ります。この時点では運航の変更のお知らせだけを対象にし、担当が全文を確かめます。
2か月目: ダイヤ改正と乗船の案内も対象に加え、時刻表の表の扱いを足します。赤く表示された件数と、用語集に足した語の数を毎週数えます。3か月目以降: 1件30分が何分になったかを実測します。日本語のお知らせを出した直後に3言語のお知らせが出せ、港名と船名のつづりが全部の掲示でそろった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Chat Completions API では response_format に JSON スキーマを定義すること。すべてのフィールドを必須にし additionalProperties: false を設定すること。列挙型がサポートされること。配列の minItems・maxItems が非対応であること。最大100個のオブジェクトのプロパティ、入れ子5段までであること | Microsoft Learn: Azure OpenAI で構造化出力を使用する方法 | 2026-10-26 |
| プロンプトのキャッシュに1,024トークン以上かつ最初の1,024トークンが同一であることが必要なこと。1文字の違いでキャッシュに当たらないこと。対応するモデルで既定で有効なこと。構造化出力のスキーマがシステムのメッセージの前に付く形でキャッシュの対象になること。変わらない内容を先頭に置くことが推奨されること | Microsoft Learn: Prompt caching with Azure OpenAI | 2026-10-26 |
| 外国人観光旅客の来訪の促進等による国際観光の振興に関する法律 第2条:海上運送法による一般旅客定期航路事業を営む者が「公共交通事業者等」に含まれ、「車両等」に船舶が含まれること。第7条:公共交通事業者等が観光庁長官の定める基準に従い、外国語等による情報の提供などの外国人観光旅客利便増進措置を講ずるよう努めなければならないこと | e-Gov 法令API: 外国人観光旅客の来訪の促進等による国際観光の振興に関する法律 | 2026-10-26 |
欠航・遅延の判断、代替の便や払い戻しの扱い、訳語の決め方は、運航の管理の担当と旅客営業課で決めてください。 本記事は上記の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1857)についてのご相談はこちらから。
