キュー (Queue)

きゅー / Queue (FIFO)

作成日: 2024-01-07 | 最終更新: 2026-01-07
このページで分かること
  • キューとは?FIFO(先入れ先出し)
  • Enqueue・Dequeueの基本操作
  • キューの仕組みを体験するデモ
  • 日常例(レジの行列、印刷ジョブ)
  • スタックとの違い、実践での使い方

概要

先に入れたものが、先に出ていくという仕組みのデータ構造のこと。「FIFO (First In, First Out)」とも呼ばれます。レジの行列のように、並んだ順番通りに処理されるのが特徴です。

キューの仕組みを体験してみよう

下のデモでキューの動きを体験できます。実際に手を動かすことで、「先入れ先出し」の仕組みが理解しやすくなります。

客1
客2

ポイント

  • Enqueue (エンキュー): 列の末尾にデータを追加すること。
  • Dequeue (デキュー): 列の先頭からデータを取り出すこと。
  • 印刷ジョブの管理やタスク処理など、順番が重要な場面で使われます。

日常生活でのキューの例

キュー構造は日常のあらゆる場面で使われています。意識していないだけで、私たちは毎日キューに囲まれて生活しているのです。

1. レジの行列

スーパーやコンビニのレジに並ぶ行列は、まさにキューそのものです。先に並んだ人から順番に会計を済ませていきます。 割り込みをすると怒られるのは、キューのルール(FIFO)を破っているからです。

2. 印刷ジョブの待機列

オフィスで複数の人が同じプリンターに印刷指示を出した場合、印刷ジョブはキューに入ります。 先に送った印刷データから順番に印刷されるので、自分の番が来るまで待つ必要があります。

3. 電話の着信待ち

コールセンターに電話をかけると「ただいま電話が大変混み合っております。順番にお繋ぎいたします」というアナウンスを聞くことがありますが、 これもキューの仕組みです。電話をかけた順番に対応されます。

4. アプリのタスク処理

SNSアプリで「いいね」を連打すると、裏側ではそれらのリクエストがキューに入り、順番に処理されます。 サーバーが一度に処理できる量には限界があるため、キューで順番待ちをさせることでシステムを安定させています。

5. YouTubeの再生キュー

YouTube Musicやプレイリストで「次に再生」をタップすると、その曲がキューに追加されます。 現在の曲が終わったら、キューの先頭から順番に再生されていく仕組みです。

コードで実装してみよう

さっきの「レジの行列」の例を、そのままコードで実装してみましょう。 コンビニのレジに並ぶ人を、キューを使って管理するコードです。

このコードで実装していること:

  • レジに並ぶ人をキューで管理する
  • 新しい人が来たら列の後ろに追加(Enqueue)
  • 会計が終わった人を列の先頭から取り出す(Dequeue)
  • 先に並んだ人から順番に会計する仕組み
レジの行列をコードで実装 (JavaScript)
// コンビニのレジに並ぶ人を管理するキュー
const registerQueue = [];

// お客さんが来たら列の後ろに並ぶ(Enqueue)
registerQueue.push('田中さん');
registerQueue.push('佐藤さん');
registerQueue.push('鈴木さん');

console.log('現在の列:', registerQueue);
// 出力: ['田中さん', '佐藤さん', '鈴木さん']

// 会計が終わった人を列の先頭から取り出す(Dequeue)
const servedCustomer = registerQueue.shift();
console.log('会計終了:', servedCustomer); // "田中さん"

console.log('残りの列:', registerQueue);
// 出力: ['佐藤さん', '鈴木さん']

// また新しいお客さんが来たら...
registerQueue.push('山田さん');
console.log('新しい列:', registerQueue);
// 出力: ['佐藤さん', '鈴木さん', '山田さん']

// 次の会計
const nextCustomer = registerQueue.shift();
console.log('次の会計:', nextCustomer); // "佐藤さん"
// → 先に並んでいた佐藤さんが先に会計できる

💡 ポイント:このコードは、さっき説明した「レジの行列」の仕組みをそのまま実装しています。 先に並んだ人(先に追加したデータ)から順番に処理されるのが、キューの特徴です。

関連用語・比較

用語名構造特徴
キュー先入れ先出し (FIFO)レジの列のように、順番通りに処理する。
スタック後入れ先出し (LIFO)お皿の山のように、後から置いたものを先に取る。

よくある質問(FAQ)