Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コンピュータサイエンスにおけるキューとスタックの解説
Search
Satoshi Kaneyasu
January 28, 2024
Programming
0
1.1k
コンピュータサイエンスにおけるキューとスタックの解説
Satoshi Kaneyasu
January 28, 2024
Tweet
Share
More Decks by Satoshi Kaneyasu
See All by Satoshi Kaneyasu
フルリモートで社内にどうやって自分の居場所を作るのか?
satoshi256kbyte
1
300
プロジェクトマネージャーがGitHub Copilotのエージェンモードを使い始めました
satoshi256kbyte
1
130
そもそもAWS Configの設定変えられたらどうするの?Amazon EventBridgeでマネコンの操作を監視する
satoshi256kbyte
1
110
変化の激しい時代における、こだわりのないエンジニアの強さ
satoshi256kbyte
1
1.6k
密集、ドキュメントのコロケーション with AWS Lambda
satoshi256kbyte
1
270
【PHP】破壊的バージョンアップと戦った話〜決断と説得
satoshi256kbyte
0
260
今更聞けないセキュリティ用語の基礎知識 2025新春
satoshi256kbyte
0
180
AWS re:Invent 2024個人的まとめ
satoshi256kbyte
0
320
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
610
Other Decks in Programming
See All in Programming
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
930
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
13
4.7k
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
130
Is Xcode slowly dying out in 2025?
uetyo
1
280
PipeCDのプラグイン化で目指すところ
warashi
1
280
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
560
生成AI時代のコンポーネントライブラリの作り方
touyou
1
230
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
2
10k
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
2
400
すべてのコンテキストを、 ユーザー価値に変える
applism118
3
1.3k
#QiitaBash MCPのセキュリティ
ryosukedtomita
1
1.4k
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
140
Featured
See All Featured
Building Adaptive Systems
keathley
43
2.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
A Modern Web Designer's Workflow
chriscoyier
695
190k
Typedesign – Prime Four
hannesfritz
42
2.7k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
How GitHub (no longer) Works
holman
314
140k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Transcript
コンピュータサイエンスにおける キューとスタックの解説 2024.01.31 SATOSHI KANEYASU
⾃⼰紹介 ⽒名︓兼安 聡 職種︓クラウドエンジニア 最近のお仕事︓DevOpsの推進 趣味︓サックス、筋トレ、CS ゲーム 資格︓ X(Twitter)︓@satoshi256kbyte 1/9
追加
はじめに • また情報処理技術者試験の季節が近づいてきてますね。 • 個⼈の感想ですが、勉強は意味を知らないと頭に⼊りません。 • 昔はピンとこなかった、キューをここ数年使いまくってるので、 その解説をします。 • ついでにスタックも解説します。
キュー(Queue)とスタック(Stack) • どちらもデータの格納・取り出し⽅法の⽤語 • それぞれ、データの格納・取り出しのルールが決まっている • ルールが決まっているのがポイント • ルールが決まっている=保証されている
キュー(Queue) • 先⼊れ先出し⽅と呼ばれるデータ格納⽅式 • First-In-First-Out、略してFIFO • 現実世界で⾔うと、病院の受付番号など • 病院に⾏く •
受付して、受付番号をもらう • 受付番号順に診察
キューは受付番号のようなもの
キューがなかったどうなるか︖ • 同時に対処できる数を超えて訪問者を受けいれてしまう • 訪問者がいつまで待てばいいのかわからない • ↑による焦りから更なる混雑を招く • 多少処理時間が伸びたとしても、 負荷を平準化し安定化させることが必要なシチュエーションがある
スタック(Stack) • 後⼊れ先出し⽅と呼ばれるデータ格納⽅式 • Last-In-First-Out、略してLIFO • 現実世界で例えるのは難しい • ブラウザの戻る •
エディタのUndo機能 • プログラムでエラーが発⽣した時のスタックトレース
ブラウザの戻るの例 番号 訪問履歴 4 https://example.com/page2 3 https://example.com/page1 2 https://example.com/calendar 1
https://example.com 現在のページ︓https://example.com/page3
キューの使⽤例 – キュー未使⽤ DOWNLOAD Server • 画⾯の内容のPDFでダウンロードする機能を考える
キューの使⽤例 – DLする⼈が増えたら DOWNLOAD Server • 受け付けたら⼀気にPDFをDLさせる⽅式だと混雑しやすい • 受け付ける •
PDFを作成する • 受け付ける • PDFを作成する • 受け付ける • PDFを作成する • 受け付ける • PDFを作成する ❌ ❌ 重たい処理が、 同時発⽣する混雑する
キューの使⽤例 – 混雑は混雑を⽣む DOWNLOAD Server • 混雑が発⽣すると何度も試す⼈が増えて余計混雑を⽣む • 受け付ける •
PDFを作成する • 受け付ける • PDFを作成する • 受け付ける • PDFを作成する • 受け付ける • PDFを作成する ❌ ❌ ❌ ❌ ❌ ❌ ❌
キューの使⽤例 – キューを活⽤する Server • キューを活⽤してDOWNLOADの受付とPDF出⼒を分ける • 受け付ける • PDFを作成する
• 受け付ける • 受け付ける • 受け付ける キュー DOWNLOAD4 DOWNLOAD2 DOWNLOAD2 DOWNLOAD1 4 DOWNLOAD
キューの使⽤例 – システムを分ける Server • キューを活⽤してDOWNLOADの受付とPDF出⼒を分ける • 受け付ける • PDFを作成する
• 受け付ける • 受け付ける • 受け付ける キュー DOWNLOAD4 DOWNLOAD2 DOWNLOAD2 DOWNLOAD1 4 DOWNLOAD
まとめ • キューは先⼊れ先出し、スタックは後⼊れ先出し • 多数の⼈が使うシステムだと、キューはかなり有⽤ • クラウドとも相性が良い • クラウド絡めるとキューはめちゃめちゃ使います。 •
何に使うかわからない技術があれば教えてください できる限り答えられるようにします