キュー

行列のできる人気ラーメン店の待機列のように、先に並んだ人から順番に案内される、もっとも公平な通路です。

定義 キュー(Queue)とは、最初に入ったデータが最初に出てくる「先入れ先出し(First In First Out、略してFIFO)」の原則で動くデータ構造です。コンピュータの世界で、膨大なタスクやデータを順番通りにテキパキと処理する際に使われる、もっとも基本的な整理法です。

バス停の「順番待ちの列」とまったく同じです

人気の飲食店やバス停で長く伸びる列をイメージしてみてください。一番早く到着して並んだ人が最初にバスに乗り、遅れて来た人は一番後ろに並んで順番を待ちますよね。横入り(割り込み)がなければ、早く来た人から先に出発する順番は絶対に変わりません。

コンピュータでも、タスクをこのように順番通りに並べて処理する仕組みが必要です。これを先入れ先出しルールに従う「キュー」と呼びます。英語の「Queue」という言葉自体、日常会話で「列」や「順番待ちの行列」を意味します。

キューに新しいデータを末尾に追加する操作を「エンキュー(Enqueue)」、逆に先頭からデータを取り出す操作を「デキュー(Dequeue)」と呼びます。両端が開いた透明なストローの中にビー玉を入れて、反対側から押し出す様子を思い浮かべると、その仕組みがすんなり理解できますよ。

キュー構造とFIFO原理 出口(前) 入口(後) Dequeue Enqueue 1 2 3 4 FIFO: 先に入ったデータが先に出る

コンピュータはどんなところでキューを使っているの?

オフィスで1台のプリンターを複数人で共有するとき、キューが大活躍します。複数の人が同時に印刷ボタンを押すと、プリンターは届いた順にリクエストをメモリへ並べます。そして、一番最初に届いた1番目の文書から順番通りに着々と印刷を進めていきます

人気アーティストのライブチケット予約や大学の履修登録の際に見かける「アクセス待機画面」も、キューを活用した技術です。何万人ものユーザーが一斉に押し寄せると、サーバーが過負荷でダウンしてしまいます。そこでキューを使って順番待ちの整理券を配り、順番通りにサイト内へ通すことでシステムを安全に守っています。

スマホやキーボードで文字を素早くタイピングするときも、裏でキューが働いています。端末が別の重い処理をしていて画面の表示が一瞬フリーズしても、入力した文字は消えません。キーボードの入力信号がキューに順番通り保持され、フリーズが解けると入力した順番のまま画面に表示されます。

もう少し正確に言うと:スタックとの違いと派生パターン

もう少し正確に言うと、コンピュータサイエンスにおいてキューと最もよく比較される相棒が「スタック(Stack)」です。スタックはプリングルズのポテトチップス缶のように、最後に入れたものを最初に取り出す「後入れ先出し」方式です。一方、キューは両端が開いた筒のように最初に入ったデータが最初に出ていく方式である点が決定的な違いです。

実際のプログラミング環境では、基本のキューの弱点を補った様々な派生型のキューが使われています。先頭からデータが抜けることで生じるメモリの無駄をなくすため、両端をドーナツのように丸くつなげた「リングバッファ(循環キュー)」が代表例です。

また、飛行機の搭乗でサポートが必要な方や上位会員を優先して案内するように、データの重要度(優先度)に応じて処理順を決める「優先度付きキュー(Priority Queue)」も広く使われています。このようにキューは、単なる行列を超えて、コンピュータのOSやネットワーク全体を支える不可欠な屋台骨の役割を担っています。

🤔 よくある誤解

✕ 誤解

キューは途中にあるデータをいつでも自由に取り出せる。

✓ 事実

基本的なキューでは、データを取り出せるのは先頭(Front)からだけで、追加できるのも末尾(Rear)からだけです。途中のデータを取り出すには、別のデータ構造を使うか特別なルールが必要です。

🧺 日常で出会う場面

1 プリンターの印刷待ち行列(スプール)で、先にリクエストされた文書から順番に出力される状況です。
2 人気ライブのチケット予約サイトで、アクセスした順番通りに購入ページへ案内される待機システムです。
💡 つまり ひとことで

キューは、先に入ったデータを優先して順番通りに処理する「先入れ先出し(FIFO)」方式のデータ構造です。