【きゅー】

キュー とは?

💡 「先に入ったものを先に出す」FIFO型のデータ構造、待ち行列の仕組み
📌 このページのポイント
FIFO:先入れ先出し 要素1 (最初) 要素2 (2番目) 要素3 (最後) 要素4 (追加) Enqueue (入口) 要素1 (取出) Dequeue (出口) ← 先に入れた要素が先に出る方向 追加の順番 1 要素1 2 要素2 3 要素3 4 要素4 用途例:印刷待ちキュー・タスクスケジューラ・メッセージキュー
最初に入れたものが最初に取り出せるデータ構造
ひよこ ひよこ

キューって何?

ペンギン先生 ペンギン先生

先に入ったものを先に処理する「待ち行列」のデータ構造。コンビニのレジの列と同じで、最初に並んだ人が最初に処理される(FIFO)。印刷ジョブをスプールに溜めて順番に印刷したり、メッセージキューにタスクを積んで非同期に処理したりするのに使われる。

ひよこ ひよこ

スタックとどう違うの?

ペンギン先生 ペンギン先生

スタックは「後入れ先出し(LIFO)」。積み重ねたお皿のイメージで、最後に積んだものを最初に取り出す。関数の呼び出し履歴(コールスタック)・ブラウザの戻るボタン(ページ履歴)がスタックの例。キューとスタックデータ構造の基本的な対として覚えておくと良い。

ひよこ ひよこ

AWSのSQSって何?

ペンギン先生 ペンギン先生

AWS Simple Queue Serviceの略。クラウドのマネージドメッセージキューサービス。例えばユーザーが画像をアップロードしたとき「変換タスク」をSQSに入れておき、バックエンドのワーカーが順番に取り出して処理する非同期アーキテクチャを簡単に作れる。

ひよこ ひよこ

優先度付きキューって何?

ペンギン先生 ペンギン先生

通常のキューはFIFOだけど、優先度付きキューは「優先度の高いものから先に処理される」んだ。病院の救急外来で重症者を先に診るのと同じイメージ。アルゴリズムではダイクストラ法(最短経路探索)やA*探索で使われるよ。内部実装にはヒープというデータ構造が使われることが多い。

ひよこ ひよこ

メッセージキューって障害が起きたときどうなるの?

ペンギン先生 ペンギン先生

ここが設計の肝だね。SQSには「可視性タイムアウト」という仕組みがあって、ワーカーがメッセージを取得しても一定時間内に処理完了しないと、メッセージがキューに戻されて別のワーカーが再処理するんだ。さらに何度もリトライして失敗したメッセージは「デッドレターキュー」に送られて、後から人間が確認できるようになっているよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
キューって出てきたら「先入れ先出し(FIFO)のデータ構造メッセージキューやタスク管理に広く使われる」と思えばOK!
📖 おまけ:英語の意味
「Queue」 = 待ち行列・列に並ぶ
💬 英語の「列に並ぶ」という意味のQueue。コンピュータ科学では1960年代からOSのプロセス管理・プリンタスプールなどに使われてきた概念
← 用語集にもどる