CSV/EDI/API連携の設計ポイント|差分更新・エラー再処理で運用が止まらない作り方

CSV/EDI/API連携は、「一度取り込めたら完成」ではありません。 実務で問題になりやすいのは、取り込みに失敗したとき、同じデータが再送されたとき、差分だけが後から届いたときです。

CSVで毎日取り込む、EDIで受注データが届く、APIで在庫や配送ステータスが更新される。 こうした連携では、重複登録、欠落、順序の前後、文字コードの違い、参照先マスタ不足などが起きます。 そのたびに開発者しか復旧できない状態だと、現場の業務が止まりやすくなります。

この記事では、差分更新・冪等性・エラー再処理を軸に、CSV/EDI/API連携を実務で運用しやすくする設計ポイントを整理します。

この記事の対象読者
・CSV/EDI/APIで外部データを取り込む業務システムを作る担当者
・連携が失敗すると現場が手作業で復旧しており、負担が大きくなっている方
・物流/卸売/製造など、マスタと取引データが多い業種の企画・情シス
データ連携は、裏側のバッチ処理だけで考えると復旧が難しくなります。 何を正とするか、同じデータを再処理しても壊れないか、失敗時に誰が直せるかまで含めて設計すると、日常運用で扱いやすくなります。

1. まず決める:連携は「差分更新」が前提

連携が扱いにくくなる原因の一つは、毎回「全件洗い替え」や「単純上書き」で設計してしまうことです。 現場では、同じ取引先の住所だけが変わる、同じ受注の一部だけが分納になる、商品マスタの販売状態だけが更新される、といった部分的な変更が頻繁に起きます。

そのため、連携では差分更新を前提に設計します。 外部キー、更新日時、バージョン番号、内容ハッシュなどを使い、何が新規で、何が更新で、何が処理済みなのかを判断できるようにします。

連携設計で最初に決める3要素
差分更新

何が変わったか

外部キー、更新日時、ハッシュを使い、新規・更新・処理済みを判定します。

冪等性

何度処理しても安全か

同じデータを再処理しても、数量や金額が二重に反映されないようにします。

再処理

失敗後に戻せるか

失敗理由を見て、対象行や対象バッチだけを再実行できるようにします。

設計項目 決める内容 決めない場合に起きやすい問題
外部キー 相手先の取引先コード、商品コード、注文番号などを何で照合するか 同じデータを新規として取り込み、重複登録が増える
更新判定 更新日時、バージョン、ハッシュのどれで差分を見るか 更新済みデータを再度処理したり、必要な更新を見落としたりする
削除扱い 物理削除ではなく、停止・無効・削除フラグとして扱うか 過去の取引データと紐付けられなくなり、集計や確認が難しくなる

製品や取引先などマスタが絡む場合は、管理画面で更新運用を回す方法と同じく、「どちらのシステムを正とするか」を先に決める必要があります。 商品名は基幹側、Web表示名はWeb側、販売停止フラグは基幹側、といったように項目単位で分けることもあります。

2. 冪等性:二重取り込みで壊れない“保険”を作る

CSVは再送されることがあります。 APIはタイムアウト後に再試行されます。 夜間バッチは途中で止まることもあります。

そのため、同じデータが複数回来ても、結果が二重に反映されないようにしておく必要があります。 これが冪等性の考え方です。

冪等性の基本セット
・外部キー+連携種別で「既に処理済みか」を判定する
・同じデータが来ても、数量・金額・ステータスが二重に反映されないようにする
・取り込みの開始・終了・失敗をログに残し、途中で止まった処理を確認できるようにする
冪等性を意識した取り込みフロー
STEP 1 受信

CSV、EDI、APIからデータを受け取り、連携IDを付与します。

STEP 2 重複確認

外部キーと連携種別で、処理済みデータか確認します。

STEP 3 差分反映

変更がある項目だけを更新し、加算・減算の二重処理を防ぎます。

STEP 4 結果記録

成功、失敗、保留、再処理対象をログとして残します。

特に注意したいのは、在庫数や請求金額のような「加算・減算」で扱う項目です。 同じデータを2回処理すると、在庫が二重に減ったり、金額が二重に加算されたりする可能性があります。 この場合は、イベントをそのまま足し引きするのではなく、外部側の最新状態を基準に更新する、または処理済みイベントIDを厳密に管理する必要があります。

問い合わせや予約のステータスを連携で更新する場合は、ステータス設計と整合が取れているか確認します。 外部連携によって、意図せず「完了」「キャンセル」「出荷済み」などへ変わらないよう、状態遷移のルールを明確にしておきます。

3. エラー再処理:現場が自力復旧できる設計にする

連携の品質は、成功時よりも失敗時に分かります。 失敗内容がログファイルにしか残らず、開発者がサーバで確認しないと復旧できない状態では、運用側の負担が大きくなります。

現場で確認・修正・再処理できる画面を用意しておくと、参照先マスタ不足や入力形式の不一致など、よくある失敗を日常業務の中で処理しやすくなります。

3-1. 再処理に必要な情報

管理画面mock:連携エラーの再処理画面
連携ジョブ管理 本日 08:30 取込分
取込件数 1,284 受注CSV
成功 1,251 97.4%
保留 21 マスタ待ち
エラー 12 要確認

原因別

