バッファ

データのやり取り

コンピュータ業界で使われる場合のバッファとは、データの入出力時において入力と処理の間にある「隙間」を埋めるための「ゆとり」のことです。

データ入出力において「バッファ」がないと、データの送受信がスムーズに行われないでしょう。

ちなみにコンピュータの分野以外でも「バッファ」という言葉が使われることがあります。ビジネス分野で使われるバッファとは、時間やコストの余裕を指す言葉で、「バッファがあるので大丈夫です」といった使われ方をすることがあります。

※本ページにはPRが含まれます。

バッファとは「緩衝器」という意味

バッファとは、衝突の衝撃を和らげるための「緩衝材」を意味する言葉です。データ間の、電子機器の接続間のやり取りで起こる衝撃を緩衝します。

電子装置での「記憶領域」

わかりやすいのが、プリンタで印刷する際の例です。プリンタに印刷する命令を送っても、実際に印刷するスピードには剥離があります。プリンタが印刷するスピードのほうが遥かに早いからです。

ですから、プリンタはある程度PCから送られたデータを記憶装置に記録しておきます。そして実際に印刷する際、印刷が滞らないようにするのです

バッファは、この時PCから送られてきたデータを記録しておく、「記憶装置」を指します。印刷するスピードと、データが送られてくるスピードの差を緩める、鑑賞する役割を担っているのです。

バッファがないとデータ処理が滞る

バッファは「ゆとり」の意味を持ちます。

もしプリントアウトの際バッファがないと、スムーズに印刷は行われません。普段我々が印刷を行う際不自由さを感じてないのはこの、バッファのおかげだったのです。

動画再生におけるバッファ

バッファがよく使われるのが動画再生時です。「バッファ処理中」という言葉が、プレーヤーに表示されるのをみたことがあるのではないでしょうか。

動画再生のバッファが用いられるのは、「ストリーミング再生」を行う際のこと。ストリーミング再生の良いところは、動画すべてのデータを読み込んでいない状態で、動画を再生できるというもの。ネットワーク規格の性能が向上することで、動画のストリーミング再生需要はさらに上がっています。

動画において、「バッファ」つまり読み込んだデータにゆとりを持っておくことで、動画再生をスムーズにすることができます。バッファで動画データを蓄えておくことで、たとえ回線が止まったとしても、スムーズに動画再生を行うことが可能となるのです。

変数のバッファ

文字列を格納するための変数としても、このバッファが使われます。

元々は、「とりあえずデータを格納しておくための変数」として、「buffer」が使われていました。しかし後々、この変数に格納する文字列が多くなり、意味合いが変わってきました。

そうして、やがて「文字列を格納する変数」という確固たる意味付けがなされたのです。データをバッファに記録しておくことを、「バッファリング」と呼ぶこともあります。

バッファオーバーフロー

バッファが引き起こす不具合を指す言葉に「バッファオーバーフロー」という言葉もあります。

CPUやメモリのバッファ領域の上限以上のデータが引き起こすエラー

コンピュータのデータを一時的に保存する「記憶装置」には、データを格納できる「上限」があります。上限いっぱいになれば当然それ以上のデータを入れることができなくなります。

そんな、「バッファ不能」な状態になることを「バッファオーバーフロー」と呼び、この状態では不正な一にデータを格納することになっていまいます。

バッファオーバーフローはセキュリティホールとなる

関数の呼び戻しに利用される「スタック」。このスタックには、データのリターンアドレスが記録されているため、バッファオーバーフローによってこのリターンアドレスが書き換えられてしまうと、悪意あるプログラムが起動されてしまいます。

特にC言語など、メモリアドレスの操作でユーザに依存しているものの場合、単純なミスでこのバッファオーバーフローが発生してしまうことがあります。

どうすればバッファオーバーフローを防ぐことができるのか

バッファオーバーフローが起こらないよう、事前にしっかり予防しておくことが大切です。

事前に入力データに不備がないかチェックし、脆弱性の高い古い関数は利用しない、低級言語を利用しないなどの工夫を凝らしましょう。

それだけで、バッファオーバーフローがセキュリティホールとなってしまうリスクをかなり低くすることができるはずです。

まとめ

バッファとは「緩衝材」を意味する言葉。

データの入出力時に、データのやり取りを円滑に行うための工夫を指します。プリントアウトする際にプリンタが、プリンタ内の記憶装置にデータを一時保存しておく手法。データを一時保存しておくことを意味する関数。動画データをあらかじめ余分に読み込んでおき、再生をスムーズにする。

古来より、「ゆとり」の意味で広く使われている言葉です。