2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScriptのArrayBufferとは?

Posted at

JavaScriptにおけるArrayBufferは、バイナリデータの格納と操作に特化したデータ構造で、主にWeb APIや低レベルなデータ処理のために使用されます。その特徴は以下のとおりです:

1. 固定長のメモリ領域

  • ArrayBufferは一定のサイズのメモリ領域を確保します。サイズはバイト単位で指定され、一度生成するとサイズは変更できません。

2. バイナリデータの格納

  • JavaScriptの通常の配列は、任意の型のデータを格納できますが、ArrayBufferは純粋なバイナリデータ(ビットの列)を格納します。
  • メモリ効率が高く、大量データを扱う際に便利です。

3. 複数のビュー(TypedArray)でデータにアクセス可能

  • ArrayBuffer自体にはデータアクセス機能はありません。そのため、TypedArrayDataViewなどを使用してバッファ内のデータにアクセスします。
  • Uint8Array, Int16Array, Float32ArrayなどのTypedArrayで整数、浮動小数点、または符号付き・符号なしでデータを処理できます。
  • DataViewを使うと、異なるエンディアン(ビッグエンディアンやリトルエンディアン)を意識したデータ操作も可能です。

4. Web APIやFile APIとの連携

  • ArrayBufferはWeb APIと密接に関連しており、たとえばfetch() APIを用いて取得したバイナリレスポンスをArrayBufferとして扱うことが可能です。
  • また、BlobFileReaderなどを用いて、ファイルの読み取りや操作にArrayBufferを使うことが一般的です。

5. 効率的なパフォーマンス

  • ArrayBufferは、特に大規模なバイナリデータの処理において、JavaScriptでパフォーマンスを向上させるために使用されます。
  • ゲーム開発やWebGLを使った3Dレンダリング、音声・画像データの処理など、高速なデータ操作が求められる場面で多く用いられます。

6. シリアル化とデシリアル化のための利用

  • ArrayBufferは、データをバイナリ形式でシリアル化し、他のシステムやスレッドに送信する際に便利です。
  • Web Workersなどの他のスレッドに対してメモリ領域を「移譲」することも可能で、効率的なマルチスレッド処理に役立ちます。

使用例

// 8バイトのArrayBufferを作成
let buffer = new ArrayBuffer(8);
// Uint32Arrayビューを使ってバッファにアクセス
let view = new Uint32Array(buffer);
view[0] = 42;
console.log(view[0]); // 出力: 42

ArrayBufferは、JavaScriptで低レベルデータを扱う上で非常に強力であり、特にパフォーマンスを重視した開発には欠かせない機能です。

2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?