要件から始めるソフトウェア設計(小規模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. この本の使い方 を参照します
  • 共通題材(ランニング例)として「小規模タスク管理(期限/権限/通知)」を全章で用います
  • 本書で「何をどの粒度で守るか」を整理した後、AI を使ったテスト観点の具体化やレビュー手順まで広げたい場合は、関連教材 AIテスト戦略入門 を併読すると接続しやすくなります

GitHub / AI / テスト / 形式手法を統合するレビューゲート

小規模 Web アプリでは、設計判断を軽く保つほど「どこで品質を担保したか」が曖昧になりがちです。本書では、実装前後の PR で次の証跡を分けて残すことを推奨します。

観点 何を確認するか 残す証跡 関連教材
要件・仕様 要求、要件、仕様、非ゴールが分離されているか Issue、受け入れ条件、仕様テンプレ(B-3) Issue 駆動仕事術
設計 境界、依存、S/D/V、ADR が説明できるか 設計アウトライン、S/D/V、ADR 本書 03/04/07 章
テスト / eval 単体・統合・E2E の配分と観測点が仕様に対応しているか テスト配分(B-8)、実行ログ、失敗時ログ AIテスト戦略入門
形式手法 不変条件、状態遷移、認可ルールなどを仕様として固定すべき箇所があるか 不変条件、反例、未検証範囲、採用しない理由 形式的手法の基礎と応用
GitHub / CI PR レビュー、CI、公開反映で同じ証跡を確認できるか PR body、Copilot review 対応、CI URL、Pages 確認 GitHub ワークフロー実践ガイド
セキュリティ / AI 利用 秘密情報、個人情報、ログ、外部サービス投入を分離できているか マスク方針、投入禁止データ、レビュー観点 AI Agent Engineering

AI を使って要件、テスト観点、レビュー観点を生成する場合も、AI 出力は「提案」として扱い、事実(仕様、ログ、CI 結果)と仮説(改善案、原因候補)を分けて記録してください。

最初の 1 クリック

学習成果

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

前提知識

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

所要時間

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

ライセンス

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

詳細なライセンス条件

利用と更新情報

  • 更新・フィードバック
  • 安全に使うための注意
    • 本書の設計例は TypeScript を前提にした小〜中規模 Web アプリ向けの判断材料です。採用するフレームワーク、認証方式、外部サービスの仕様差分は実案件側で確認してください。
    • 参照資料の扱い、転載禁止、機密情報や個人情報の混入防止は POLICY.md の方針に従ってください。
    • 要件やテスト観点の整理を別教材と接続したい場合は、Issue 駆動仕事術AIテスト戦略入門 を併読すると流れを追いやすくなります。

目次

本編

Appendix

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