---
title: "外部設計と内部設計の違いとは？利用者から見える設計とシステム内部の設計【基本情報技術者試験】"
description: "外部設計と内部設計を、利用者から見える設計か、開発者が実装のために決める設計かで整理し、論理データ設計と物理データ設計の違いをFE試験向けに解説します。"
last_modified_at: "2026-07-25"
canonical_url: "https://stemtazoo.github.io/fe/external-internal-design/"
section: "fe"
---

## まず結論

外部設計と内部設計は、**誰の視点で設計するか** で切り分けます。

基本情報技術者試験では、次のように見ると判断しやすくなります。

| 工程 | 視点 | 決めること |
|---|---|---|
| 外部設計 | 利用者・業務側から見える部分 | 画面、帳票、コード、論理データ、機能 |
| 内部設計 | 開発者・システム内部の実装 | プログラム構造、物理データ、ファイル編成、レコードレイアウト |

特に、**論理データ設計** は外部設計で扱われることがあります。

```text
論理データ設計
  → 必要なデータ項目を洗い出す
  → データ同士の関係や構造を決める
```

一方で、ファイル編成、記憶媒体、アクセス時間、容量、レコードレイアウトなどは、より実装に近いため、内部設計・物理設計寄りです。

## 直感的な説明

外部設計と内部設計は、家づくりで考えると分かりやすいです。

家を建てるとき、まず住む人から見える部分を決めます。

```text
部屋の配置
玄関の位置
窓の場所
キッチンの使い方
収納の大きさ
```

これは、利用者から見える設計です。

システム開発でいうと、外部設計に近いです。

一方で、実際に家を建てるためには、内部の構造も決める必要があります。

```text
柱の構造
配線の通し方
配管の配置
使う材料
施工方法
```

これは、作る側・実装する側の設計です。

システム開発でいうと、内部設計に近いです。

つまり、

```text
外部設計 = 利用者からどう見えるかを決める
内部設計 = システム内部でどう作るかを決める
```

と考えると、初めてでもイメージしやすくなります。

## 定義・仕組み

外部設計は、要件定義で決めた内容をもとに、利用者から見たシステムの機能や入出力を具体化する工程です。

代表的には、次のようなものを決めます。

| 外部設計で扱うもの | 内容 |
|---|---|
| 機能設計 | システムが利用者に提供する機能を決める |
| 画面設計 | 入力画面や表示画面の内容を決める |
| 帳票設計 | 出力する帳票やレポートの形式を決める |
| コード設計 | 商品コード、社員番号などのコード体系を決める |
| 論理データ設計 | 必要なデータ項目やデータ構造を決める |

内部設計は、外部設計で決めた内容を、実際にプログラムとして作れるように分解する工程です。

代表的には、次のようなものを決めます。

| 内部設計で扱うもの | 内容 |
|---|---|
| プログラム構造 | どのプログラムやモジュールに分けるかを決める |
| モジュール設計 | 各処理の役割や呼び出し関係を決める |
| 物理データ設計 | データをどのように保存・配置するかを決める |
| ファイル設計 | ファイル編成、媒体、アクセス方法などを決める |
| レコード設計 | レコードレイアウトや項目の物理配置を決める |

ここで大切なのは、**論理** と **物理** の違いです。

| 種類 | 見るポイント |
|---|---|
| 論理データ設計 | 何のデータが必要か、データ同士がどう関係するか |
| 物理データ設計 | どの媒体に、どの形式で、どれくらいの容量で保存するか |

論理データ設計は、業務で必要なデータを整理する段階です。

物理データ設計は、それを実際にコンピュータ上でどう持つかを決める段階です。

このテーマは、基本情報技術者試験の「システム開発技術」と関係する内容です。公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できます。

## 科目Aでどう出る？

科目Aでは、外部設計・内部設計・論理データ設計・物理データ設計の作業内容を選ぶ問題が出やすいです。

判断するときは、説明文が **利用者から見える内容** なのか、**実装のための内部的な内容** なのかを見ます。

