バッファ(buffer)
速さの違うもののあいだに置く一時的な置き場。速い側が遅い側を待たずに済む。
もう少し詳しい説明
バッファは、速さや都合の違うもののあいだに置く、一時的な置き場です。
buffer は英語で「衝撃をやわらげるもの」という意味です。鉄道の車両の端に付いている緩衝器も buffer と呼ばれます。じかにぶつけず、あいだで受け止めるところが共通しています。
何が困るのか
バッファが無いとどうなるかから見ます。
印刷を考えてください。プロセッサ(命令を実行する部品)は1秒間に何億回も命令を進められます。いっぽうプリンタは、1枚印刷するのに何秒もかかります。
ここでじかにつなぐと、プロセッサはプリンタが1行受け取るのを待つことになります。待っているあいだ、ほかの仕事は止まります。速い側が、遅い側に合わせることになります。
あいだに置き場を作る
そこで、あいだに置き場を作ります。
- 速い側は、置き場へ書いたらすぐ次の仕事へ移ります
- 遅い側は、置き場から自分のペースで取り出します
速い側が待たなくなる、これがバッファを置く理由です。
印刷の場合、この置き場に印刷の内容をためておく仕組みをスプーリングと呼びます。印刷を指示したあとすぐに別の作業へ戻れるのは、これが働いているためです。
身のまわりの例
同じ仕組みは、いろいろな場所に入っています。
| 場面 | 速い側 | 遅い側 |
|---|---|---|
| 印刷 | プロセッサ | プリンタ |
| 動画の再生 | 画面に出す処理 | 回線からの受け取り |
| ファイルの保存 | プログラム | ハードディスク |
| キーボード入力 | 打つ人の手 | 受け取るプログラム |
動画を見ているときに出る「読み込み中」は、先の分をバッファにためているところです。回線の速さは一定ではないので、少し先まで貯めておいて、遅くなった瞬間を貯金で乗り切ります。
キーボードの例は、速い側と遅い側が入れ替わっています。プログラムが別の処理で忙しいときに打った文字も、バッファに入っているので消えません。どちらが速いかは、場面によって変わります。
まとめて渡せる、という効き方
待たせないことのほかに、もう1つ利点があります。1回あたりの受け渡しを大きくできることです。
ハードディスクは、1バイト(8ビットぶんのまとまり。半角1文字ぶんにあたる)書くのと1,000バイト書くのとで、かかる時間がほとんど変わりません。読み書きの位置を合わせる動作に時間がかかるためです。
1バイトずつ1,000回渡すと、位置合わせが1,000回起きます。バッファに1,000バイトたまるまで待ってから1回で渡すと、位置合わせは1回で済みます。
キャッシュとの違い
ここが試験で問われるところです。どちらも「あいだに置く」のに、目的が違います。
| 何のために置くか | 中身 | |
|---|---|---|
| バッファ | 速さの差を埋めるため | 通り過ぎていくデータ |
| キャッシュメモリ | また使うため | 取っておくデータ |
バッファのデータは、渡したら用済みです。印刷し終わった内容を、置き場に残しておく意味はありません。
キャッシュ(一度使ったものを近くに置いておき、次に備える仕組み)のデータは、渡したあとも残します。同じものをまた読むかもしれないためです。
通り道か、置き場か。 ここで分かれます。
中身の並び方
バッファの中では、たいてい入れた順に取り出します。印刷を指示した順に紙が出てこないと困ります。
この「先に入れたものから先に出す」並べ方がキュー(先入先出のデータ構造)です。バッファは場所の話、キューは順番の話で、組み合わせて使われます。
あふれたときに起きること
バッファには決まった大きさがあります。入れる側が速すぎて取り出しが追いつかないと、いっぱいになります。
まともに作られたプログラムは、いっぱいになったら入れる側を待たせます。
いっぽう、大きさを確かめずに書き込んでしまう作りだと、置き場の外まではみ出して書くことになります。これがバッファオーバフローです。はみ出した先には別のデータが置かれているので、プログラムの動きを乗っ取る攻撃に使われます。セキュリティの分野で出てくる用語です。
試験ではこう出る
科目A(旧・午前)のソフトウェア分野(OSの入出力の管理)で出ます。ITパスポートでも出ます。
いちばん多いのは、キャッシュと並べて説明を選ばせる問題です。「速度差を吸収するために一時的にデータを保持する」が答えの向きになります。再利用と書かれていればキャッシュです。
スプーリング(印刷の内容をいったんためておき、装置の空き具合に合わせて送り出す仕組み)は、単独でも出ます。「低速な装置への出力を補助記憶にためて、プログラムを待たせない」という表現が答えになります。
セキュリティの分野では、バッファオーバフローとして出ます。対策は「入力の長さを確かめる」です。バッファそのものの話ではなく、大きさを確かめない作りが原因だと押さえてください。
関連する用語
- キュー
- 先に入れたものから先に出す構造。バッファの中身は、たいていこの形で並ぶ
- キャッシュメモリ
- よく使うものを近くに置いておく仕組み。目的が「速さの差」ではなく「再利用」の点で違う
- オーバーヘッドと多重度
- 本来の仕事ではない手間。待ち時間を減らす工夫という点でつながる
- ターンアラウンドタイムとレスポンスタイム
- 速さの測り方。バッファを挟むと、全体で片づく量と1件あたりの速さが分かれる
ミニクイズ
バッファの役割の説明として、最も適切なものはどれか。
正解は 3番:速度や処理の間隔が異なる装置やプログラムのあいだにデータを一時的に蓄え、待ち時間を減らす
バッファは、速さや都合の違うもののあいだに置く一時的な置き場です。速い側はバッファへ渡した時点で次の仕事に移れるので、遅い側を待たずに済みます。一度使ったものを近くに置いて次に備えるのはキャッシュで、目的が再利用である点が違います。主記憶を大きく見せるのは仮想記憶、誤りを検出する符号を付けるのはパリティなどの誤り検出で、いずれも別の仕組みです。
この分野をまとめて解く → システム構成要素とソフトウェアのミニテスト(全28問)
最終更新:2026-11-05