スタックとキュー_コンピュータの心臓部
5分05秒 | アルゴリズム基礎FE
基本情報技術者試験の頻出テーマを解説した音声コンテンツです。
トランスクリプト(字幕テキスト)
こんにちは、ようこそ。今回はですね、ご提供いただいた資料をもとにスタックとキューっていう コンピュータ科学の、えーと、基本的な考え方について深掘りしていきます。 今日のミッションは、お皿洗いや行列みたいな身近な例から一歩進んで、 この2つのルールがなぜ私たちのテクノロジーの、ま、心臓部になっているのかを解き明かすことです。 え、まさに心臓部ですね。これらは単なる整理の仕方っていうだけじゃなくて、 本当に複雑なソフトを動かすための、ま、根幹にある思想なんですよ。 資料にも面白い例えが沢山ありましたから、そこを使いながら本質に迫っていきましょうか。 はい、お願いします。では早速、資料にあったお皿洗いの例から。 洗ったお皿をこう、どんどん積み重ねていくイメージですよね。 ここで素朴な疑問なんですけど、使う時ってどうしても一番上からしか取れないじゃないですか。 これってなんだか、わざと不便にしてるようにも見えるんですが、 この制約にこそ意味があるということなんですか? あ、素晴らしい質問ですね。まさにその通りで、その制約こそがスタックの全てなんです。 最後に入れたものが、最初に出てくる。専門用語だと LIFO(ライフォ)、えーと Last In First Out って言いますけど、 このルールがあるからこそ、処理の順番が保証されて、予測できる動きになるわけです。 なるほど。一番身近なのが、ウェブブラウザの戻るボタンですね。 あなたがページを見るたびに、そのページがスタックの一番上にプッシュされて、 で、戻るボタンを押すと、一番上のページがポップされる、つまり取り出されて表示されると。 なるほど、プッシュとポップですか。言葉の響きもなんかこう、上に押し込んでポンと取り出す感じが出てますね。 いやー、ブラウザの戻る機能がそんな単純な積み重ねだったとは、もっと複雑なものだとばかり思ってました。 へー、そう思いますよね。でも実はこれ、ブラウザだけの話じゃなくてですね、 あらゆるプログラムが動く仕組みそのものも、このスタックが基本になってるんです。 へぇー!コールスタックって呼ばれてるんですけど、 コンピュータの短期記憶を支える、まさに屋台骨なんですよ。 なるほどなー。LIFO 原則は、元に戻る、とか、直近のことを覚えておく、のに最適なんですね。 でも世の中ってやっぱり、順番通りに公平に処理したいことの方が多い気もします。 はい、そうですね。 例えば、印刷とか。もしスタックだったら、 最後に、お願いした人の印刷が一番に出てきちゃって、大問題ですよね。そういう時はどうするんですか? まさにそこで、もう一人の主役、キューの出番です。 資料にあった人気のラーメン屋の行列、あの例えが完璧ですね。 あー、行列! 先に並んだ人が、先にラーメンにありつける。これがキューの原則、先入先出、FIFO(フィフォ)、First In First Out です。 公平さが求められる場面で、絶対的な力を発揮しますね。 プリンターの印刷待ちっていうのが、まさにその FIFO なんですね。デジタルの行列か。 そうです。でもこれも、プリンターだけの話じゃなくてですね、 あなたがパソコンで音楽を聴きながらネットサーフィンできるのも、 OS が CPU の処理時間を、ものすごく短い単位で各アプリにキューを使って公平に割り当てて、割り当ててるおかげなんです。 あー、なるほど! これがないと、たぶんパソコンはすぐにフリーズしちゃいますね。 現代のマルチタスクっていうのは、この FIFO 原則なしには成り立たないんですよ。 面白いな。つまり、お皿を積み上げるスタックの LIFO と、 行列に並ぶキューの FIFO は、えーと、データの出入り口が同じ一番上か、それとも... 入り口と出口が、別々か、ですね。 あー、そうか!そこで全くの正反対になってるわけですね。 ええ、完璧なまとめです。どちらを選ぶかで、システムの振る舞いが決まってしまうんです。 実は私、駆け出しの頃に、サーバーへのリクエスト処理で、間違えてスタックを使ってしまったことがあって。 へぇー! 結果、一番新しいリクエストばっかり処理されて、古いリクエストが永遠に待たされるっていう大失敗をしまして。 キューの公平さが、いかに大事か、身をもって学びましたよ。 それは貴重な体験ですね。では、今回の要点をまとめますと、 スタックは LIFO、後入れ先出しで、戻るボタンみたいな機能に。 キューは FIFO、先入れ先出しで、印刷待ちみたいな公平な処理にと、 この使い分けがキモなわけですね。 ええ、その通りです。そして、最後に一つちょっと考えてみてほしいんです。 後入れ先出しと、先入れ先出し。この信じられないほどシンプルな2つのルールが、 あなたが毎日触れているあの複雑なデジタル世界の基盤を、文字通り築き上げてるんです。 次にスマホの画面で読み込み中のマークがくるくる回っているとき、 あれはただの待ち時間じゃない。その裏側で目に見えないキューが、 複雑な情報を懸命にさばいて、私たちの世界に秩序をもたらしている。 そう想像してみると、デジタルの世界がまた少し違って見えてきませんか?
このコンテンツは Web society で視聴・学習できます。