---
title: "M/M/1待ち行列モデルとは？前提条件と到着率・サービス率の見分け方【基本情報技術者試験】"
description: "M/M/1待ち行列モデルを、到着過程・サービス時間・窓口数の3点から整理し、到着率λ、サービス率μ、利用率ρ、有限バッファとの違いを解説します。"
last_modified_at: "2026-08-02"
canonical_url: "https://stemtazoo.github.io/fe/mm1-queueing-model/"
section: "fe"
---

## まず結論

M/M/1待ち行列モデルとは、**要求がランダムに到着し、処理時間もランダムで、サービス窓口が1つの待ち行列モデル**です。

M/M/1の3文字は、次の意味を持ちます。

```text
最初のM
→ 到着がマルコフ的
→ 一般にはポアソン到着として扱う

2番目のM
→ サービス時間がマルコフ的
→ 一般には指数分布として扱う

1
→ サービス窓口が1つ
```

基本情報技術者試験では、まず次の点を確認します。

```text
到着が現在の混雑状況に左右されないか
窓口が1つか
処理順が原則として先着順か
到着率がサービス率を下回っているか
```

覚える一文はこれです。

> **M/M/1は、ランダム到着・ランダム処理時間・窓口1つ。**

## 直感的な説明

コンビニのレジが1台だけある状況を考えます。

```text
客が店に来る
→ 要求の到着

店員が会計する
→ サービス

レジが1台
→ 窓口数1
```

客は一定間隔ではなく、ばらばらに来店します。

また、会計時間も購入点数によって変わります。

```text
到着時刻
→ ばらばら

会計時間
→ 客ごとに異なる

レジ
→ 1台
```

このような状況を単純化して分析するのがM/M/1です。

ただし、客が行列の長さを見て入店をやめる場合は、到着が混雑状況に依存します。

```text
空いているときだけ来る
混んでいると来ない
```

この場合、単純なM/M/1の前提から外れます。

## 定義・仕組み

### 待ち行列モデルとは

待ち行列モデルは、サービスを待つ要求がどの程度たまるか、どのくらい待つかを確率的に分析するモデルです。

```text
要求が到着する
↓
窓口が空いていれば処理
↓
窓口が使用中なら待ち行列へ並ぶ
↓
順番が来たら処理
```

対象は人に限りません。

- プリンターへの印刷要求
- Webサーバへのアクセス
- CPUへの処理要求
- コールセンターへの電話
- レジに並ぶ客
- 製造設備への加工要求

なども待ち行列として考えられます。

### 最初のM：到着過程

最初のMは、要求がランダムに到着することを表します。

MはMarkovianの頭文字です。

FE試験では、次のように理解すると十分です。

```text
要求の到着
→ 一定間隔ではない
→ 過去や現在の混雑状況に強く依存しない
→ ランダムに発生する
```

一般には、単位時間当たりの到着件数をポアソン分布、到着間隔を指数分布として扱います。

### 2番目のM：サービス時間

2番目のMは、1件の要求を処理する時間もランダムであることを表します。

```text
要求ごとに処理量が異なる
↓
処理時間も異なる
```

例えばプリンターなら、

```text
準備に必要な時間
＋
印刷枚数に応じた時間
```

によって、要求ごとの処理時間が変わります。

M/M/1では、サービス時間を指数分布に従うものとして扱います。

### 1：サービス窓口数

最後の1は、サービスを提供する窓口が1つであることを表します。

```text
プリンター1台
レジ1台
サーバ1台
担当者1人
```

窓口が2つならM/M/2、3つならM/M/3と表します。

### 先着順

基本的なM/M/1では、到着した順番に処理することを前提にする場合が多いです。

```text
先に到着した要求
→ 先に処理する
```

この処理順をFCFSといいます。

```text
FCFS
=
First Come, First Served
```

FIFOと似ていますが、待ち行列理論ではFCFSという表現もよく使います。

### 待ち行列の容量

標準的なM/M/1モデルでは、待ち行列の容量を十分大きい、または無限と仮定します。

そのため、

```text
バッファが満杯
→ 新しい要求を拒否する
```

という条件を明示的に扱う場合は、有限容量モデルを考えます。

代表例はM/M/1/Kです。

```text
K
→ システム内に存在できる要求数の上限
```