| 説明の中心 | 対応する工程 |
|---|---|
| データ項目の洗い出し | 外部設計・論理データ設計 |
| データ構造の決定 | 外部設計・論理データ設計 |
| 画面や帳票の設計 | 外部設計 |
| コード体系の決定 | 外部設計 |
| データファイル編成の決定 | 内部設計・物理データ設計 |
| 媒体の決定 | 内部設計・物理データ設計 |
| アクセス時間や容量の見積り | 内部設計・物理データ設計 |
| レコードレイアウトの決定 | 内部設計・物理設計寄り |

特に、次の切り分けはよく使えます。

```text
データ項目を洗い出す
データ同士の構造を決める
  → 論理データ設計

ファイル編成を決める
媒体や容量を決める
アクセス時間を見積もる
  → 物理データ設計・内部設計
```

「論理」とある場合は、まず **業務上どんなデータが必要か** を考えます。

「物理」とある場合は、**コンピュータ上でどう保存するか** を考えます。

## どんな場面で使う？

問題文では、外部設計と内部設計という用語を直接選ぶより、開発工程の流れや設計書の内容を読む場面で役立ちます。

例えば、次のような流れです。

```text
要件定義
  ↓
外部設計
  ↓
内部設計
  ↓
プログラミング
  ↓
テスト
```

外部設計では、利用者と確認しやすい内容を具体化します。

```text
どんな画面が必要か
どんな帳票を出すか
どんなデータ項目を扱うか
どんな機能を提供するか
```

内部設計では、開発者が実装できるように、システム内部の構造へ落とし込みます。

```text
どのプログラムに分けるか
どのファイルに保存するか
どのようなレコード構造にするか
どのようにアクセスするか
```

長文問題で読むときは、次の視点が役立ちます。

```text
1. 利用者に見える内容か
2. 開発者が実装するための内容か
3. データの意味や関係を決めているか
4. データの保存方法や性能を決めているか
```

利用者と確認する内容なら外部設計寄り、プログラムやファイルの作り方なら内部設計寄りです。

## よくある誤解・混同

### 誤解1：外部設計を「社外向けの設計」だと思う

外部設計の「外部」は、会社の外という意味ではありません。

ここでの外部は、**システムの外側から見た設計** という意味です。

つまり、利用者から見える機能、画面、帳票、データなどを決める工程です。

```text
外部設計 = 利用者から見える部分の設計
```

### 誤解2：内部設計を「重要な設計」とだけ覚える

内部設計は、単に重要な設計という意味ではありません。

外部設計で決めた内容を、実際に作れるようにシステム内部へ落とし込む工程です。

```text
内部設計 = 開発者が実装するための設計
```

プログラム構造、モジュール分割、ファイル編成、レコード構造などが中心になります。

### 誤解3：論理データ設計と物理データ設計を混同する

論理データ設計と物理データ設計は、名前が似ているため混同しやすいです。

| 設計 | 判断の合図 |
|---|---|
| 論理データ設計 | データ項目、データ構造、データ同士の関係 |
| 物理データ設計 | ファイル、媒体、容量、アクセス時間、レコードレイアウト |

論理データ設計は、業務で必要なデータを整理します。

物理データ設計は、それをコンピュータ上でどう保存するかを決めます。

### 誤解4：レコードレイアウトを論理データ設計だと思う

レコードレイアウトは、データをファイルやデータベース上でどのように並べるかという、実装に近い話です。

そのため、外部設計の論理データ設計というより、内部設計・物理設計寄りに考えます。

```text
データ項目の洗い出し
  → 論理データ設計

レコードレイアウトの決定
  → 内部設計・物理設計寄り
```

### 誤解5：容量見積りを論理データ設計だと思う

容量見積りは、データを実際に保存するときの量や性能を考える話です。

そのため、物理データ設計や内部設計寄りです。

```text
どんなデータが必要か
  → 論理

どれくらいの容量が必要か
  → 物理
```

## まとめ（試験直前用）

- 外部設計は、利用者から見える機能・画面・帳票・論理データを決める
- 内部設計は、開発者が実装するためのプログラム構造や物理データを決める
- **データ項目の洗い出し・データ構造の決定** は論理データ設計
- **ファイル編成・媒体・容量・アクセス時間** は物理データ設計寄り
- 「外部」は社外ではなく、システムの外側から見えるという意味
