質問: **「ArrayBuffer」について調べているのですが、基本的な用語の意味が分からないので、質問します。** --- **Q1.「メモリ上に確保したバッファ領域」という表現について** ・「メモリ」と「バッファ」は何が違うのでしょうか? ・RAM上にある「情報を一時保存する記憶領域または装置」が「メモリ」? ・「バッファ」は「情報を一時保存する記憶領域」でRAM上にあるとは限らない? ・「バッファ」は必ず「メモリ」に確保される? --- **Q2.バッファメモリ** ・これは「メモリ」と同義ですか? ・それともここら辺りについて明確な定義はなくて文脈に応じて適宜判断するのでしょうか? --- **Q3.下記表現で合っていますか?** ・「バイナリデータ」を「メモリ上に確保したバッファ領域」へ保存 ・「メモリ上に確保したバッファ領域」より「バイナリデータ」を取得
回答: 用語の一般論であると解釈します。 英語の buffer は、名詞なら緩衝装置、動詞なら緩和する、と訳せます。(ゲーム用語でバフ、デバフというのもこの単語から来ています。英語の buff はまったく違う意味なので注意) コンピュータの世界では「遅い装置と早い装置の間に入って速度差を吸収するための何か」と思えばよいです。遅い装置の例としてはハードディスク、早い装置の例としては CPU が挙げられるでしょう。ハードディスクからのデータが一式揃うまで CPU は他の作業をし、揃ったところで一気に処理すると効率が良いことになります。なのでバッファという用語は「データが揃っていない状態が普通にある」というニュアンスを含んでいます。 A1. ・緩衝装置ならバッファですから、ハードウエアなバッファも当然あります。例えば USB では通信データをハードウエア FIFO に格納するのが一般的で、これもバッファと言っていいでしょう。 ・ソフトウエアでバッファを作るのであれば RAM 上に作ることになるでしょう。 ・一般的に「メモリ」とはアドレス付けできる記憶装置のことを言います。 電源を切っても消えない代わりに書き込みに特別な手順が必要な Flash-ROM 高速に読み書きできる代わりに電源を切ると消えてしまう D-RAM 超高速な代わりに超お高い、電源を切ると消える S-RAM つまり RAM というとメモリの一種です。 A2. ・バッファとして使うことにした記憶装置の一部をバッファメモリと呼ぶのでしょう。 文脈依存です。 A3. ・最終的にはその「データ」をハードディスクや画面に出力したいのですよね? あるいはディスクやネットワークから取得したいんですよね? バッファという用語は「途中に入るもの」ですから、「要求定義」のレベルであればその文言はちょっと/かなり変です。 ・ソフトウエアというか具体的なコードを書く上ではそういう言い方するかもしれません。 - データをバッファに読むルーチン、があって - バッファ上のデータを出力するルーチン、もある - バッファ上でソートするルーチン、を今作ろうとしている という状況ならそういう言い方するのもありです。