キュー(queue)とは?:コンピュータでも「待ち行列」は重要|データ分析用語を解説

AUTHOR :   ギックス

本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)

「待つ」という事には「制御」が必要です

本日は「キュー(queue)」という言葉を解説します。queueという言葉を和英辞典で調べると、まさに「待ち行列」という言葉が出てきます。人間は賢いので待つ時には待ち行列を勝手に作りますが、コンピュータに対しては「このデータは待ち行列を作って順番に処理してね?」と制御してあげなければなりません。そのような仕組みを「キュー」といいます。コンピュータでデータを処理するシーンではいたる所にこの「キュー」が存在します。

  • オフィスにおけるプリンタの印刷待ち
  • インターネットで航空券を予約した時のキャンセル待ち
  • 病院で受付をした後の診察待ち

これらすべてがキューを使った処理になります。

キューの仕事は「列に並んでお待ちください」「おまたせしました、こちらへどうぞ」→でもここに「匠の技」がある。

今回はこの「キュー」をみなさんの身近にある例を挙げて説明します。コンビニです。みなさんはコンビニで以下のような光景をご覧になったことがあると思います。キュー2
お客のAさんBさんが会計待ちの列に並んでいます。この列をキューといいます。お客Cさんはまだ買い物を続けています。カウンターにはレジが3台あってお客さんをさばいています。この状態によってお客AさんBさんは順番にお会計をする事ができます。これをキューシステム(またはキューサービス)といいます。
ではこれから、このキューサービスの具体的な処理を見ていきましょう。

キューへのデータ投入:「列の最後尾に並んでお待ちください」

お昼時のコンビニやレジ回りの導線が分かりにくいコンビニではこうアナウンスしている店員さんもいると思います。またお店によっては床に矢印をペイントして待ち行列(キュー)を示している所も多いですね。上記の例では「お客Cさんがお会計をしようと思った」時に必要な処理です。ここでCさんがレジ3に直接向かってしまったり、AさんとBさんの間に割り込んでしまったのではトラブルになりかねません。Cさんが「お会計」という処理を行うために「列の最後尾へならばせてさしあげる事」これがキューサービスにおける「データ投入処理」です。

キューからのデータ取出:「先頭のお客様、こちらのレジへどうぞ」

これはみなさんおなじみですよね。これによってお客様はやっとレジでお会計をすることができます。待ち行列(キュー)からお客様が出てくるので、これをキューサービスにおける「データ取出処理」といいます。これだけだと簡単な処理のように思うのですが、実はここに匠の技があります。

匠の技1:排他機能を用いた一貫性の担保

まず「レジ1」と「レジ2」から同時に「こちらへどうぞ」の声が上がった場合です。コンビニで人間をさばくシーンではこれはほとんど問題になりません。コンビニではお客さんが勝手に判断して好きなレジに行けばOKだからです。またコンビニ1店舗では1秒間に100人のお客さんをさばくような処理が求められていない事も理由です。ですがインターネット上の待ち行列処理では人間の反射神経では追いつかないほどの大量データを高速に処理する事が求められます。この場合、コンピュータのキューサービスには「お客Aさんはレジ1がお会計処理をする。同時にAさんに声をかけたレジ2は、もうAさんを処理しない。次のBさんを処理する。そうしないとAさんのお会計処理がダブってしまうから。」という処理が求められます。これを「排他処理」といいます。キューサービスにはこの排他機能によってデータの「一貫性」を担保する処理が求められるのです。

匠の技2:エラー発生時における柔軟な対応

次の技は、何か予期せぬエラーが起こった場合の処理です。例えば「お客Aさんのお会計中に突然レジ1が壊れてしまった」時です。この場合Aさんは他のレジでお会計をしなければなりませんが、どうすればよいのでしょう?Aさんに「申し訳ありませんが、もう一度列の最後尾からならびなおしてください」とお願いしたらAさんはきっと怒ってしまいますよね?レジ2もしくはレジ3ができるだけ早急にAさんのお会計処理を行う必要があるのです。ここではコンビニでも店員さんの臨機応変な対応が求められると思いますが、コンピュータのキューサービスにおいても同様の対応が求められます。

ビッグデータを処理するためにキューサービスはますます重要に

今回は「キュー」について説明させていただきました。このキューサービス、一見皆さんの目には「簡単・地味」な処理と映るかもしれません。しかし、昨今「ビッグデータ活用」を必要とする業務において、

  • 大量データを
  • 高速に
  • 一貫性を担保した状態で
  • 安全に

処理しなければならないという要求が急激に高まる中で、この「キューサービス」に関する重要度が増してきています。
データ分析用語:索引

SERVICE