【入門編】 DataViewの型判定 – JavaScript実践ガイド

こんにちは!JavaScriptの世界へようこそ。
日々コードを書いていると、「これって一体何者なの?」と迷子になってしまう瞬間、ありますよね。大丈夫、みんな最初はそこを通ります。

今回は、ちょっとマニアックに見えるけれど、バイナリデータ(0と1の塊)を扱うときには欠かせない「DataView(データビュー)」というオブジェクトの正体を見破る方法についてお話しします。

—

そもそも「DataView」って何者?

まずはイメージからいきましょう。
`ArrayBuffer` という、ただの「箱に入った0と1の羅列」があると想像してください。これ、中身がどうなっているか、そのままでは人間にはサッパリ分かりません。

そこで登場するのが DataView です。
これは、その「箱」に後付けする「専用のルーペ」のようなものです。このルーペ越しに見ることで、「ここは数字の8ビット分だな」「ここは16ビットの大きな数字だな」と、中身を翻訳して読み取ることができるようになるんです。

なぜ「型判定」で迷子になるのか

JavaScriptで一番よく使う `typeof` という魔法の言葉。これを使ってDataViewを調べてみると……

const buffer = new ArrayBuffer(16);
const view = new DataView(buffer);

console.log(typeof view); // 結果は “object”

……なんと、ただの「object」としか教えてくれません。
これだと、私たちが知りたい「君はDataViewだよね?」という確信は持てませんよね。実は、JavaScriptの世界には「object」という名前の大きな箱の中に、似たような形をした住人が山ほどいるんです。

賢い「DataView」の見分け方

では、どうやって「君、DataViewだね!」と見抜けばいいのでしょうか。
一番確実で、現場のプロもこっそり愛用しているテクニックがこちらです。

必殺技:`toString.call()` を使う

JavaScriptには、オブジェクトの正体を正直に告白させる方法があります。それが `Object.prototype.toString.call()` です。

// 判定したい対象を用意
const buffer = new ArrayBuffer(16);
const view = new DataView(buffer);

// 正体を暴く魔法の呪文
const type = Object.prototype.toString.call(view);

console.log(type); // “[object DataView]” と表示される!

これなら、「あ、ちゃんとDataViewだった!」と確信を持って進めますよね。

実務で使いやすい「判定関数」を作ってみよう

毎回この長い呪文を書くのは大変なので、自分専用の道具箱(関数)に入れておくのが、デキるエンジニアの流儀です。

/

  • この関数を使えば、いつでも安心してDataViewかどうかチェックできます

/
function isDataView(target) {
// toString.call を使って、文字列の最後が “DataView]” で終わるか確認します
return Object.prototype.toString.call(target) === ‘[object DataView]’;
}

// 試してみましょう
const myView = new DataView(new ArrayBuffer(8));
const myObject = {};

console.log(isDataView(myView)); // true!やったね!
console.log(isDataView(myObject)); // false!ちゃんと判定できてます

なぜ `instanceof` じゃダメなの?

「`instanceof` 演算子を使えばいいんじゃない?」と思った方、鋭いです!
確かに `view instanceof DataView` と書けば `true` が返ってきます。

ただ、現場では「異なるフレームワークやブラウザのウィンドウ間でデータを受け渡しする」という少し複雑な状況が起こることがあります。そういう時、`instanceof` はたまに裏切る(正しく判定できない)ことがあるんです。

その点、今回紹介した `Object.prototype.toString.call()` は、どんな状況でも揺るがない「身分証明書」のようなもの。だからこそ、多くのライブラリの内部でもこの方法が採用されているんですよ。

最後に:迷ったら「確認する」のが一番の近道

JavaScriptはとても自由な言語です。だからこそ、データが自分の意図した通りか不安になるのは当たり前のこと。

「この変数、型が分からないな?」と思ったら、今日紹介した方法でそっと中身を覗いてみてください。そうやって一つずつ確認を積み重ねていくことが、バグの少ない、美しいコードを書くための第一歩です。

また分からないことがあったら、いつでも聞きに来てくださいね。あなたの開発ライフを応援しています!

コメント

タイトルとURLをコピーしました