内部設計書(詳細設計書)
This is a pen.
内部設計書(詳細設計書とも呼ばれます)は、外部設計書で決まった「ユーザーから見える動き」を、**「プログラミングができるレベルの具体的な手順」**に変換する文書です。
外部設計が「何を作るか(What)」であるのに対し、内部設計は**「どう実現するか(How)」**に集中します。
🛠️ 内部設計書の構成要素と作成ポイント¶
内部設計で作成される主な成果物と、作成時のコツをまとめました。
1. 物理DB(データベース)設計¶
- 内容: 論理モデル(ER図)をベースに、特定のデータベース(MySQLやPostgreSQLなど)で動くための詳細な定義。
- ポイント: * カラム名(物理名)、データ型、制約(NOT NULL、主キー)、インデックスを定義します。
- パフォーマンス向上のためのインデックス設定や、テーブル分割(パーティショニング)なども検討します。
2. クラス図・モジュール構成図¶
- 内容: プログラムをどのような部品(クラスや関数)に分け、それぞれがどう関連し合うかを定義。
- ポイント: * 「疎結合」(各部品が独立していること)を意識し、修正の影響が広がりすぎないように設計します。
- オブジェクト指向言語であれば、継承やインターフェースの活用もここで定義します。
3. シーケンス図(処理フロー)¶
- 内容: 複数のプログラム部品が、どのような順番でデータをやり取りするかを時系列で表したもの。
- ポイント: * 複雑なロジックや、複数のサーバー・APIをまたぐ処理(例:決済処理と在庫更新)で特に重要になります。
4. 共通部品設計¶
- 内容: ログインチェック、ログ出力、日付計算など、システム全体で使い回す便利なプログラムの設計。
- ポイント: * プログラマーが各自で同じようなコードを書かないよう、再利用性を高めることが開発効率向上のカギです。
💡 内部設計書を作成する際の3つのコツ¶
- 「ソースコードが想像できる」粒度で書く 内部設計書の理想は、**「これを見れば、プログラミング経験者なら誰でも同じコードが書ける」**状態です。重要な条件分岐(if文の条件など)やループ処理は明確に記述します。
- 保守性を考慮する 「動けばいい」ではなく、1年後の自分や他人が読んでも**「どこを直せばいいかすぐわかる」**構造を目指します。マジックナンバー(意味不明な数値)を定数化するなどのルールも盛り込みます。
- 例外処理(エラーハンドリング)を徹底する DB接続に失敗した、外部サーバーがダウンしていた、といった不測の事態に「システムをどう安全に止めるか(またはリトライするか)」を詳細に決めます。
📄 内部設計書の目次サンプル¶
一般的な内部設計書の構成例です。
- 1. システム構造設計(全体的なディレクトリ構成、フレームワークの利用方針)
- 2. 物理DB設計(テーブル定義、ビュー定義、インデックス定義)
- 3. モジュール(クラス)設計(クラス一覧、メソッド定義)
- 4. 処理詳細設計(シーケンス図、アクティビティ図、主要なアルゴリズム)
- 5. API/インターフェース詳細仕様(リクエスト/レスポンスのJSON構造など)
🔗 サンプル・テンプレートの参考URL¶
- IPA(情報処理推進機構)- 04_内部設計書.doc
-
外部設計(基本設計)からの流れが分かりやすく、公的な基準として参考になります。
- 現役エンジニアが「現場で役立つ」視点で書いたTipsが多く、図解のコツなども学べます。
これで、要件定義から内部設計までの一通りの流れが掴めたかと思います。
もし具体的なプロジェクト(例えば「Webアプリを作りたい」など)をイメージされているのであれば、そのプロジェクトに合わせた**「優先して作るべきドキュメント」**のアドバイスもできます。次はどのような情報が必要ですか?