商品マスタ未登録 7件 / 商品コードの確認が必要
取引先コード不一致 3件 / 外部コードの紐付け待ち
日付形式エラー 2件 / CSV形式の確認が必要

エラー詳細

受注番号:ORD-20260502-0148 / CSV 128行目
商品コード P-8842 が商品マスタに存在しません
商品マスタ登録後、この行だけ再処理
この行を再処理 保留にする 詳細ログを見る

問い合わせ管理のダッシュボードで保留や確認中を扱う考え方は、運用ルールのまとめと同じように考えられます。 連携エラーも、未確認のまま残ることが一番の問題です。

4. 連携順序:マスタ→取引→ステータス の原則を守る

連携順序が前後すると、処理が止まりやすくなります。 たとえば、受注データは届いているのに商品マスタが未登録、配送実績は届いているのに出荷データが存在しない、という状態です。

基本は、次の順序で処理します。

連携順序の基本パターン
1 マスタ取込

商品、取引先、拠点、担当者など、参照される情報を先に更新します。

2 取引データ取込

受注、予約、問い合わせ、見積などの本体データを登録します。

3 ステータス更新

出荷、検収、分納、キャンセル、請求などの状態を反映します。

4 保留再処理

参照先不足で保留にしたデータを、マスタ補完後に再処理します。

現場の都合で順序が前後する場合は、単純にエラーで止めるだけでなく、保留キューを用意します。 参照先マスタが後から届いた時点で、保留データを再処理できるようにしておけば、手入力での補正を減らせます。

スマホ画面mock:保留キューの確認イメージ
9:41
100%
連携保留データ マスタ登録後に再処理できます
商品マスタ未登録

商品コード P-8842 が未登録のため、受注3件を保留しています。

受注CSV 3件 対応待ち
商品マスタを確認する
取引先コード不一致

外部コード C-2190 と既存取引先の紐付けが必要です。

EDI 2件 確認中
保留理由を見る

この保留の設計は、問い合わせ分類やタグの考え方(タグを改善に活かす方法)とも相性があります。 どの原因で保留が多いのかを集計できれば、マスタ整備や入力ルールの改善にもつなげられます。

5. 業種別に“連携で止まりやすい論点”を押さえる

CSV/EDI/API連携の注意点は、業種によって変わります。 物流、卸売、製造のように、マスタと取引データが多い業種では、例外条件をどこまでデータ構造に含めるかが重要になります。

5-1. 物流(3PL/倉庫)

物流では、入庫、出庫、在庫、検品、配送実績など、短い間隔でイベントが発生します。 更新頻度が高く、順序も前後しやすいため、参照先マスタ不足やステータスの行き違いが起きやすい領域です。

業務イメージを作るなら、物流向けWebシステム活用アイデアのように、現場イベントが連続する前提から入ると、連携設計で確認すべき点を出しやすくなります。

5-2. 卸売・商社

卸売・商社では、商品コードの表記ゆれ、先方固有コード、分納、直送、掛率、得意先別単価など、例外条件が多くなります。 標準化できる項目と、例外として保持する項目を分けないと、連携処理の中身が分かりにくくなります。

見積項目や取引条件の前提は、卸売・商社(BtoB企業)向けWebシステム活用アイデアのような業務像から逆算すると、画面とデータ連携の関係を考えやすくなります。

6. 最後に:連携は“運用UI”があると復旧しやすい

連携を裏側のバッチだけにしてしまうと、現場では何が起きているか分かりません。 最新取り込み日時、成功件数、失敗件数、保留件数、再処理結果を画面で確認できるようにしておくと、復旧の判断が早くなります。

運用UI mock:連携状況ダッシュボード
データ連携ダッシュボード 2026/05/02 10:30 更新
最終成功 10:12 商品マスタAPI
処理中 2件 受注EDI
保留 21件 マスタ待ち
要対応 12件 エラー確認
受注CSV 商品マスタ未登録:7件。商品コードの紐付け後に再処理可能です。 担当:商品管理
在庫API タイムアウト:2件。自動リトライ済み、次回処理で再確認します。 担当:情シス
EDI出荷 伝票番号不一致:3件。元データと出荷実績の確認が必要です。 担当:物流

インテンスでも、連携を裏側の処理だけで終わらせず、運用側が確認・保留・再処理できる画面を用意することを重視しています。 これにより、開発者への確認を待たずに、日常的なデータ不整合を現場で処理しやすくなります。

まとめ

CSV/EDI/API連携は、データを取り込む処理だけでは不十分です。 差分更新、冪等性、エラー再処理を設計に含めて、はじめて実務で扱いやすい連携になります。

差分更新

外部キー、更新日時、削除フラグ、更新元を決め、新規・更新・処理済みを判断します。

冪等性

同じデータを複数回処理しても、数量・金額・ステータスが二重反映されないようにします。

再処理

失敗理由を画面で確認し、対象行や対象バッチだけを再実行できるようにします。

処理順序は、マスタ、取引データ、ステータス更新を基本にします。 順序が前後する場合は、保留キューを用意し、参照先がそろった後で再処理できるようにしておくと、手作業での補正を減らせます。

連携は、システムの裏側で自動的に動くだけのものではありません。 現場が状況を確認し、原因を判断し、必要な範囲だけ復旧できる運用UIまで用意することで、CSV/EDI/API連携は日常業務を支える仕組みになります。

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