はじめに
BFF(Backend for Frontend)がAPI設計を進めるうえで必要な
フロントエンド(モバイルアプリ、ウェブアプリなど)と
バックエンドの情報を整理する。
BFF単独で決められること
非機能要件
- パフォーマンス要件
- スケーラビリティ要件
- 可用性要件
エラーハンドリング
- エラーレスポンス設計
- エラーメッセージ設計
- エラーログの要件
ロギングとモニタリング
- ログフォーマット設計
- モニタリング設計
- アラート設計
デプロイメントと運用
- デプロイ手順設計
- CI/CDパイプライン設計
- 運用ガイドライン
テスト計画
- テストケース
- テストスクリプト
- テスト環境設計
BFF単独で決められないこと(= BFF開発に必要な入力)
登場する〇と△は以下のとおり
〇は、入力として有効であり変更(仕様・スケジュール)可能性が低い
△は、入力として有効であるが変更(仕様・スケジュール)可能性が高い
フロントエンドの成果物
開発スケジュール
- スプリント計画(△)
- WBS(△)
UIデザイン
- アプリ要件定義書(〇)
- アプリの画面設計や機能要件を詳細に記述した文書
- ワイヤーフレーム(△)
- 低詳細度のレイアウト図
- モックアップ(△)
- 高詳細度のデザイン図
情報設計(Information Architecture)
- サイトマップ(〇)
- アプリケーションの全体的な構造を視覚的に表現した図
- ナビゲーションフロー(〇)
- ユーザーがどのようにページ間を移動するかを示す図
- データ要求仕様書(〇)
- データの種類、形式、構造、取得方法を記載した文書
ユーザシーケンス
- ユーザーストーリー(〇)
- ユーザーが特定のタスクを完了するためのシナリオ
- ユーザーフロー図(〇)
- ユーザーがアプリケーションをどのように使用するかを示すフロー図
- シナリオ(〇)
- ユーザーの行動を詳細に記述した文書
バックエンドの成果物
開発スケジュール
- スプリント計画(△)
- WBS(△)
情報設計(Information Architecture)
- データモデル図(〇)
- データベースのスキーマを視覚的に表現した図
- ERD図(〇)
- データベースのエンティティとその関係を示す図
- APIエンドポイント一覧(〇)
- 既存のAPIエンドポイントのリスト
ユーザシーケンス
- ユーザーストーリー(〇)
- バックエンドサービスを利用するユーザーのシナリオ
- シーケンス図(〇)
- APIの呼び出し順序やデータフローを示す図
- ユースケース図(〇)
- ユーザーとシステムの相互作用を示す図
認証認可の要件
- 認証フロー図(〇)
- 認証プロセスを視覚的に表現した図
- 認可ポリシー文書(〇)
- 認可に関するポリシーを記述した文書
- セキュリティ要件定義書(〇)
- セキュリティに関する要件を詳細に記述した文書
では、何を作成したらよいか
フロントエンド~BFF~バックエンドを通したAPI一覧を作成する。
項目は以下を想定。
フロントエンド
- 呼び出し元:
画面だったり画面のボタンを記載 - 呼び出しAPI名:
BFFのAPI名を記載
BFF
- tags:
APIのタグを記載 - URL:
BFFのAPIのURLを記載 - エンドポイント:
APIのエンドポイントを記載 - HTTPメソッド:
使用するHTTPメソッド(GET, POST, PUT, DELETEなど)を記載 - フロントエンドからBFFへの引き数:
フロントエンドからBFFに渡される引き数(パラメータ)を記載 - BFFからフロントエンドへの戻り値:
BFFからフロントエンドに返される戻り値を記載 - 説明:
APIの機能や目的を簡潔に説明 - 作成者:
APIの作成者や担当者の情報を記載 - 更新履歴:
APIの更新履歴や変更点を記載
バックエンド
- BFFからバックエンドへの引き数:
BFFからバックエンドに渡される引き数(パラメータ)を記載 - バックエンドからBFFへの戻り値:
バックエンドからBFFに返される戻り値を記載 - API名:
バックエンドのAPIの名前を記載 - URL:
バックエンドのAPIのURLを記載 - エンドポイント:
APIのエンドポイントを記載 - バージョン:
バックエンドのAPIのバージョン情報を記載 - HTTPメソッド:
使用するHTTPメソッド(GET, POST, PUT, DELETEなど)を記載
まとめ
BFFが開発を進めるには、フロントエンドとバックエンドの情報が必須。
ここでの開発とは、「工数見積り」、「開発スケジュール作成」、「実際の設計・開発」を含む。
得られないレベルにもよるが、
フロントエンドとバックエンドの情報が得られない場合に考えられる対策は以下の通り。
- コミュニケーション強化
- 仮設計(プロトタイピング)の実施
- 仮スケジュールの作成
- リスク管理と代替案の検討
- エスカレーション