社員の住所変更届・通勤経路の申請を、申請された経路と運賃・規程の上限と照らして確認し、通勤手当の変更が要るものと確認が要る点を人事へ返す
社員から届く住所変更・通勤経路の申請を、経路探索の結果と通勤手当の規程に照らして確かめ、手当の変更が要るか、本人に確かめる点はどこかを人事に返します。人事は、返ってきた点だけを確かめて承認します。
- 生成AI
- Azure OpenAI Service/Claude
- 連携・自動化
- Make/Power Automate/Zapier
- 対象業界
- その他/介護/小売/製造
- 対象部門
- 人事/総務
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 入力作業が多い/属人化している/確認ミスが多い
- AIで行う処理
- 判定
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- ノーコード連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- Forms に届いた申請を、担当者が1件ずつ開く
- 経路探索のサイトで、申請の経路を入れて1か月の定期代を調べ、申請の金額と合うかを見る
- 同じ出発地と勤務地で、最安の経路と最短の経路を調べ、申請の経路と比べる
- 申請の経路が最安でなければ、理由の欄を読み、規程の例外に当たるかを考える
- 規程の上限(月5万円)と、課税されない上限を超えていないかを見る
- 確認が要れば、本人にメールで問い合わせる
- 問題がなければ、給与システムに新しい定期代と変更の日を入れる
- 自動Forms に申請が届いたら、Power Automate のフローが動き、応答の詳細を取得する
- 自動AI Builder のプロンプトが、申請の経路の書き方を、乗る駅・乗換の駅・降りる駅の並びにそろえる
- 自動駅すぱあと API で、申請の経路の1か月の定期代と、同じ出発地と勤務地の最安・最短の経路を取る
- 自動フローの規則で、申請の運賃と探索の運賃の差、最安との差と所要時間の差、規程の上限、課税されない上限を比べる
- 自動最安でない経路の申請は、AI Builder のプロンプトが理由の欄を読み、規程の例外の条件に当たりそうかと、本人に確かめる点を出す
- 自動結果を「変更が要る(そのまま承認できる)」「確認が要る」「変更が要らない」に分け、人事へ承認の依頼を送る
- 人人事の担当が、確認が要る点だけを見て、本人に問い合わせるか承認するかを決める
- 人承認したものを、担当が給与システムに入れる
各工程の詳しい説明を読む
- Forms に届いた申請を、担当者が1件ずつ開く
- 経路探索のサイトで、申請の経路を入れて1か月の定期代を調べ、申請の金額と合うかを見る
- 同じ出発地と勤務地で、最安の経路と最短の経路を調べ、申請の経路と比べる
- 申請の経路が最安でなければ、理由の欄を読み、規程の例外に当たるかを考える
- 規程の上限(月5万円)と、課税されない上限を超えていないかを見る
- 確認が要れば、本人にメールで問い合わせる
- 問題がなければ、給与システムに新しい定期代と変更の日を入れる
(a)調べ直しに時間がかかる。 2番目と3番目で、1件に3回は経路探索をします。申請の経路の駅名が略称だったり、バスの区間の書き方があいまいだったりすると、探索に入れる前の読み替えに時間がかかります。
(b)遠回りを見落とす。 申請の経路が最安より月に数千円高くても、所要時間がほぼ同じなら、規程では最安の経路で支給するのが原則です。忙しい月は3番目を省き、申請どおりに通すことがあります。 1件の差は小さくても、5,000名分が積み重なります。
(c)例外の判断が担当者によって違う。 「乗換が1回少ないから」という理由を、ある担当者は認め、別の担当者は認めません。同じ店舗の社員どうしで支給額が違うと、後から説明がつきません。
(d)本人への問い合わせが往復する。 6番目の問い合わせで、本人が経路を書き直し、もう一度2番目からやり直すことがあります。何を確かめたいのかが最初の問い合わせで伝わらないと、往復が増えます。
- 【自動】 Forms に申請が届いたら、Power Automate のフローが動き、応答の詳細を取得する
- 【自動】 AI Builder のプロンプトが、申請の経路の書き方を、乗る駅・乗換の駅・降りる駅の並びにそろえる
- 【自動】 駅すぱあと API で、申請の経路の1か月の定期代と、同じ出発地と勤務地の最安・最短の経路を取る
- 【自動】 フローの規則で、申請の運賃と探索の運賃の差、最安との差と所要時間の差、規程の上限、課税されない上限を比べる
- 【自動】 最安でない経路の申請は、AI Builder のプロンプトが理由の欄を読み、規程の例外の条件に当たりそうかと、本人に確かめる点を出す
- 【自動】 結果を「変更が要る(そのまま承認できる)」「確認が要る」「変更が要らない」に分け、人事へ承認の依頼を送る
- 【人】 人事の担当が、確認が要る点だけを見て、本人に問い合わせるか承認するかを決める
- 【人】 承認したものを、担当が給与システムに入れる
7番目が、この設計の分かれ目です。人が見るのは、確認が要る点だけです。 申請を最初から調べ直す形のままだと、60.0時間はほとんど減りません。探索の結果と規則の判定がそろっている申請は、承認のボタンを押すだけにします。
4番目と5番目を分けているのも、意図してのことです。 金額の比較は規則で決め、生成AIには金額を比べさせません。 生成AIが受け持つのは、理由の文が規程の例外に当たりそうかという、読んで判断する部分だけです。
02今回想定するシステム構成
社員(Microsoft Forms の通勤経路の申請) ▼【トリガー】新しい応答が送信されたとき Power Automate(確認のフロー) ├──▶ 応答の詳細を取得する ├──▶ AI Builder のプロンプト:経路の書き方を駅の並びにそろえる ├──▶ 駅すぱあと API:申請の経路の定期代/最安(teiki1)/最短(time) ├──▶ 規則:運賃の差、最安との差と所要時間の差、規程の上限、課税されない上限 ├──▶ AI Builder のプロンプト:理由の欄が例外の条件に当たりそうか、確認する点 ├──▶ 結果の記録(SharePoint リスト) └──▶ 人事へ承認の依頼(開始して承認を待機) 【人事が確認点を見て承認・問い合わせ】 ▼ 給与システムへの入力(人)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | Power Automate(クラウド フロー) | Make、Zapier |
| 生成AI | AI Builder のプロンプト(「プロンプトを実行する」アクション、JSON 出力) | Azure OpenAI(Microsoft Foundry)、Claude |
| 運賃と経路の探索 | 駅すぱあと API(経路探索 search/course/extreme) | 他社の経路探索のAPI |
| 受付 | Microsoft Forms | ― |
| 承認 | Power Automate の承認 | Teams のアダプティブ カード |
| 保管 | SharePoint のリスト(規程の条件、勤務地の駅、結果の記録) | Dataverse |
給与システムには書き込みません。 承認した申請の入力は、いままでどおり担当が行います。この構成が受け持つのは、申請を確かめて、変更の要否と確認の点をそろえるところまでです。 給与への反映をフローに任せると、規程の解釈が誤っていたときに、誤った支給がそのまま続きます。
運賃の探索には、駅すぱあと API の経路探索を使います。 公式ドキュメントでは、viaList に出発地・経由地・目的地を「:」で区切って渡し、sort に teiki(1か月の定期代の安い順)や time(所要時間の短い順)を指定でき、answerCount で最大20件まで返すとされています。返ってくる運賃には、1か月・3か月・6か月・12か月の定期代が Teiki1 Teiki3 Teiki6 Teiki12 の区分で含まれます。
判定の土台には、国税庁のタックスアンサーを置きます。 電車やバスだけで通勤する場合、課税されない限度額は「最も経済的かつ合理的な経路および方法で通勤した場合の通勤定期券などの金額」で、1か月あたり15万円を超える場合は15万円が限度とされています。新幹線や特急の料金は、その経路と方法が「最も経済的かつ合理的」に当たれば含まれますが、グリーン料金は含まれないとされています。
03どうやって実装するのか
処理の起点を決める
Forms に申請が送信されたことを起点にします。 Microsoft Forms コネクタのトリガー「新しい応答が送信されたとき」で受け、「応答の詳細を取得する」で回答の中身を取ります。公式ドキュメントでは、このコネクタは組織のアカウントでのみ機能するとされています。
グループで作ったフォームは、トリガーのドロップダウンに出ません。 公式ドキュメントでは、グループ フォームをトリガーするには、フォームを編集するときのアドレス バーの「FormId=」の後の部分を、フォーム ID に手で貼る必要があるとされています。人事部のチームで管理しているフォームなら、最初にここでつまずきます。
月末に申請をまとめて確かめる形にはしません。 変更の日が月の途中の申請は、給与の締めまでに承認が終わっている必要があります。届いた時点で確かめ、確認が要るものを早く本人に返すほうが、往復の時間が取れます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 申請 | 社員番号、新しい住所(市区町村まで)、最寄りの駅・バス停、申請の経路、1か月の定期代、変更の日、交通手段、理由の欄 | Microsoft Forms |
| 勤務地の駅 | 店舗・事業所ごとの最寄りの駅とバス停 | SharePoint のリスト |
| 規程の条件 | 月の上限、最安でない経路を認める条件(所要時間の差・乗換の回数)、特急・新幹線の扱い、例外の条件の文 | SharePoint のリスト |
| 探索の結果 | 申請の経路の定期代、最安と最短の経路の定期代と所要時間・乗換の回数 | 駅すぱあと API |
質を決めるのは、3行目の規程の条件です。 規程の文のままでは、フローの規則に使えません。「最安との差が月3,000円以内なら、所要時間が15分以上短い経路を認める」「乗換が2回以上少ない場合は認める」のように、数字で書けるものは数字にします。 数字にできない例外(育児・介護・障がいなどの事情)は、文のまま持ち、生成AIへ渡します。
Forms の作りも、入力の質を左右します。 経路を1つの自由記述の欄で受けると、「JR で◯◯まで、そこから地下鉄」のような書き方が混ざります。乗る駅、乗換の駅(3つまで)、降りる駅を別々の欄にし、交通手段は選択肢にします。 それでも自由記述の書き方は残るので、生成AIでそろえる処理は外しません。
1行目の住所は、市区町村までしか持ちません。 経路を探すのに要るのは最寄りの駅で、番地は要りません。番地まで含んだ住所は、給与システムの住所の届出として別に扱い、このフローには流しません。
データの取得方法を決める
申請はトリガーと「応答の詳細を取得する」で受け、勤務地の駅と規程の条件は SharePoint のリストから引きます。探索の結果は、駅すぱあと API を HTTP のアクションで呼んで取ります。 API キーは、フローの中に直接書かず、管理された場所に置きます。
| 取るもの | どう呼ぶか | 何に使うか |
|---|---|---|
| 申請の経路の定期代 | viaList に申請の駅の並び、sort=teiki | 申請の金額と比べる |
| 最安の経路 | viaList に最寄りの駅と勤務地の駅、sort=teiki | 最安との差 |
| 最短の経路 | 同じ viaList、sort=time | 所要時間の差 |
申請の経路の探索では、乗換の駅を viaList の経由地に入れます。 経由地を入れずに出発地と目的地だけで探すと、申請とは別の経路の運賃が返り、比べる意味がなくなります。 経由地を入れても申請の経路と違う路線で返ることがあるので、返ってきた経路の駅の並びが申請と一致するかを、フローで確かめます。
探索の日付(date)は、変更の日にします。 運賃の改定をまたぐ申請で、今日の運賃と変更の日の運賃が違うことがあるからです。
IC カードの運賃で比べるかどうかも、探索の条件で決めておきます。 公式ドキュメントでは、conditionDetail で IC の運賃や交通の種類、座席の区分などの細かな探索の条件を指定できるとされています。社員が経路探索のサイトで調べた条件と、フローの探索の条件が違えば、金額はずれて当然です。 Forms の入力の説明に、どの条件で調べてほしいかを書いておきます。
AIへ渡す前に整形する
- 必須の欄の確認 … 最寄りの駅、経路、定期代、変更の日が空でないかを確かめます。空なら本人へすぐ差し戻します
- 経路の書き方をそろえる … 「JR → 地下鉄 → バス」のような書き方を、駅の並びにそろえます(次の小見出し)
- 駅名の照合 … そろえた駅名が探索で見つかるかを確かめます。見つからない駅名は「駅名の確認が要る」とします
- 交通手段の分け方 … マイカー・自転車を併用する申請は、電車・バスの区間だけを探索にかけ、マイカーの区間は人の確認に回します
- 変更の日の確認 … 給与の締めの日と比べ、締めを過ぎた変更の日なら、さかのぼっての支給になることを記録に付けます
4番目でマイカーの区間を人に回すのは、課税されない上限の計算が違うからです。 国税庁のタックスアンサーでは、交通機関とマイカー・自転車を併せて使う場合は、交通機関の定期代などと、マイカー・自転車の片道の距離などに応じた額を合計した金額(1か月15万円が限度)とされ、後者は別のコードで説明されています。この構成では、電車・バスの区間だけを確かめます。
AIに処理させる
生成AIの仕事は2つです。 申請の経路の書き方を駅の並びにそろえることと、最安でない経路の理由が規程の例外に当たりそうかを読むことです。運賃の比較と上限の判定は、フローの規則で行います。
| 部品 | させること | させないこと |
|---|---|---|
| プロンプト1(経路の整形) | 申請の経路の文を、乗る駅・乗換の駅・降りる駅の並びにする | 書かれていない乗換の駅を補う |
| 駅すぱあと API | 申請の経路・最安・最短の定期代と所要時間 | ― |
| 規則(Power Automate) | 運賃の差、最安との差と時間の差、規程の上限、課税されない上限の判定 | 例外の判断 |
| プロンプト2(理由の判定) | 理由の文が、規程の例外の条件のどれに当たりそうか、本人に確かめる点 | 支給額を決める、例外を認める |
規則の判定は、次の順で行います。
| 判定 | 条件 | 結果 |
|---|---|---|
| 申請の運賃の食い違い | 申請の定期代と探索の定期代の差が月100円を超える | 確認が要る |
| 最安との差 | 申請の経路が最安より高く、規程の条件(時間の差・乗換の回数)を満たさない | 理由の判定へ |
| 規程の上限 | 1か月の定期代が月5万円を超える | 確認が要る |
| 課税されない上限 | 1か月の定期代が15万円を超える | 確認が要る(課税の扱い) |
| 特急・新幹線 | 探索の経路に特急・新幹線の料金が含まれる | 確認が要る |
理由の判定に渡す例外の条件は、次のような文で持ちます。 コードを付けておくと、生成AIの candidate と担当の判断を後から突き合わせられます。
| コード | 例外の条件(例) |
|---|---|
| E01 | 最安の経路より乗換が2回以上少ない |
| E02 | 育児・介護のため、保育園・介護施設などへの送迎の経路を通る |
| E03 | 健康上の理由で、特定の経路・混雑を避ける必要がある |
| E04 | 最安の経路のバスの本数が少なく、始業に間に合う便が無い |
月100円の差は、本記事のモデル条件です。 IC カードの運賃ときっぷの運賃の違いや、端数の扱いで小さな差が出ます。差の許し幅は、最初の1か月の結果を見て決めます。
指示内容を固定する
プロンプト1(経路の整形)は、次の指示です。
あなたは人事部で、社員が書いた通勤経路を、経路探索に入れる駅の並びにそろえる立場です。
渡された申請の経路の文だけを読み、乗る駅、乗換の駅、降りる駅を順に並べてください。
【厳守事項】
- 書かれていない乗換の駅を補わないでください。
- 駅名は書かれたとおりに写し、正式名に直せる場合だけ official_name に書いてください。
直せるか分からない場合は空にしてください。
- バスの区間は、乗るバス停と降りるバス停を書き、mode を bus にしてください。
- 徒歩・自転車・マイカーの区間は mode に書き、駅の並びに入れないでください。
- 経路が読み取れない場合は、stops を空にして unreadable を true にしてください。
- 回答に JSON マークダウンを含めないでください。
【申請の経路】{route_text}
【最寄りの駅・バス停】{home_station}
【勤務地の駅】{work_station}
プロンプト2(理由の判定)は、次の指示です。
あなたは人事部で、通勤手当の申請のうち、最も安い経路ではない経路を申請したものについて、
理由が規程の例外の条件に当たりそうかを確かめる立場です。
【渡す情報】
- 規程の例外の条件の一覧(コードと文)
- 申請の経路と、最も安い経路の定期代・所要時間・乗換の回数(探索の結果)
- 申請の理由の欄の文
【させること】
1. 理由の文が、例外の条件のどれに当たりそうかを candidate に書いてください。
当たりそうなものが無ければ none にしてください。
2. その判断の根拠にした文を、理由の欄からそのまま写してください。
3. 人事が本人に確かめるべき点を、質問の形で1〜3個書いてください。
【厳守事項】
- 例外を認めるかどうかを書かないでください。「当たりそう」までにしてください。
- 支給額を書かないでください。
- 理由の欄に書かれていない事情を推測しないでください。
- 育児・介護・健康の事情が書かれていても、その内容を詳しく書き写さないでください。
「事情の記載あり(育児)」のように区分だけを書いてください。
- 回答に JSON マークダウンを含めないでください。
「事情の内容を書き写さない」を明記するのは、承認の依頼が人事の複数の担当に回るからです。 健康や家族の事情は、申請した本人と、例外を判断する担当者だけが知っていればよい情報です。承認の依頼の一覧には区分だけを出し、詳細は申請の原文で見ます。
「当たりそう」で止めさせるのは、例外の判断が規程の運用だからです。 生成AIに「認める」と書かせると、担当者がその言葉に引っ張られて承認することが起きます。
出力形式を固定する
プロンプトの出力は、JSON のカスタム形式で固定します。 公式ドキュメントでは、JSON の例を更新すると形式がカスタムになり、プロンプトを保存すると形式がロックされるとされています。フローの最後に、規則の結果と合わせて次の形の記録を作ります。
{
"request_id": "F-20261007-0118",
"employee_no": "S048213",
"effective_date": "2026-11-01",
"route": {
"stops": [ { "name": "◯◯", "mode": "rail" }, { "name": "△△", "mode": "rail" } ],
"unreadable": false
},
"fare": { "requested": 12340, "searched": 12340, "cheapest": 10980, "fastest_min": 38 },
"checks": [
{ "rule": "fare_mismatch", "result": "ok" },
{ "rule": "cheapest_gap", "result": "reason_review" },
{ "rule": "company_limit", "result": "ok" },
{ "rule": "tax_free_limit", "result": "ok" }
],
"reason_review": { "candidate": "E02", "evidence": [ { "text": "" } ], "questions": [ { "q": "" } ] },
"verdict": "needs_check"
}
1つ目の理由は、規則の結果と生成AIの結果を別の欄に置けることです。 checks はフローの規則が埋め、reason_review だけを生成AIが埋めます。規程の条件が変わっても、直すのは規則だけです。
2つ目は、evidence と questions を、フィールド キーの付いたオブジェクトの配列にすることです。 公式ドキュメントでは、フィールド キーの無い配列(["abc", "def"])はサポートされないとされています。
verdict は、approve(変更が要り、そのまま承認できる)、needs_check(確認が要る)、no_change(変更が要らない)の3つです。verdict は規則で決め、生成AIには書かせません。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Microsoft Forms | 「新しい応答が送信されたとき」「応答の詳細を取得する」 | 申請を受け取る |
| AI Builder | 「プロンプトを実行する」 | 経路の整形と理由の判定 |
| 駅すぱあと API | HTTP のアクション | 定期代と所要時間 |
| SharePoint | リストの読み書き | 勤務地の駅・規程の条件・結果の記録 |
| Power Automate の承認 | 「開始してテキストの承認を待機」など | 人事の担当へ承認の依頼 |
承認の依頼には、verdict と確認の点だけを出します。 公式ドキュメントでは、プロンプトの出力のあとに承認のアクションを置き、レビュー担当者が生成されたテキストを確かめて必要に応じて編集できるとされています。本人への問い合わせ文は、確認の点をもとに担当が書き、送るのも担当です。
人が確認する
人が見るのは、needs_check の申請の確認の点だけです。 approve と no_change は、一覧で社員番号と金額を見て承認します。
fare_mismatchを先に見る … 申請の金額と探索の金額が違うもの。多くは IC とキップの違いか、経路の書き方の違いですreason_reviewを読む … 生成AIのcandidateとquestionsを参考に、例外を認めるかを担当が決めます- 上限を超えるものは、規程の運用の担当者に回す … 月5万円を超える申請、15万円を超える申請は、課税の扱いも含めて責任者が決めます
- 判断を記録する … 例外を認めたか、認めなかったか、その理由を残します
4番目の記録が、第3章の(c)への答えです。 例外を認めた理由がたまると、同じ理由の申請に同じ判断をしているかを後から確かめられます。
例外に対処する
| 起きること | 対応 |
|---|---|
経路が読み取れない(unreadable) | 本人へすぐ差し戻し、駅名を書き直してもらう |
| 駅名が探索で見つからない | 「駅名の確認が要る」として人へ。近い駅名に置き換えない |
| 探索の経路が申請の経路と一致しない | 経由地を足して探し直し、それでも違えば人へ |
| バスの区間が探索で出ない | バスの区間の運賃は申請の金額のまま、人が確かめる |
| マイカー・自転車の併用 | 電車・バスの区間だけを確かめ、残りは人へ |
| 駅すぱあと API が応答しない | 結果を保留にし、1時間後にやり直す。探索なしで承認に回さない |
| 変更の日が給与の締めを過ぎている | さかのぼっての支給になることを承認の依頼に書く |
| 同じ社員から同じ月に2件 | 新しいほうを有効とし、古いほうに「差し替え」と記録する |
| 出社の日数が少ない社員の申請 | 定期代と、往復の運賃×出社の予定日数を並べて人へ。どちらで支給するかは規程で決める |
| 勤務地の駅が一覧に無い(新店舗) | 結果を保留にし、勤務地の駅の一覧の追加を総務へ依頼する |
2行目の「近い駅名に置き換えない」が、いちばん守るべき線です。 同じ名前の駅が別の路線や別の地方にあることがあります。置き換えた駅で探索すると、もっともらしい運賃が返り、誰も気づきません。
記録を残す
- 申請の原文と、整形した駅の並び
- 駅すぱあと API に渡した条件(
viaList・date・sort)と、返ってきた定期代・所要時間 - 規則の判定の結果と、そのときの規程の条件の版
- 生成AIの
reason_reviewと、担当が例外を認めたか・その理由 - 承認した人と日時、給与システムに入れた日
規程の条件の版を残すのは、規程が改定されると過去の判定の意味が変わるためです。 月の上限を変えた月の前後で、同じ金額の申請の結果が違っても、版が残っていれば説明がつきます。
04実装レベルの3段階
最小構成では申請の量はさばけません。 確かめるための段階です。 半自動化で、1件15分が9分程度になります。 運賃の調べ直しは自動になりますが、経路の書き方を読み替える作業と、理由の欄を読んで本人への問い合わせを書く作業が残ります。本格構成で5分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、申請の金額と探索の金額がずれる型と、経路の書き方の癖が分かります。そこを Forms の入力の仕方に反映してから本格構成に進むほうが、差し戻しが減ります。
05工数削減シミュレーション
導入後 240件 × 5分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 店舗・事業所が多く、パート・アルバイトを含めて社員が数千名いて、転居や異動、勤務地の変更に伴う通勤経路の申請が毎月数百件ある会社。人事の担当が経路探索のサイトで1件ずつ運賃を調べ直し、規程の上限や「最も経済的かつ合理的な経路」に当たるかを見ている場合。申請を Microsoft Forms で受け付け、Power Automate を使える場合。
- 社員が数十名で、申請が月に数件の場合。通勤手当を実費ではなく一律の定額で支給していて、経路を確かめる必要がない場合。マイカー・自転車だけで通勤する社員が大半の場合。なお、規程の例外を認めるかどうか、課税の扱いの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の申請から30件を選ぶ(最安でない経路の申請と、問い合わせが往復したものを入れる)
- 規程の条件を、数字で書けるものと文のままのものに分けて書き出す
- 30件について、経路探索のサイトで申請の経路・最安・最短の定期代を調べ、表にする
- 手元のAIサービスに、規程の例外の条件と、最安でない申請の理由の欄を貼り、当たりそうな条件と確かめる点を答えさせる
- 当時の担当の判断と並べる
確かめたいのは、「確かめる点が当時の問い合わせと同じになるか」です。 ワークフローを組む前に、理由の判定が担当の見方に近いかを見ます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の問い合わせと同じ点が出た | フローに進む |
| 例外を「認める」と書いてしまう | 指示の書き方で直る。構成は有効 |
| 規程の条件が文のままで判断できない | 規程の条件を数字にするのが先。 AIの問題ではない |
3行目が出ることは珍しくありません。 失敗ではなく、担当者によって判断が違った理由が1つ分かったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 経由地を入れずに探索して別の経路の運賃が返る | 乗換の駅を viaList の経由地に入れ、返った経路の駅の並びを照合する |
| 駅名を近い駅に置き換えてしまう | 見つからない駅名は人へ。置き換えない |
| 申請の金額と探索の金額が少しずれる | IC とキップ、端数の違い。差の許し幅を決める |
| 社員の調べた条件とフローの探索の条件が違う | conditionDetail の条件を決め、Forms の説明に同じ条件を書く |
| 新店舗の勤務地の駅が一覧に無い | 開店の予定を総務から受け、一覧を先に足す |
| 運賃の改定をまたぐ | 探索の date を変更の日にする |
| グループ フォームがトリガーに出ない | フォーム ID を手で貼る |
| 生成AIが例外を「認める」と書く | 「当たりそう」で止めさせ、verdict は規則で決める |
| 理由の欄の事情が一覧に出てしまう | 区分だけを出し、詳細は原文で見る |
| マイカーの区間まで探索しようとする | 電車・バスの区間だけを確かめ、残りは人へ |
| 規程が文のままで規則にできない | 数字で書けるものを先に決める |
| 給与システムへの反映を自動にしたくなる | 承認と入力は人が行う |
上の2行が、この構成の失敗のほとんどです。 どちらも、探索がもっともらしい運賃を返してしまうという同じ形をしています。返ってきた経路が申請と同じかを確かめる処理を、最初から入れてください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 社員番号、住所(市区町村まで)、最寄りの駅、通勤の経路と定期代、そして理由の欄に書かれた育児・介護・健康などの事情です。
- 住所の番地をフローに流さない … 経路の探索に要るのは最寄りの駅です。番地まで含む住所は、給与システムの届出として別に扱います
- 経路探索の API に、社員を特定できる情報を渡さない … 渡すのは駅名と日付だけです
- 理由の欄の事情を広げない … 承認の一覧には区分だけを出し、詳細は判断する担当者だけが見ます
- この構成は、例外の判断と課税の扱いを代替しません … 例外を認めるか、上限を超える部分をどう扱うかは、人事の責任者と給与の担当が決めることです
- 規程の条件の版を残す … 規程の改定の前後で判定が変わっても、どの版で確かめたかを説明できるようにします
- 判断を記録する … 例外を認めた理由を残し、同じ理由の申請に同じ判断をしているかを毎月見ます
誤りが起きた場合のリスクは、払いすぎを見落とすことと、正しい申請を誤って差し戻すことの2つです。 前者は経路の照合を省くと起き、後者は駅名の読み違いをそのまま判定すると起きます。どちらも、探索の結果と申請を突き合わせる処理で防ぎます。
10まず何から始めるか
1週目:規程の条件を書き出す
通勤手当の規程を読み、数字で書ける条件(月の上限、最安との差の許し幅、所要時間の差、乗換の回数)と、文のままの例外(育児・介護・健康などの事情)に分けて SharePoint のリストにします。店舗・事業所ごとの最寄りの駅の一覧も作ります。
2週目:30件で試す
先月の申請から30件を選び、経路探索のサイトで定期代を調べ、手元のAIサービスで理由の判定をさせます。当時の問い合わせと同じ確認の点が出るかを見ます。
3週目:例外の判断の基準を決める
最安でない経路をどの条件で認めるかを、人事の責任者と決めます。 ここが決まらないうちにフローを組むと、確認の点は出るのに判断がばらつきます。
4週目:申請から規則の判定までをつなぐ
Power Automate で Forms の申請を受け、駅すぱあと API で定期代を取り、規則の判定を一覧に書き出すところまで作ります。この時点では承認の依頼を出さず、一覧だけを見ます。
2か月目: 経路の整形と理由の判定を足し、needs_check の件数を毎週数えます。3か月目以降: 承認の依頼を足し、1件15分が何分になったかを実測します。例外の判断の記録から規程の条件を見直した時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 電車・バスだけで通勤する場合の非課税の限度額が、最も経済的かつ合理的な経路および方法で通勤した場合の通勤定期券などの金額であること。1か月あたり15万円を超える場合は15万円が限度であること。新幹線・特急の料金は条件を満たせば含まれ、グリーン料金は含まれないこと。マイカー・自転車を併用する場合は交通機関の金額と距離などに応じた額の合計(15万円が限度)で、後者は別のコードで説明されていること(令和8年4月1日現在法令等) | 国税庁: No.2582 電車・バス通勤者の通勤手当 | 2026-10-07 |
経路探索で viaList に出発地・経由地・目的地を「:」区切りで渡すこと。date、sort(teiki・time・price など)、answerCount(最大20件)。conditionDetail で IC の運賃・交通の種類・座席の区分などの条件を指定できること。運賃に Teiki1 Teiki3 Teiki6 Teiki12 の定期代が含まれること | 駅すぱあと API: 経路探索 | 2026-10-07 |
| トリガー「新しい応答が送信されたとき」とアクション「応答の詳細を取得する」があること。コネクタが組織のアカウントでのみ機能すること。グループ フォームはドロップダウンに出ず、フォーム ID を手で入れる必要があること | Microsoft Learn: Microsoft Forms コネクタ | 2026-10-07 |
| 「プロンプトを実行する」アクションで作成済みのプロンプトを選び、入力を渡せること。プロンプトのあとに承認のアクションを置き、レビュー担当者がテキストを確かめて編集できること。Azure OpenAI サービスを活用した GPT モデルで動き、一部の地域に限定されること | Microsoft Learn: Power Automate でプロンプトを使用する | 2026-10-07 |
| JSON の例を更新すると形式がカスタムになり、保存すると形式がロックされること。「回答に JSON マークダウンを含めないでください」の対処。フィールド キーの無い配列がサポートされないこと | Microsoft Learn: JSON 出力 | 2026-10-07 |
月の上限(5万円)、最安との差の許し幅、所要時間の差の条件、運賃の食い違いの許し幅(月100円)は本記事のモデル条件です。 実際の条件は自社の通勤手当の規程で決めてください。課税の扱いの判断は、給与の担当と顧問の税理士・社会保険労務士に確かめてください。駅すぱあと API の利用の条件と料金は、本記事では確かめていません。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0645)についてのご相談はこちらから。
