外部連携(CSV/EDI/API)設計ガイド|データマッピング・Webhook・再送で事故を防ぐ

外部連携は、つながった時点ではうまく見えても、運用が始まると例外や変更が必ず出てきます。CSVは手軽でも運用ルールが曖昧だとミスが増えやすく、APIは自動化しやすい反面、失敗時の扱いを決めていないと原因調査が難しくなります。EDIのように形式が固い連携でも、実際にはコード体系のずれや例外値の処理で止まりやすい場面があります。

壊れにくい連携にするには、項目の対応表だけでなく、失敗時の隔離、再送、二重処理対策までを最初から同じ設計の中に入れておく必要があります。本記事では、CSV、EDI、APIのどれにも共通して重要になる考え方を整理します。

この記事でわかること
・CSV、EDI、APIの違いと、設計でそろえるべき前提
・データマッピング(コード、例外、変換)の作り方
・Webhook、再送、冪等性の基本と落とし穴
・連携テスト(受入)の現実的な進め方

連携方式ごとの特徴を、まず大まかに整理しておくと判断しやすくなります

どの方式でも共通して必要なのは、「値の意味をそろえること」「失敗したデータを見つけられること」「やり直せること」です。

連携で止まりやすいのはここです。
画面上の項目名が同じでも、意味、型、必須条件、例外値の扱いが違うと整合しません。項目名だけを見て「同じ」と判断すると、後で手作業が増えやすくなります。

項目対応、失敗データ、再送の流れが一画面で見えると、原因を追いやすくなります

下は、外部連携の管理画面を想定した例です。左側で項目対応表を確認し、右側で受信、保留、再送の流れを追えるようにしています。マッピングと運用状況を分けずに見られると、止まった理由を確認しやすくなります。

画面イメージ:外部連携の確認画面の例 項目対応、受信処理、例外データ、再送状況をまとめて確認できる構成です。
外部連携モニタ
CSV、EDI、APIの受信状況とマッピング定義を確認する画面
受信成功 126件 保留 4件 再送待ち 2件
マッピング定義 型、必須、変換ルールまで確認
送信側 受信側 変換
order_date 受注日 YYYY-MM-DD → Y/m/d
customer_code 取引先コード 前後空白削除
status 受注状態 01/02/03 → 仮受付/確定/取消
memo 備考 改行整形、文字数制限あり
受信から再送までの流れ 失敗前提で確認
1
受信 CSV取込、API受信、Webhook通知を受ける
2
検証 必須、型、コード体系、例外値を確認する
3
保留キューへ隔離 人の確認が必要なデータだけを分けて扱う
4
再送・再実行 1件単位またはバッチ単位でやり直す
正常受信 保留 再送待ち 重複検知
保留データと再送履歴を確認する
連携画面の主ボタンは、横幅いっぱいより内容に応じた幅の方が収まりやすくなります。

データマッピング設計で決めること

連携事故の多くは、値の意味が違う、例外値が処理できない、コードがずれる、といった理由から起こります。対応表は項目名の対応だけで終わらせず、値の意味まで定義しておく方が安全です。

マッピング表に入れるべき列

確認項目 見落としやすい点 先に決めたいこと
必須条件 相手側では任意でも、自社側では必須になることがあります。 欠けていた時にエラーにするか、保留にするかを決めます。
日付・時刻 タイムゾーンや時刻の有無でずれやすくなります。 保存形式と表示形式を分けて整理します。
コード値 同じように見えて意味が違う場合があります。 対応表を項目ごとに持つ方が安全です。
空値・例外値 空欄、0、未定の意味が違うと後で判定がぶれます。 値ごとに扱いを固定しておきます。
マッピング表は開発時の資料で終わらせず、運用担当も見られる状態にしておく方が便利です。障害時に「この値はどこで変わるのか」を確認しやすくなります。

失敗前提の設計がないと、運用が止まりやすくなります

連携は必ず失敗する前提で設計した方が安定します。正常系だけで考えると、例外が発生した時に担当者が直接データを書き換えたり、同じ連携を何度も回したりして、別の事故につながりやすくなります。

特に、保留キューを持たずに失敗データをそのまま取り込み直す運用は、原因追跡が難しくなりやすいため注意が必要です。

Webhook、再送、冪等性はAPI連携の基本です

Webhookは便利ですが、同じ通知が複数回届く前提で作らないと二重処理が起きやすくなります。再送と冪等性、つまり同じ処理を繰り返しても結果が変わらない仕組みをセットで考える必要があります。

よくある事故

基本の対策

Webhook

受け取ったらすぐ本処理しない

受信後に一度キューへ入れ、検証と本処理を分ける方が詰まりにくくなります。

冪等性

同じイベントを二度処理しない

イベントIDや外部IDで処理済み判定を持つと、重複事故を抑えやすくなります。

連携テスト(受入)は、正常系より例外系を先に揃えた方が実務では役立ちます

連携テストは、正常に流れることの確認だけでは足りません。実際の運用では、空欄、桁超え、未知コード、取消データ、再送などの方が問題になりやすくなります。

  1. 正常系のサンプルを用意する
    まず基本的な受信と保存ができることを確認します。
  2. 例外系のサンプルを先に揃える
    空値、未知コード、桁超え、重複データなどを検証します。
  3. 再送・取消の手順まで試す
    やり直しや取り消しができることを確認します。
  4. 匿名化した実データに近いサンプルで確認する
    本番に近い条件でずれを見つけやすくなります。
テスト項目 見たいこと 理由
空値・未定値 エラーか保留か 人の判断が必要なデータを分けられるか確認しやすくなります。
未知コード 落ち方と通知方法 相手側の仕様変更に早く気づきやすくなります。
重複イベント 二重登録されないか Webhook連携では特に重要です。
再送・取消 やり直しが可能か 運用で止まらない仕組みに近づけやすくなります。

最初から全部自動化せず、手動確認の場所を残す方が安全なこともあります

外部連携では、自動化を進めるほど便利に見えますが、条件が複雑な領域では人の判断を残した方が安定することがあります。例えば次のような場面です。

この場合は、正常系だけ自動化し、例外は保留キューに入れて確認する方が、全体として扱いやすくなります。

まとめ

外部連携は、つながることより、止まった時に見つけられること、やり直せることの方が重要です。マッピング表、例外の隔離、再送、二重処理対策までを最初から入れておくと、運用時の負荷をかなり抑えやすくなります。

まず見直しやすいのは、項目対応表に型や例外値まで書かれているか、再送の手段があるか、重複処理を防ぐキーがあるかの3点です。そこから整えていくと、CSV、EDI、APIのどの連携でも崩れにくい形に近づけやすくなります。

本記事は、Webシステム開発・スマホ自動変換「movo」・業務システム構築・フォームUX改善・EC支援を提供する 株式会社インテンスが、実際の開発プロジェクトで蓄積した知見をもとにまとめています。 株式会社インテンス(公式サイト)