---
title: "複数装置へのジョブ割当てとは？空き時間を追うスケジューリング問題【基本情報技術者試験】"
description: "複数のプリンターや処理装置へ待ち行列の先頭からジョブを割り当てる問題について、空く時刻の追い方、ガントチャート、ラウンドロビンや最短ジョブ優先との違いをFE試験向けに解説します。"
last_modified_at: "2026-07-19"
canonical_url: "https://stemtazoo.github.io/fe/job-assignment-scheduling/"
section: "fe"
---

## まず結論

複数装置へのジョブ割当て問題では、**待ち行列の先頭から、次に空いた装置へ順番に処理を割り当てます**。

基本情報技術者試験では、次の手順で追うと解きやすくなります。

```text
1. 最初の装置台数分を割り当てる
2. 各装置の終了時刻を書く
3. 最も早く空く装置を探す
4. 次のジョブをその装置へ割り当てる
5. 全ジョブがなくなるまで繰り返す
```

重要なのは、**A、B、C、A、B、Cのように機械的に割り当てるのではなく、どの装置が先に空くかを追うこと**です。

## 直感的な説明

3人の作業者に、受付順で仕事を渡す場面を考えます。

```text
仕事の待ち行列
↓
空いた人へ先頭の仕事を渡す
↓
終わった人へ次の仕事を渡す
```

処理時間が短い仕事を担当した人は早く空くため、次の仕事も担当しやすくなります。

そのため、最終的な合計処理時間は、単純な割当て回数だけでは決まりません。

## 定義・仕組み

同じ性能の複数装置があり、待ち行列の先頭から空いている装置へジョブを割り当てる場合、各装置の**利用可能時刻**を更新しながら考えます。

例えば、装置A、B、Cがあり、処理時間が次の順で到着したとします。

```text
6, 9, 4, 5, 8, 3
```

最初の3件を割り当てます。

| 装置 | 最初のジョブ | 終了時刻 |
|---|---:|---:|
| A | 6 | 6 |
| B | 9 | 9 |
| C | 4 | 4 |

次に最も早く空くのはCなので、4件目の5分をCへ割り当てます。

```text
Cの終了時刻 = 4 + 5 = 9
```

次にAが6分で空くため、5件目の8分をAへ割り当てます。

```text
Aの終了時刻 = 6 + 8 = 14
```

その後、BとCはどちらも9分で空きます。問題文に「Aから順に空いている装置へ割り当てる」などの条件があれば、その規則に従います。

### ガントチャートで追う

文章だけで迷う場合は、横軸を時間にした図を簡単に書きます。

```text
A: [ 6 ][    8    ]
B: [    9    ][ 3 ]
C: [ 4 ][  5  ]
```

各装置の右端が、その時点での終了時刻です。

このテーマは、基本情報技術者試験の「OS」「ジョブ管理」「スケジューリング」「待ち行列」と関係します。公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できます。

## 科目Aでどう出る？

科目Aでは、処理時間の列と複数装置が示され、次のような内容を問われます。

- 各装置の合計処理時間
- 最後に処理が終わる装置
- 処理時間の長い順・短い順
- 何分後に全処理が終わるか

判断するときは、次の表を使います。

| 問題文の表現 | 見るポイント |
|---|---|
| 空いている装置へ割り当てる | 各装置の終了時刻 |
| 待ち行列の先頭から処理する | ジョブの順番は変えない |
| 同一機種・同一性能 | 処理時間をそのまま比較できる |
| Aから順に割り当てる | 同時に空いた場合の優先順 |
| 長い順・短い順 | 最終的な各装置の合計時間 |

### 解くときのメモ例

```text
初期
A=5, B=12, C=4

Cが先に空く
C=4+3=7

Aが次に空く
A=5+10=15

Cが次に空く
C=7+4=11
```

このように、装置ごとの現在の終了時刻だけを書けば、長い図を描かなくても追跡できます。

## どんな場面で使う？

この考え方は、複数の同一資源へ処理を割り当てる場面で使われます。

- 複数プリンターへの印刷要求
- 複数サーバーへの処理要求
- 複数工作機械への加工ジョブ
- 複数作業者への作業割当て
- 並列処理装置へのタスク配分

ただし、実際のシステムでは、装置性能の違い、優先度、故障、通信時間なども考慮されます。

FE試験の基礎問題では、まず問題文で指定された単純な割当て規則を正確に追うことが大切です。

## よくある誤解・混同

### 誤解1：A、B、Cの順で繰り返し割り当てる

これは必ずしも正しくありません。

```text
固定順で割り当てる
→ ラウンドロビンに近い

空いた装置へ割り当てる
→ 終了時刻を追う
```

空いた装置へ順次割り当てる問題では、装置が空く順番によって次の割当て先が変わります。

### 誤解2：処理時間が短いジョブから並べ替える

待ち行列の先頭から割り当てる条件なら、ジョブの順番は変更しません。

処理時間が短いものを優先する方式は、**最短ジョブ優先**です。

### 誤解3：割当て回数が多い装置ほど合計時間も長い

短いジョブを複数担当しても、長いジョブを1件担当した装置より合計時間が短い場合があります。

比較するのは件数ではなく、処理時間の合計です。

### 誤解4：負荷分散なら必ず各装置の合計時間が同じになる

待ち行列の順番やジョブの長さによっては、完全に均等にはなりません。

この方式は空いた装置を順次利用しますが、最終的な負荷が完全一致するとは限りません。

### ラウンドロビン・最短ジョブ優先との違い

| 方式 | 判断基準 |
|---|---|
| 空いた装置への順次割当て | 次に空く装置 |
| ラウンドロビン | A、B、Cのような固定順 |
| 最短ジョブ優先 | 処理時間が短いジョブ |
| 優先度スケジューリング | 優先度が高いジョブ |

## 確認問題（基本情報技術者試験対策）

同一性能の装置X、Y、Zがあり、すべて空いている。処理時間が待ち順に `7、5、9、4、6、3` 分のジョブを、Xから順に空いている装置へ割り当てる。各装置の合計処理時間を長い順に並べたものはどれか。

- ア. X、Y、Z
- イ. X、Z、Y
- ウ. Y、X、Z
- エ. Z、Y、X

<details markdown="1">
<summary>▶ クリックして答えと解説を見る（ここを開く）</summary>

**正解：ア**

最初に、Xへ7分、Yへ5分、Zへ9分を割り当てます。

5分後にYが最初に空くため、4分のジョブをYへ割り当てます。

```text
Y = 5 + 4 = 9
```

7分後にXが空くため、6分のジョブをXへ割り当てます。

```text
X = 7 + 6 = 13
```

9分後にはYとZが同時に空きます。問題文の「Xから順に空いている装置へ割り当てる」という規則に従い、Yへ最後の3分を割り当てます。

```text
Y = 9 + 3 = 12
```

最終的な合計は、Xが13分、Yが12分、Zが9分です。

したがって、長い順は **X、Y、Z** です。

</details>

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

- 待ち行列の先頭から、次に空いた装置へ割り当てる
- 各装置の終了時刻を更新しながら追う
- 固定順割当てと混同しない
- ジョブの順番は、問題文で許されない限り変更しない
- 比較するのは割当て回数ではなく処理時間の合計
- 同時に空く場合は、問題文の優先順に従う
