要件から始めるソフトウェア設計(小規模TS Webアプリの実践)

小〜中規模の Web フロントエンドを持つシステム(TypeScript 想定)を対象に、要件定義→設計→テストまでを「一貫した判断基準」で進めるための実践教材です。

想定読者

  • 対象読者: 小〜中規模の Web アプリで、要求整理〜要件定義〜設計〜テスト方針の策定に関わる実務者(エンジニア/PM/テックリード)
  • 前提知識: TypeScript と Web の基本(HTTP/REST、Git の基礎、一般的なチーム開発の流れ)

この本の目的

  • 要求を「合意された要件」に変換し、設計入力として扱えるようにする
  • 結合を「統合強度×距離×変動性(S/D/V)」で捉え、過剰設計を避ける
  • 価値と保守性を前提に、単体/統合/E2E の配分を複雑さに応じて決められるようにする

本書の前提用語(要求/要件/仕様/設計)

本書では、議論の対象を次の 4 つに分けます(混同しないための整理です)。

  • 要求(Needs / Goals): なぜやるか(ビジネス目的・課題・KPI)
  • 要件(Requirements / Shall): 何を満たすべきか(実装方法に依存しない約束)
  • 仕様(Specification / Behavior): どう振る舞うか(外部から観測できる振る舞いを曖昧さなく)
  • 設計(Design / Structure): どう作るか(内部構造・モジュール・アルゴリズム・DB物理など)

この 4 つを、章とテンプレ(Appendix)に対応させて進めます。

非ゴール(本書では扱わない)

  • 特定フレームワーク(例: Next.js)固有の最適化・詳細実装
  • 大規模前提のテンプレ(フル装備のクリーンアーキテクチャ、マイクロサービス化)
  • 参照書籍・PDF本文の転載
  • 実サンプルアプリの完成(必要なら別 Issue)

読み方ガイド

  • 初めて読む場合は、00 → 01 → 02 → 03 → 04 → 05 → 06 → 07 の順を推奨します
  • 実務で困っている箇所が明確なら、該当章だけ先に読んでも問題ありません
  • 実装前の最小タイムライン(例: 1〜2週間の初期立ち上げ)は 00. この本の使い方 を参照します
  • 共通題材(ランニング例)として「小規模タスク管理(期限/権限/通知)」を全章で用います

学習成果

  • 要求を合意済みの要件・仕様に分解し、設計入力として扱える成果物(要件/仕様/意思決定ログ)を作成できるようになる。
  • 結合を「統合強度×距離×変動性(S/D/V)」の観点で評価し、モジュール境界と依存関係の設計判断を説明できるようになる。
  • 小〜中規模 Web アプリに適したテスト方針(単体/統合/E2E の配分)を、複雑さと変更頻度に応じて設計・見直しできるようになる。

前提知識

  • TypeScript と Web の基本(HTTP/REST の概要、フロントエンド開発の流れ)
  • Git の基礎(差分確認、ブランチ/PR の概念)
  • (推奨)チーム開発の基本プロセス(要求整理〜要件定義〜設計〜テストの流れ)

所要時間

  • 通読: 約2〜2.5時間(本文量ベース概算。コードブロック除外、400〜600文字/分換算)
  • テンプレートを用いて自プロジェクトに適用する場合は、対象範囲と反復回数により変動します。

ライセンス

本書は CC BY-NC-SA 4.0 で公開されています。商用利用は別途契約が必要です。

目次

本編

Appendix

補足: 一覧ページとして 目次 も用意しています。