外部インターフェース共通仕様

Home

📕Arrow icon of a page linkサンエムシステム 上流工程標準(Preview版)

⚖️Arrow icon of a page linkサンエムシステム上流工程 標準規格

📘Arrow icon of a page link要件定義 実践ガイド

📘Arrow icon of a page link基本設計 実践ガイド

📄Arrow icon of a page linkテンプレート集

Get Started

📄Arrow icon of a page link基本設計工程のルール

📄Arrow icon of a page link基本設計書の構成を決める

🚧Arrow icon of a page link基本設計のプロセスモデル

実践ガイド

文書情報
システム方式設計
外部仕様設計
運用設計
インフラ設計
移行計画
テスト方針・計画
開発プロセス・規約
レビュー・承認

外部インターフェース共通仕様

外部システムとの連携における認証・認可、エラーハンドリング、データフォーマットなどの共通仕様を定義し、一貫性のある設計を実現します。

🎯 概要


  • 目的: 外部システムとの連携における共通的な仕様(認証・認可、エラーハンドリング、データフォーマット、通信プロトコルなど)を定義し、すべての外部インターフェースで一貫性のある設計を実現する
  • スコープ: REST API、メッセージング、ファイル連携など、外部システムとのすべての連携方式における共通仕様をカバーする。個別のインターフェース詳細仕様は対象外
  • 推奨する実施タイミング: 外部インターフェース設計の初期段階、個別I/F設計の前に実施する
  • 関連するステークホルダー: システムアーキテクト、アプリケーション開発チーム、連携先システムの担当者、セキュリティチーム

📥 重要な前提知識・インプット


  • 前提知識: REST API設計、認証・認可方式(OAuth 2.0、API Key、JWTなど)、メッセージング(MQ、Kafka)、ファイル連携方式、エラーハンドリングパターン
  • インプット: システムアーキテクチャ設計書、セキュリティ要件、連携先システムの仕様書、非機能要件(性能・可用性・セキュリティ)

📄 成果物の定義


  • ドキュメントテンプレート: 📄Arrow icon of a page link[テンプレ]外部インターフェース共通仕様
  • 必須要素: 認証・認可方式定義、エラーハンドリング仕様、データフォーマット定義、通信プロトコル仕様、監視・ログ仕様、外部インターフェース一覧
✅ 品質基準・レビュー観点

品質チェックリスト:

チェック項目 チェック内容
セキュリティ 適切な認証・認可方式が定義されているか
エラーハンドリング 共通エラーコードとリトライポリシーが明確か
データ整合性 データフォーマット・文字コードが統一されているか
監視可能性 ログ出力項目と監視ポイントが定義されているか

👁️‍🗨️ レビュー観点:

  • セキュリティ要件の充足: 認証・認可方式がセキュリティ要件を満たしているか
  • 運用性: 障害発生時の調査・対応に必要なログが出力されるか
  • 保守性: エラーコードや仕様が標準化され、保守しやすい設計か
  • 連携先との整合性: 連携先システムの仕様と矛盾がないか
🧪成果物のサンプル
# 外部インターフェース共通仕様

## 認証・認可

**認証方式:**
- REST API: OAuth 2.0 / API Key
- メッセージング: 共有シークレット
- ファイル連携: SFTP認証(公開鍵/秘密鍵)

