システム統合とAPI連携の実践

2026.02.14
システム統合とAPI連携の実践

システム統合とAPI連携の実践

最初に決めるべきは「境界」「同期/非同期」「データの主権」

統合は実装前の合意形成が8割です。どのシステムが何を担い、どの速度で、どの正確さでつながるのか。曖昧なまま着手すると、後ろ倒しの泥沼になります。現場で使える判断軸は次の通りです。

  • 境界の定義: 顧客・商品・在庫などのマスタは「主系」を一つ定め、他は参照か派生に徹する。更新は主系を起点にする。
  • 同期/非同期の使い分け: 画面操作で即時性が要る処理は同期(目安P95 300ms以内)。在庫集計や会計などは非同期でピーク平準化。
  • 停止時の設計: 相手が落ちたらどうするかを先に決める。キューに溜めるか、ユーザーにリトライを促すか、代替経路を用意するか。
  • 運用責任: 失敗時の最終責任者(監視・連絡・復旧手順のオーナー)を統合単位で明確にする。

この三点が固まると、APIの粒度やイベントの設計、SLOの議論がぶれません。逆に曖昧だと、設計・テスト・運用すべてが不安定になります。

API連携の設計実務:壊れない契約と安全な呼び出し

仕様を「契約」に落とす

口頭の前提は必ず仕様化します。OpenAPIで入出力・エラー・ページング・フィルタを定義し、非互換はエンドポイントを分けてバージョン管理(/v2など)。フィールド追加は後方互換に配慮し、未知フィールドは無視する実装を基本にします。フロントの集約にはGraphQL、双方向ストリーミングや厳密な型はgRPC、広範な互換性ならRESTといった使い分けも有効です。

冪等性・再試行・整合性

  • 書き込みAPIは冪等性キーを受け、タイムアウトや重複送信でも一度だけ反映。
  • 429/503は指数バックオフで自動再試行。上限回数や総待機時間をSLOに合わせて設定。
  • 分散トランザクションは避け、補償トランザクションやアウトボックス+イベント配信で整合性を保つ。
  • 業務的な可逆性を前提に、取消・再適用のパスを最初に設計する。

認証・権限・監査

  • 認可はOAuth 2.0やクライアント証明書で機械間を区別。スコープで最小権限。
  • テナント分離キーを必須化し、ログには個人情報を残さない。必要に応じてトークン化。
  • レート制限・クオータで乱高下を抑え、同時に相手の保護にもなる。

運用を見える化する

相関IDを全レイヤーで引き回し、分散トレーシングと合成監視を常設します。典型SLOは「P95レイテンシ300ms以下」「1時間あたり失敗率0.1%以下」。デッドレタキューは手動再送の手順とセットで用意します。

実装パターンと開発のコツ

  • WebhookかPollingか: 日次・時間単位の鮮度で十分ならPolling。秒単位の通知はWebhook+署名検証。重複配信を前提に設計。
  • 変換層の設置: フォーマット(JSON/CSV/XML)や通貨・単位の変換はゲートウェイで吸収。上流・下流の独立性を高める。
  • コントラクトテスト: 仕様書を単なるドキュメントで終わらせず、契約テストで破壊的変更を検知。
  • 段階移行: バッチからイベントへはダブルライト→リプレイ検証→段階切替。ロールバック手順を事前に演習。
  • AI支援の活用: ChatGPTやClaudeでOpenAPI雛形を素早く作り、CopilotでクライアントSDKを生成、Geminiでテストデータを自動生成。機密は投入せず、レビューを前提に取り込む。

このあたりの小さな積み重ねが、可用性と変更容易性の差になります。特に「重複・遅延・順序の乱れは起こる」という前提で、設計とテストケースを用意するのが肝心です。

身近な活用例:都市部で30店舗の飲食チェーン、受発注と会計の統合

業種・規模・状況: 都市部で30店舗を展開する飲食チェーン。店舗のPOSは世代が混在、仕入はメール+表計算、会計はクラウド。繁忙期は発注の遅延と在庫ズレが恒常化していました。

失敗の経緯: 毎夜のCSVバッチ連携で在庫と売上を突合していましたが、取引先ごとに列定義が異なり、突合エラーが週2回発生。朝の開店時に欠品が見つかり、現場が電話で調整。APIは一部導入済みでしたが、レート制限に当たると手動リトライになり、二重計上も散見されました。

改善の方針: 在庫は本部システムを主系に定義。発注は非同期イベント連携へ、会計は日次バッチを継続しつつ、価格照会と決済は同期APIに統一。冪等性キー・相関IDを必須化し、Webhookは署名検証と再送ルールを設置。仕様はOpenAPIで固定し、破壊的変更は新バージョンで段階移行。デッドレタは運用窓口で24時間以内に処置するSLOを設定しました。

移行手順: 2週間のダブルライト期間でイベントとバッチの差分を可視化し、ズレが0.5%以下になった段階で切替。ゲートウェイでフォーマット変換を集約し、店舗側改修を最小化。相関IDに基づくダッシュボードで遅延原因を即特定できるようにしました。

結果: P95の価格照会レイテンシは450ms→220ms、欠品率は3.2%→0.9%、夜間バッチの失敗は0件に。二重計上は冪等性で解消、繁忙期の電話対応は6割減。意思決定の要は「何を同期にし、何を非同期で許容するか」と「主系の一本化」でした。小さな規模でも段階移行と契約テストを組み合わせれば、運用の痛みを最小に実現できます。

受託開発ソリューション事業では、既存資産・業務制約・可用性目標を踏まえ、最小構成から始めて段階的に拡張する統合設計が要請されます。API契約、冪等性、監視、運用責任までをひとつの設計として扱うことで、導入後の現場が回り続ける統合になります。技術だけでなく、業務と運用を横断して設計・実装・定着を支えるのが、この事業区分の価値だと考えます。