0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

inspectでデバッグログの快適性を爆上げする

Posted at

はじめに

Node.jsでオブジェクトや配列をconsole.logでデバッグ表示した際の[Object][Array]に辟易していませんか?inspect関数はオブジェクトやデータ構造を可読性の高いフォーマットで出力できる、デバッグやロギングに活用できる非常に強力なツールです。本記事では、inspect関数の使用方法、便利なオプションをいくつかのコード例を交えて解説します。

Node.jsのinspect関数とは?

Node.jsのutilモジュールに含まれているinspect関数は、オブジェクトを文字列として表示する際にその内容を詳細に確認できるように設計されています。console.logと比べて、inspectを使うと以下のような利点があります。

  • ネストされたオブジェクトの深さを指定できる(無限も可)
  • 色付きで出力することができ、見やすい
  • 配列やマップなど特殊なデータ型にも対応

inspect関数の基本的な使い方

まず、基本的な使用方法を見てみましょう。以下のコードは、inspectを使ってオブジェクトの内容を表示する例です。

const util = require('util');

const user = {
  name: 'Yamada Taro',
  age: 30,
  address: {
    city: 'Tokyo',
    zip: '100-0001'
  }
};

// 標準のconsole.log
console.log(user);

// util.inspectを使用
console.log(util.inspect(user, { depth: null, colors: true }));

console.logでは通常のオブジェクトの出力となりますが、inspectを使用すると、色付きで、ネストされたオブジェクトも全て表示されます。特に、depth: nullオプションによりオブジェクトの深さが無制限となり、全ての階層が表示されます。

inspect関数のオプション

inspect関数には、様々なオプションが用意されており、用途に応じて柔軟に設定できます。以下は主なオプションの一覧です。

  • depth: ネストされたオブジェクトをどの階層まで表示するか(nullで無制限)
  • colors: 色付きで表示するか(trueで色付き)
  • showHidden: Symbolプロパティや非列挙プロパティも表示するか
  • compact: コンパクトな形式で表示するか
  • sorted: オブジェクトのキーをソートして表示するか
  • numericSeparator: 数値をアンダーバー「_」によって3桁単位で区切って表示するか

depthオプションの活用例

デフォルトではinspectは2階層までしか表示しませんが、depthオプションを使うことで深い階層まで表示できます。

const util = require('util');

const data = {
  level1: {
    level2: {
      level3: {
        level4: '4階層目'
      }
    }
  }
};

// デフォルトの深さ(2)
console.log(util.inspect(data));

// 深さを指定して表示(nullで無制限)
console.log(util.inspect(data, { depth: null }));

showHiddenオプションの活用例

デフォルトでは表示されない非列挙プロパティやシンボルもshowHiddenオプションで表示可能です。

const util = require('util');

const obj = {};
Object.defineProperty(obj, 'hidden', {
  value: 'console.logだと見えないよ',
  enumerable: false
});

// {}
console.log(obj);

// { [hidden]: 'console.logだと見えないよ' }
console.log(util.inspect(obj, { showHidden: true }));

まとめ

util.inspectはNode.jsでデバッグを行う際に非常に強力なツールです。特に、ネストされたオブジェクトや特殊なデータ型を扱う際には、inspectのオプションを活用することで、デバッグ作業を効率的に進めることができます。素敵なデバッグライフを!

参考

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?