システム設計をちゃんと理解する
要件定義から詳細設計書・DB設計・API設計・設計レビューまで、Webアプリ開発で必要な設計の考え方と実務パターンを整理する入門書です。「なんとなく動くコード」から「設計されたコード」へ進むための土台を作ります。
目次(全18章)
- 1なぜ設計が必要なのか — コードを書く前に考えること
設計なしで開発を始めるとどうなるか、設計の目的と効果を具体例で整理します。
- 2要件定義の進め方 — 機能要件と非機能要件を整理する
機能要件と非機能要件の違い、要件のまとめ方、よくある抜け漏れパターンを解説します。
- 3基本設計と詳細設計 — 2つの設計フェーズの違いと役割
基本設計と詳細設計の違い、それぞれで決めること・成果物の粒度を整理します。
- 4詳細設計書の書き方 — 何をどこまで書くべきか
詳細設計書に書くべき項目、粒度の判断基準、テンプレートと実例を示します。
- 5ER図とテーブル設計 — リレーションの考え方と正規化
ER図の読み書き、テーブル設計の進め方、正規化と非正規化の判断基準を解説します。
- 6API設計の基本 — RESTfulなエンドポイントの設計ルール
RESTfulなURL・HTTPメソッドの使い分け、レスポンス設計、ステータスコードの選び方を整理します。
- 7URL設計とルーティング — リソース指向のパス設計
リソース指向のパス設計、ネストの深さ、クエリパラメータの使い分けを解説します。
- 8認証と認可の設計 — セッション・JWT・OAuth
認証と認可の違い、セッション・JWT・OAuthの仕組みと選定基準を整理します。
- 9状態管理の設計 — サーバーとクライアントで何を持つか
サーバーサイドとクライアントサイドの状態の切り分け、キャッシュ戦略を解説します。
- 10エラー設計 — エラーコード体系・ユーザー通知・ログ戦略
エラーコード体系の設計、ユーザー向けメッセージとログの分離、非同期処理のエラー戦略を整理します。
- 11バリデーション設計 — フロント・バックエンド・DBの3層で守る
フロントエンド・バックエンド・DBの3層バリデーション、それぞれの役割と責務を解説します。
- 12伝わるコードとドキュメント — 命名・コメント・文章の技術
命名規則、コメントの要否、読者を意識したドキュメントの書き方、サンプルコードの見せ方を整理します。
- 13ディレクトリ構成 — 規模と責務で決めるファイル配置
機能別・レイヤー別のディレクトリ構成パターン、規模に応じた使い分けを解説します。
- 14頻出デザインパターン — Repository・Service・Factory
Repository・Service・Factoryなど、実務で頻出するデザインパターンを具体例で紹介します。
- 15SOLID原則 — 変更に強いコードを書くための5つの指針
SOLID原則の5つの指針を、実務のコード例を使って解説します。
- 16シーケンス図の書き方 — 処理の流れを可視化する
シーケンス図の基本記法、フローチャートとスイムレーン図の使い分け、Mermaidでの書き方を解説します。
- 17画面遷移図と画面設計 — UIとロジックの境界を決める
画面遷移図の書き方、画面単位の責務設計、UIとビジネスロジックの境界を整理します。
- 18設計レビューの観点 — 何をチェックし、どう指摘するか
設計レビューで見るべき観点、指摘の伝え方、レビューを受ける側の心構えを解説します。