---
title: "3層クライアントサーバシステムとは？各層の役割と2層構成との違い【基本情報技術者試験】"
description: "3層クライアントサーバシステムを、プレゼンテーション層・ファンクション層・データベースアクセス層の役割から整理し、2層構成との違いと選択肢の切り分け方を解説します。"
last_modified_at: "2026-08-02"
canonical_url: "https://stemtazoo.github.io/fe/three-tier-client-server/"
section: "fe"
---

## まず結論

3層クライアントサーバシステムとは、システムの役割を次の3つに分けた構成です。

```text
プレゼンテーション層
→ 入力を受け付ける・結果を表示する

ファンクション層
→ 業務処理・計算・データ加工を行う

データベースアクセス層
→ データベースを検索・登録・更新する
```

基本情報技術者試験では、次の一文で切り分けます。

> **表示はプレゼンテーション、処理はファンクション、保存・検索はデータベースアクセス。**

## 直感的な説明

3層構成は、レストランの役割分担に置き換えると分かりやすくなります。

```text
プレゼンテーション層
→ 接客担当
→ 注文を受け、料理を客へ見せる

ファンクション層
→ 調理担当
→ 注文内容に沿って料理を作る

データベースアクセス層
→ 倉庫担当
→ 必要な食材を取り出し、在庫を管理する
```

接客担当が直接倉庫へ行って食材を取り出し、そのまま料理するわけではありません。

同じように、3層クライアントサーバシステムでは、画面側のプレゼンテーション層がデータベースへ直接アクセスするのではなく、ファンクション層を通して処理します。

## 定義・仕組み

3層クライアントサーバシステムは、システムを論理的に3つの役割へ分離した構成です。

### プレゼンテーション層

プレゼンテーション層は、利用者との入出力を担当します。

主な役割は次のとおりです。

- 画面を表示する
- 入力を受け付ける
- 入力内容をファンクション層へ渡す
- 処理結果を利用者へ表示する

```text
入力する
表示する
画面を作る
→ プレゼンテーション層
```

Webシステムでは、Webブラウザや画面部分に相当します。

### ファンクション層

ファンクション層は、業務ロジックやデータ加工を担当します。

主な役割は次のとおりです。

- 入力内容を検証する
- 計算や判定を行う
- データベースへの問い合わせ内容を組み立てる
- 取得したデータを加工する
- 加工結果をプレゼンテーション層へ返す

```text
計算する
判定する
加工する
業務処理を行う
→ ファンクション層
```

アプリケーション層、アプリケーションロジック層、業務処理層と呼ばれることもあります。

### データベースアクセス層

データベースアクセス層は、データベースとのやり取りを担当します。

主な役割は次のとおりです。

- SQLを実行する
- データを検索する
- データを登録する
- データを更新・削除する
- データを保管する

```text
検索する
登録する
更新する
削除する
→ データベースアクセス層
```

試験では「データ層」と表現されることもあります。

### データの流れ

典型的な流れは次のとおりです。

```text
利用者
↓
プレゼンテーション層
↓
ファンクション層
↓
データベースアクセス層
↓
データベース
```

結果は逆向きに返ります。

```text
データベース
↓
データベースアクセス層
↓
ファンクション層で加工
↓
プレゼンテーション層で表示
```

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

## 科目Aでどう出る？

科目Aでは、各層の役割を説明する選択肢から、正しいものを選ぶ問題として出題されます。

まず、問題文の動詞を見ます。

| 問題文の表現 | 対応する層 |
|---|---|
| 入力を受け付ける | プレゼンテーション層 |
| 結果を表示する | プレゼンテーション層 |
| データを加工する | ファンクション層 |
| 業務処理を行う | ファンクション層 |
| SQLを実行する | データベースアクセス層 |
| データを検索・更新する | データベースアクセス層 |

### よくある誤答の形

```text
データベースアクセス層がデータを加工する
→ 誤り
→ 加工はファンクション層

ファンクション層がSQLを解釈する
→ 誤り
→ SQLの実行はデータベース側

プレゼンテーション層がDBへ直接問い合わせる
→ 誤り
→ 通常はファンクション層を経由する
```

### 選択肢を切る順番

