内部設計とは、外部設計で決めた「利用者に何を提供するか」を、プログラムやデータベースが実際に動く形へ具体化する設計です。ITパスポートでは、画面の見た目や業務の要求を決める外部設計と、処理手順・データ構造・モジュールの役割を詰める内部設計を区別します。内部設計とは何かを問われたら、利用者向けの仕様ではなく、開発者が実装とテストに使う詳細な設計と捉えるのが結論です。
内部設計の定義と仕組み
システム開発では、要求を整理した後、まず外部設計で画面、帳票、機能、他システムとの連携などを決めます。内部設計では、その内容を受けて、どの処理をどの順序で実行するか、データをどの項目で保持するか、機能をどの部品に分けるかを具体化します。
例えば申込受付の機能なら、入力された郵便番号を確認する順番、重複した申込みを判定する条件、受付結果を保存する表の項目、異常時に返すメッセージまでを整理します。実装者ごとの解釈のずれを減らし、後の単体テストで確認する対象を明確にする役割があります。
外部設計との違いを比較する
| 観点 | 外部設計 | 内部設計 |
|---|---|---|
| 主な視点 | 利用者や業務から見た機能・画面・帳票 | 開発者から見た処理・データ・プログラム構造 |
| 決める例 | 申込画面で入力する項目、出力する受付票 | 入力チェックの順序、データ保存先、処理の呼び出し関係 |
| 次につながる作業 | 内部設計の前提を与える | プログラミングと単体テストの基準になる |
両者は対立するものではありません。外部設計が「何を使えるようにするか」を定め、内部設計が「それをどう実現するか」を定めます。細かな画面項目が出てきても、利用者の操作や業務ルールを示す説明なら外部設計寄りです。処理順序やデータ項目の持ち方なら内部設計寄りです。
試験での見分け方
問題文にプログラムの処理手順、モジュールの分割、データベースの項目、エラー処理、内部のインタフェースが出たら内部設計を選ぶ手掛かりです。一方、利用者が入力する内容、帳票のレイアウト、業務担当者が使う機能、画面遷移の目的が中心なら外部設計を疑います。「詳細」という語だけで判断せず、誰のための仕様か、実装方法まで踏み込んでいるかを見ます。
仕事での具体例
自治体向けの予約システムを開発する場面では、外部設計で予約日時や人数を入力する画面を決めます。その後の内部設計では、同じ時間帯の空き枠をどの条件で減らすか、予約取消しで枠を戻す処理、同時に申込みが来たときの重複をどう防ぐかを設計します。開発担当者はこの設計を基に実装し、テスト担当者は満席時や取消し時の期待結果を確認します。
日常生活での具体例
映画館の座席予約を利用する人は、上映回と座席を選んで予約完了画面を見るだけです。しかし裏側では、選択中の座席を一時的に確保する時間、決済に失敗した場合に座席を戻す処理、同じ座席を二重に販売しない判定が必要です。利用者には見えない動き方を細かく決めるという点で、内部設計の考え方を身近にイメージできます。
確認問題
問題1
申込機能について、入力値の形式を検査する順序と、申込データを保存する項目を決める作業はどれですか。
- 要件定義
- 外部設計
- 内部設計
- 運用テスト
答え:3。処理の順序と保存項目は、実装に近い内部の動きを決める内容です。
問題2
外部設計との違いとして適切な説明はどれですか。
- 内部設計は利用者の業務要求だけを決める
- 内部設計は実現するための処理やデータを具体化する
- 外部設計は必ずプログラムの命令を記述する
- 外部設計と内部設計は同じ成果物である
答え:2。外部設計で決めた機能を、内部設計で処理・データ・部品へ落とし込みます。
次に読む関連記事
- 外部設計とは?内部設計との違い:利用者視点の設計と比べて、内部設計の担当範囲を整理できます。
- 要件定義とは?:設計の前に何を決めるのかを確認し、開発工程の順序をつかめます。
- 単体テスト・結合テスト・システムテストの違い:内部設計で定めた処理を、どの段階で確認するかを学べます。

