IT·テック

スタック

筒の中にきれいに重ねられたポテトチップスのように、「最後に一番上に入れたものから最初に取り出す」整理箱です。

  • 約3分
  • 図 1点
  • 2026-10-12 検証

定義

スタック(Stack)とは、コンピュータがデータを整理・管理する代表的な方法(データ構造)のひとつです。幅の狭い箱に本を下から積み上げていくように、新しく追加されたデータを一番上に重ね、取り出すときも一番上にある「直前のデータ」から順番に取り出す仕組みを指します。

お店で高く積み上げられたお皿をイメージしてみてください

飲食店の厨房に行くと、洗い終わったお皿が高く積み重なっていますよね。新しいお皿を置くときは、自然と一番上に重ねます。逆にお皿を使うときも、わざわざ一番下から引っ張り出したりせず、一番上のお皿から手に取るはずです。

コンピュータの世界でも、このようにデータを上へと積み上げていく仕組みをスタックと呼びます。最後に入ったデータが最初に出てくるという原理です。プログラミング用語では、これを後入れ先出し(LIFO:Last In, First Out)と呼びます。

私たちが普段よく使う機能の中にも、このスタックが隠れています。ウェブブラウザの「戻る」ボタンや、書類を作成するときに使う「元に戻す(Ctrl+Z)」機能などがまさにその代表例です。

コンピュータが「やるべきこと」を覚えておく仕組み

勉強中に友達から電話がかかってきて、通話中にインターホンが鳴って宅配便が届いた場面を想像してみてください。このとき、あなたは一番最後に発生した「宅配便の受け取り」を真っ先に済ませ、その後に「友達との通話を終え」、最後に「元の勉強」に戻るはずです。

コンピュータもプログラムを実行するとき、関数(特定の処理をまとめたコードのかたまり)を呼び出しながら全く同じように動きます。ある作業の途中で別の作業を呼び出すと、元の作業の場所をスタックにメモとして積み上げておくのです。このように処理の順番を記録しておく専用の場所をコールスタック(Call Stack)と呼びます。

呼び出した作業が終わると、コンピュータはスタックの一番上からメモを取り出して、直前の作業へ安全に戻ります。スタックがあるおかげで、どれほど複雑に入り組んだ処理でも混乱することなく、順番通りに元の状態へと戻ることができるのです。

もう一歩深く:あふれるとクラッシュする箱

スタックは、データを入れる操作(Push)と取り出す操作(Pop)が必ず「一番上の口」だけで行われます。そのため、一番上にあるデータの位置さえ覚えておけばよく、データの出し入れが非常に高速です。

しかし、コンピュータのメモリ内に用意されたスタックという箱の大きさは無限ではありません。もしプログラムの記述ミスによって自分自身を無限に呼び出し続けるエラー(無限再帰)が起きると、スタックに記録がどんどん積み上がり、やがて箱の外へあふれ出してしまいます。

このトラブルをまさにスタックオーバーフロー(Stack Overflow)と呼びます。世界的に有名なエンジニア向けQ&Aサイトの名前の由来にもなっているほど、プログラミングの世界では誰もが知る代表的な現象です。あふれてしまうと、コンピュータはメモリを守るためにプログラムを強制終了させます。

よくある誤解

誤解

スタックなら、真ん中にあるデータもピンポイントで自由に取り出せる。

事実

スタックは一番上にあるデータにしかアクセスできません。途中や一番底にあるデータを取り出したいときは、その上に重なっているデータを順番にすべて取り除いていく必要があります。

日常で出会う場面

  1. ウェブブラウザで「戻る」をクリックすると、直前に訪れたページから逆順に表示される。

  2. ドキュメントの作成中に「元に戻す(Ctrl+Z)」を押すと、一番最後に行った操作(入力、削除、書式変更など)からひとつずつ元に戻る。

つまり ひとことで

最後に入れたデータを最初に取り出す、「後入れ先出し(LIFO)」方式のデータ整理箱です。

作成 2025-11-11 更新 2026-10-12 検証 2026-10-12