**認可:**
- ロールベースアクセス制御(RBAC- APIスコープによる権限管理

## エラーハンドリング

**共通エラーコード:**
- `AUTH_ERROR`: 認証エラー
- `PERMISSION_DENIED`: 権限エラー
- `INVALID_REQUEST`: リクエスト不正
- `SYSTEM_ERROR`: システムエラー
- `TIMEOUT`: タイムアウト

**リトライポリシー:**
- 一時的なエラー(5xx): 最大3回リトライ(指数バックオフ)
- クライアントエラー(4xx): リトライなし

## 監視・ログ

**記録項目:**
- リクエスト/レスポンス内容(個人情報はマスキング)
- 処理時間
- エラー詳細
- 送信元/送信先情報

---

🔄 設計の進め方・プロセス


🏗️ プロセス1: 認証・認可方式の定義

設計対象:

外部システムとの連携における認証(誰であるかを確認)と認可(何ができるかを制御)の方式を決定する。

具体例:

  • REST API: OAuth 2.0、API Key、JWT(JSON Web Token)のいずれを使うか
  • メッセージング: 共有シークレット、証明書ベース認証のいずれを使うか
  • ファイル連携: SFTP(公開鍵認証)、FTPS、共有ストレージ(IAM認証)のいずれを使うか
  • 認可方式: ロールベースアクセス制御(RBAC)、APIスコープ、IPアドレス制限をどう組み合わせるか

設計原則:

  • セキュリティ要件への準拠: セキュリティポリシーや業界標準(OWASP、NIST)に準拠した方式を選択する
  • 連携先の制約考慮: 連携先システムがサポートする認証方式に合わせる
  • 最小権限の原則: 必要最小限の権限のみを付与し、過剰な権限を与えない
  • トークン管理: トークンの有効期限、更新方式、失効方式を明確にする
  • 監査可能性: 誰がいつアクセスしたかを記録し、監査できるようにする

文書化の推奨表現:

  • 認証方式一覧: 連携種別(REST API、メッセージング、ファイル連携)ごとに採用する認証方式を表形式で整理する
  • 認可ポリシー: ロール定義、APIスコープ、アクセス制御ルールを明記する
  • トークン仕様: トークンの形式、有効期限、更新フロー、格納場所(ヘッダー、クエリパラメータなど)を記載する
  • セキュリティ考慮事項: 通信の暗号化(TLS 1.2以上)、クレデンシャルの保管方法、ローテーションポリシーを文書化する
🏗️ プロセス2: エラーハンドリング仕様の策定

設計対象:

外部連携で発生するエラーの分類、共通エラーコード、リトライポリシー、エラー通知方法を決定する。

具体例:

  • 共通エラーコード体系: AUTH_ERROR(認証エラー)、PERMISSION_DENIED(権限エラー)、INVALID_REQUEST(リクエスト不正)、SYSTEM_ERROR(システムエラー)、TIMEOUT(タイムアウト)
  • リトライポリシー: 一時的なエラー(5xx)は最大3回リトライ(指数バックオフ)、クライアントエラー(4xx)はリトライしない
  • エラー通知: 重大なエラーはアラート通知、一時的なエラーはログ記録のみ

設計原則:

  • エラー分類の明確化: 一時的なエラー(リトライ可能)と恒久的なエラー(リトライ不可)を明確に区別する
  • 適切なリトライ戦略: リトライ回数、リトライ間隔(固定/指数バックオフ)、リトライ条件を定義する
  • エラー情報の充実: エラーコード、エラーメッセージ、詳細情報(トレースID、タイムスタンプなど)を含める
  • 連携先への影響考慮: 過度なリトライで連携先システムに負荷をかけないようにする
  • 運用対応の容易性: エラー発生時の調査・対応手順が明確になるように情報を設計する

文書化の推奨表現:

  • エラーコード一覧: エラーコード、エラー名、原因、対処方法を表形式で整理する
  • リトライポリシー表: エラー種別ごとのリトライ可否、リトライ回数、リトライ間隔を明記する
  • エラーレスポンス形式: JSONやXMLでのエラーレスポンスのフォーマット例を示す
  • エラー通知設計: どのエラーをどのタイミングで誰に通知するかを定義する
🏗️ プロセス3: データフォーマット・通信プロトコルの標準化

設計対象:

外部連携で使用するデータフォーマット(JSON、XML、CSV)、文字コード、日時形式、通信プロトコルを統一する。

具体例:

  • データフォーマット: REST APIはJSON、ファイル連携はCSV(UTF-8)、レガシーシステムとの連携はXML
  • 文字コード: UTF-8を標準とする(レガシーシステムとの連携時はShift_JISも許容)
  • 日時形式: ISO 8601形式(YYYY-MM-DDTHH:mm:ssZ)を標準とする
  • 通信プロトコル: HTTPS(TLS 1.2以上)、SFTP、MQ(TLS有効化)

設計原則:

  • 標準形式の採用: 業界標準(ISO 8601、RFC 8259など)に準拠した形式を優先する
  • システム全体での統一: すべての外部インターフェースで可能な限り同じ形式を使用する
  • 互換性の確保: 連携先システムがサポートする形式に合わせる(変換処理を実装する)
  • 拡張性の考慮: 将来の項目追加に対応できる柔軟な形式を選択する(JSONの任意フィールドなど)
  • データ検証: スキーマ定義(JSON Schema、XSDなど)を用意し、データの妥当性を検証する

文書化の推奨表現:

  • データフォーマット標準: 連携種別ごとの標準フォーマット、文字コード、エンコーディングを表形式で整理する
  • 日時・数値形式: 日時形式(タイムゾーン含む)、数値形式(桁数、小数点)、真偽値(true/false, 0/1)の表記ルールを明記する
  • 通信プロトコル仕様: 使用するプロトコル、バージョン、暗号化方式、ポート番号を記載する
  • スキーマ定義: JSON Schema、XSD、CSVの列定義など、データ構造の仕様を提供する
🏗️ プロセス4: 監視・ログ仕様の設計

設計対象:

外部連携の正常性監視、性能監視、ログ出力項目、ログ保管期間を決定する。

具体例:

  • 監視項目: 連携成功率、レスポンスタイム、エラー発生件数、タイムアウト発生件数
  • ログ出力項目: リクエスト/レスポンス内容(個人情報はマスキング)、処理時間、エラー詳細、送信元/送信先情報、トレースID
  • ログ保管期間: 通常ログは3ヶ月、監査ログは1年間保管

設計原則:

  • 運用性の確保: 障害発生時に原因を特定できるだけの情報を記録する
  • 個人情報保護: 個人情報や機密情報はマスキングまたは除外する
  • 性能への影響最小化: ログ出力による性能劣化を最小限に抑える(非同期ログ出力など)
  • トレーサビリティ: トレースIDやリクエストIDを使い、複数システム間で処理を追跡できるようにする
  • 監視アラート設計: 異常検知の閾値とアラート通知先を明確にする

文書化の推奨表現:

  • ログ出力項目一覧: 出力する項目名、形式、必須/任意、マスキング要否を表形式で整理する
  • ログレベル定義: DEBUG、INFO、WARN、ERRORの使い分け基準を明記する
  • 監視ダッシュボード設計: 監視する指標(メトリクス)、可視化方法、アラート条件を記載する
  • ログ保管・ローテーション: ログファイルの保管場所、保管期間、ローテーション方式を文書化する

🚨 よくある失敗と予防策 


🚧 実例収集後、追記予定

📚 参考資料・関連リンク



テンプレートサイト: 📄Arrow icon of a page linkテンプレート集