M/M/1とM/M/1/Kは、区別して覚える必要があります。

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

## 到着率λとサービス率μ

M/M/1では、次の2つの量が重要です。

```text
λ（ラムダ）
→ 単位時間当たりの平均到着数

μ（ミュー）
→ 単位時間当たりの平均サービス数
```

例えば、

```text
1分間に平均4件到着
→ λ = 4

1分間に平均5件処理
→ μ = 5
```

です。

### 安定条件

待ち行列が際限なく増えないためには、サービス能力が到着量を上回る必要があります。

```text
λ < μ
```

到着率がサービス率以上になると、平均的には処理が追いつきません。

```text
λ = 6
μ = 5

到着
→ 1分に6件

処理
→ 1分に5件
```

この場合、毎分平均1件ずつ待ち行列が増えることになります。

## 利用率ρ

利用率は、窓口がどの程度忙しいかを表します。

```text
ρ = λ ÷ μ
```

例えば、

```text
λ = 4
μ = 5

ρ = 4 ÷ 5
  = 0.8
```

なので、利用率は80%です。

```text
ρが小さい
→ 窓口に余裕がある

ρが1に近い
→ 窓口が混雑しやすい
```

M/M/1では、ρが1に近づくほど待ち時間が急激に増えます。

## 科目Aでどう出る？

科目Aでは、M/M/1の前提条件を問う問題や、到着率・サービス率から待ち時間を求める問題が出題されます。

### 前提条件を問う問題

次のような記述があれば注意します。

```text
混雑を見て要求を出す
→ 到着が状態に依存する
→ 単純なM/M/1から外れる

優先度によって順番を変える
→ 先着順ではない

窓口が複数ある
→ M/M/1ではない

バッファ満杯で受付を止める
→ 有限容量モデルを検討
```

### 選択肢の切り方

| 記述 | 判断 |
|---|---|
| 要求はランダムに到着する | M/M/1に合う |
| 1台のプリンターで処理する | M/M/1に合う |
| 到着順に処理する | 基本モデルに合う |
| 混雑を見て要求時刻を変える | 到着の独立性に反する |
| バッファに上限がある | M/M/1/Kに近い |
| 緊急度で処理順を変更する | FCFSではない |

### 問題文の対応付け

プリンターの問題なら、次のように読み替えます。

```text
印刷要求
→ 客の到着

プリンター
→ サービス窓口

印刷処理
→ サービス

印刷待ちデータ
→ 待ち行列
```

この対応付けができると、問題文を整理しやすくなります。

## 待ち時間の基本式

M/M/1では、平均待ち時間や平均滞在時間を求める式があります。

### 平均系内時間

要求が到着してから、処理を終えるまでの平均時間です。

```text
W = 1 ÷ (μ - λ)
```

### 平均待ち時間

待ち行列に並んでいる時間だけを表します。

```text
Wq = λ ÷ {μ(μ - λ)}
```

### 平均系内要求数

処理中と待機中を合わせた平均要求数です。

```text
L = λ ÷ (μ - λ)
```

### 平均待ち要求数

待ち行列に並んでいる平均要求数です。

```text
Lq = λ² ÷ {μ(μ - λ)}
```

FE試験では、式そのものだけでなく、何を求めているかを区別することが大切です。

```text
到着から処理完了まで
→ 系内時間

処理開始まで
→ 待ち時間

処理中を含む要求数
→ 系内要求数

待っている要求だけ
→ 待ち要求数
```

## リトルの法則

待ち行列では、リトルの法則も重要です。

```text
L = λW
```

意味は次のとおりです。

```text
平均系内要求数
=
平均到着率
×
平均系内時間
```

同様に、待ち行列だけを考えると、

```text
Lq = λWq
```

です。

式を暗記するより、

> **数 = 1時間当たりの到着数 × 1件が滞在する時間**

と考えると理解しやすくなります。

## M/M/1と有限容量モデルの違い

標準的なM/M/1では、待ち行列の容量に上限がないと考えます。

一方、プリンターのバッファや通信機器のキューには、実際には上限があります。

```text
標準M/M/1
→ 待ち行列容量は無限と仮定

M/M/1/K
→ システム内の要求数に上限Kがある
```

上限に達した場合、

```text
新しい要求を拒否する
要求を破棄する
再送させる
```

などの処理が必要になります。

