タグ:ArrayBuffer:記事一覧
SharedArrayBufferを使用すると異なるスレッド間で同じメモリ領域を共有することができます。使い方によっては効率の良いアプリケーションを作成できます。しかし脆弱性を指摘されていることから、ブラウザでの使用に制限がかかっています。
仕様書(ECMAScript)上では、JavaScriptは同期/非同期に関係なく、一つのスレッドで動作することになっていて、並列処理を行う機能は定義されていません。しかし現行のブラウザの多くは、Web WorkerというAPIが組み込まれていて、これを利用することで並行処理を実現することができます。この記事は、実際使ってみたら、とても簡単に並列処理できたよというお話です。
JavaScriptのArrayBufferは確保したバッファー内でバイナリデータを取り扱うことができます。しかし複数の型データを読み書きしたい場合、書き込み位置(オフセット)を的確に管理する必要があります。そこで今回は、ArrayBuffer上で複数の型データを管理するオブジェクトを作成してみます。
元々Node.jsには固有のモジュールとしてBufferオブジェクトが存在していて、ファイルから読み込んだデータはBufferオブジェクトに格納されるように設計されています。しかしECMAScriptの2015年版で、バッファーとして動作可能なArrayBufferオブジェクトがJavaScritとして標準搭載されました。そのためブラウザ等でJavaScriptコードを作成してきた人は、BufferよりもArrayBufferの方が使いやすいです。そこで今回は、Node.jsでファイルの入出力する際にArrayBufferを経由する方法をお伝えします。
JavaScriptでは、数値配列に対してjoinメソッドを実行すると、10進数の文字列に変換されます。では16進数の文字列に変換したいときはどうすればいいのでしょうか?
JavaScriptの2バイト以上のTypedArrayオブジェクトは、エンディアンを考慮したメモリアクセスがおこなわれます。しかし、この時のエンディアンが何なのでしょうか。確認してみます。
DataViewまたはTypedArrayのバイナリ保存の方法について、以前別の記事でお伝えしましたしかし2バイト以上のTypedArrayは、エンディアンについて考慮する必要があります。そこで今回は、上記の二つの記事の補足として、2バイト以上のTypedArrayをバイナリ出力するときの注意点についてお伝えします。
プログラムコードを組んでいると、任意サイズのメモリを確保して、バイナリデータバッファなどの利用目的で自由にアクセスしたいことがあります。JavaScriptでは、ArrayBufferオブジェクトとTypedArrayオブジェクトを使用することで実現できますが、初見では少し仕組みが分かりにくく感じます。そこでまずは、概要として二つのオブジェクトの関係と、それぞれの使用方法をお伝えします。