```text
画面に関する処理か
→ プレゼンテーション層

業務ロジックや加工か
→ ファンクション層

DBへの保存・検索か
→ データベースアクセス層
```

## どんな場面で使う？

3層構成は、Webシステムや業務システムで広く使われます。

### Webシステム

普段使うWebシステムでは、次のように対応します。

```text
Webブラウザ
→ プレゼンテーション層

アプリケーションサーバ
→ ファンクション層

データベースサーバ
→ データベースアクセス層
```

例えば、ログイン処理では次のように動きます。

```text
利用者がID・パスワードを入力
→ プレゼンテーション層

入力値を検証し、認証処理を行う
→ ファンクション層

利用者情報を検索する
→ データベースアクセス層
```

### 保守しやすくする

役割を分離すると、一つの変更がほかの部分へ影響しにくくなります。

例えば、画面デザインだけを変える場合、業務ロジックやデータベースを大きく変更せずに済みます。

```text
画面の変更
→ プレゼンテーション層

業務ルールの変更
→ ファンクション層

保存方法の変更
→ データベースアクセス層
```

## 2層クライアントサーバとの違い

2層構成では、クライアント側が画面だけでなく、業務処理も担当することがあります。

```text
2層構成

クライアント
→ 画面 + 業務処理

データベースサーバ
→ データの保管・検索
```

一方、3層構成では、画面と業務処理を分離します。

```text
3層構成

プレゼンテーション層
→ 画面

ファンクション層
→ 業務処理

データベースアクセス層
→ データベース処理
```

比較すると、次のようになります。

| 比較 | 2層構成 | 3層構成 |
|---|---|---|
| 業務処理 | クライアント側に置かれやすい | 中間層へ分離 |
| DBアクセス | クライアントから直接行う場合がある | ファンクション層を経由 |
| 保守 | クライアントごとの変更が必要になりやすい | 層ごとに変更しやすい |
| 拡張 | 大規模化で負担が増えやすい | 負荷分散しやすい |

## 科目Bでどう使う？

科目Bでは、システムの処理の流れや、どの部分で何を行うかを読むときに役立ちます。

例えば、次のような処理があったとします。

```text
1. 画面で商品番号を入力する
2. 商品情報を検索する
3. 割引額を計算する
4. 結果を画面へ表示する
```

各処理は次のように分けられます。

```text
商品番号を入力
→ プレゼンテーション層

商品情報を検索
→ データベースアクセス層

割引額を計算
→ ファンクション層

結果を表示
→ プレゼンテーション層
```

疑似言語や設計図を読むときも、「入力・処理・保存」のどれかで考えると整理しやすくなります。

## よくある誤解・混同

### ファンクション層は画面を表示する

誤りです。

画面の表示はプレゼンテーション層です。

ファンクション層は、業務処理やデータ加工を行います。

### データベースアクセス層がデータを加工する

データベースアクセス層は、データの検索・登録・更新が中心です。

取得したデータを利用者向けに加工するのは、主にファンクション層です。

### プレゼンテーション層が直接SQLを実行する

3層構成では、通常、プレゼンテーション層からデータベースへ直接アクセスしません。

```text
プレゼンテーション層
↓
ファンクション層
↓
データベースアクセス層
```

の順に処理します。

### ファンクション層がSQLを解釈する

ファンクション層はSQL文を組み立てることがありますが、SQLを実行・解釈するのはデータベース側です。

### 3層とはサーバが必ず3台あること

誤りです。

3層は論理的な役割分担です。

1台のサーバ上に複数の層が配置される場合もあります。

```text
3層
≠
必ず3台のコンピュータ
```

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

- 3層クライアントサーバは、画面・業務処理・DB処理を分離する
- プレゼンテーション層は入力受付と結果表示
- ファンクション層は計算・判定・データ加工
- データベースアクセス層は検索・登録・更新
- SQLを実行するのはデータベース側
- プレゼンテーション層からDBへ直接アクセスしない
- 2層構成ではクライアント側が業務処理を持ちやすい
- 3層はサーバ台数ではなく、論理的な役割分担

> **表示はプレゼンテーション、処理はファンクション、保存・検索はデータベースアクセス。**