試験では、「受付を中断する」「到着した要求を失う」という表現があれば、有限容量モデルを疑います。

## データ構造のキューとの違い

同じ「キュー」という言葉が使われますが、目的が異なります。

```text
データ構造のキュー
→ データをFIFOで管理する仕組み

待ち行列理論
→ 待ち時間や混雑を確率的に評価するモデル
```

共通点は、先に到着したものから処理する点です。

| テーマ | 主な目的 |
|---|---|
| キュー | データの格納・取り出し |
| 待ち行列理論 | 性能・待ち時間・混雑の予測 |

データ構造のキューでは、到着率やサービス率は通常扱いません。

## どんな場面で使う？

### プリンター共有

複数のPCが1台のプリンターへ印刷要求を送る場合、印刷待ち時間を見積もるために使えます。

### Webサーバ

アクセス要求がランダムに到着し、1台のサーバが順番に処理する状況をモデル化できます。

### コールセンター

電話の到着数と、オペレータの処理能力から、待ち時間や必要人数を検討します。

ただし、オペレータが複数人ならM/M/cモデルになります。

### 製造設備

加工要求が1台の設備へ集まる場合、設備の利用率や滞留時間を見積もることができます。

## よくある誤解・混同

### Mは単に「ランダム」という意味

FE試験ではランダムと考えてよいことが多いですが、厳密にはMarkovianを表します。

```text
到着
→ ポアソン過程

到着間隔
→ 指数分布

サービス時間
→ 指数分布
```

と整理すると正確です。

### 先着順なら必ずM/M/1

先着順だけでは足りません。

```text
到着がランダム
サービス時間がランダム
窓口が1つ
```

も必要です。

### 混雑を見て要求を控えても問題ない

混雑を見て到着時刻を変えると、到着が現在の状態に依存します。

これは単純なM/M/1の仮定から外れます。

### バッファ上限があっても標準M/M/1

厳密には違います。

上限がある場合は、M/M/1/Kのような有限容量モデルを考えます。

### λがμ以下なら安全

`λ = μ` では余裕がなく、平均待ち時間は発散します。

安定条件は、

```text
λ < μ
```

です。

### 利用率が高いほど効率がよい

利用率が高すぎると、少しの変動で待ち時間が大きくなります。

```text
利用率が100%に近い
→ 設備はよく使われる
→ ただし待ち時間が急増する
```

効率と待ち時間のバランスが必要です。

### 印刷量に比例する処理時間はM/M/1に反する

要求ごとに処理時間が異なること自体は、M/M/1の考え方に反しません。

ただし、実際の処理時間分布が指数分布と大きく異なる場合、別のモデルの方が適切なことがあります。

## 科目Bでどう使う？

科目Bでは、到着率・サービス率・利用率を変数として扱う処理につながります。

Pythonで利用率と平均系内時間を求めると、次のようになります。

```python
arrival_rate = 4.0   # λ：1分当たり4件
service_rate = 5.0   # μ：1分当たり5件

if arrival_rate >= service_rate:
    raise ValueError("到着率はサービス率より小さくする必要があります。")

utilization = arrival_rate / service_rate
system_time = 1 / (service_rate - arrival_rate)

print(f"利用率: {utilization:.1%}")
print(f"平均系内時間: {system_time:.2f}分")
```

出力例は次のとおりです。

```text
利用率: 80.0%
平均系内時間: 1.00分
```

科目Bでは、まず入力値が安定条件を満たしているか確認するのが大切です。

```text
λ < μ
→ 計算できる

λ >= μ
→ 待ち行列が安定しない
```

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

- M/M/1は、ランダム到着・ランダム処理時間・窓口1つ
- 最初のMは到着過程を表す
- 2番目のMはサービス時間を表す
- 1は窓口数を表す
- 基本モデルでは先着順を仮定することが多い
- 混雑状況を見て到着を変えると、単純なM/M/1から外れる
- 標準M/M/1は待ち行列容量を無限と仮定する
- 有限容量はM/M/1/Kで表す
- 到着率はλ、サービス率はμ
- 安定条件は `λ < μ`
- 利用率は `ρ = λ ÷ μ`
- ρが1に近いほど待ち時間が急増する
- データ構造のキューとは目的が異なる

> **M/M/1を見たら、到着・処理時間・窓口数の3点を確認する。**
