今からでも遅くないconsoleを使いこなそう

# はじめに
この記事では、consoleメソッドについて紹介を行っていきます。consoleメソッドには例えばconsole.log()などが挙げられます。web開発においてconsole.log()を使用する方は多いかもしれません。しかしconsoleにはconsole.log()以外にも様々なメソッドがあるので、状況に合わせて使い分けることで少しでも快適なデバック、開発ライフを目指しましょう。

:::note
弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています！興味をお持ちいただける方は、[こちら](https://www.recruit.nuco.co.jp/?qiita_item_id=453b5e6ee933765211ec)まで。
:::

https://www.recruit.nuco.co.jp/?qiita_item_id=453b5e6ee933765211ec

# consoleについて
consoleオブジェクトを用いることで変数の値などをコンソール上に出力することができます。主に出力の確認であったり不具合の原因特定などのデバックするために使用されます。

代表的なものとして、console.log()がありますが、他にも様々な便利メソッドがあるので紹介を行なっていきたいと思います。
### console.log()
console.logはコンソールにメッセージを出力するために使用されます。console.log()の引数には文字列、オブジェクト、配列、ブーリアンなど様々な型を取ることができます。デバックや開発の際に変数の値やプログラムの状態を確認するために利用されます。使用頻度が高くconsole.log()だけしか使わないという方もいるのではないでしょうか。

```javascript:console.log
let message = "Hello, World!";
console.log(message);
console.log(10)
console.log(true)
```
**結果**

![スクリーンショット 2024-02-17 13.57.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/479961b9-e82f-7314-72c1-bfa1aea1554d.png)

https://developer.mozilla.org/ja/docs/Web/API/console/log_static

##### スタイル付きログ（おまけ）
実はconsole.log()はCSSを適用することで出力を装飾することができます。書き方は簡単で、第一引数を%cで最初に記述して、第二引数にCSSスタイルを追加します。

```javascript:style付きのconsole.log
const styles = 'background-color: black; color: green; font-size:30px; padding: 20px;'
console.log('%cQiita', styles);
```
**結果**
![スクリーンショット 2024-02-16 16.39.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/f8796037-7661-d4f5-e7d6-798851c820f0.png)

### console.table()
console.table()は表形式のデータをコンソール上において表で出力を行ってくれます。これを用いることで見にくい配列やオブジェクトの可読性を上げてくれます。

```javascript:console.table
console.table(['Qiita', 'blog1', 'blog2']);
```
**結果**

![スクリーンショット 2024-02-16 16.07.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/8861c586-9e1f-9ff3-fdca-003b01b68998.png)

```javascript:console.table
console.table({
    'Date': new Date().getFullYear(),
    'platform': 'Qiita',
    'post1': 'blog1',
});
```
**結果**
![スクリーンショット 2024-02-17 13.38.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/39b47d40-7077-c28d-6320-bdb7f6cc62bf.png)


https://developer.mozilla.org/ja/docs/Web/API/console/table_static

### console.group()
console.groupを使用するとメッセージをグループ化して、インデントして表示することができます。まとめたいものをconsole.group()とconsole.groupEnd()で囲むことにより実現できます。

```javascript:console.group
console.group("User Details");

console.log("Name: John Doe");
console.warn("Warning: Incomplete user information");
console.error("Error: Unable to fetch user data");

console.groupEnd();
```
**結果**

![スクリーンショット 2024-02-17 14.03.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/b816e1e9-6149-0abf-e545-368e0a95adbc.png)

![スクリーンショット 2024-02-17 14.03.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/8d38cdd2-201c-faaf-3911-3f03c745d1d0.png)

https://developer.mozilla.org/ja/docs/Web/API/console/group_static

### console.dir()
console.dir()を使用するとオブジェクトのプロパティを一覧形式でコンソールに表示することができます。オブジェクトの構造や中身を探索する際に役立てることができます。

```javascript:console.dir
const user = {
  name: "Alice",
  age: 25,
  address: {
    city: "Tokyo",
    country: "Japan"
  }
};

console.dir(user);
```
**結果**

![スクリーンショット 2024-02-17 13.37.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/a37ffe74-4518-7e62-b79c-1740c35b93af.png)

https://developer.mozilla.org/ja/docs/Web/API/console/dir_static

### console.time()
console.time()を使用すると処理にかかる時間を計測することができます。使い方は簡単で、console.time();とconsole.timeEnd();で計測したい箇所を挟んで上げれば計測を行うことができます。

```javascript:console.time
console.time('time');
const qiita = function(){
    console.log('Qiita');
}

qiita();

console.timeEnd('time');
```
**結果**
![スクリーンショット 2024-02-16 15.31.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/d81c6e6c-2d33-40ae-138b-9b5f19daed30.png)

https://developer.mozilla.org/ja/docs/Web/API/console/time_static

### console.count()
呼び出された回数を記録するメソッドで関数や変数が呼び出された回数を記録して呼び出される度に出力を行います。

```javascript:console.time
function exampleFunction() {
    console.count('Function call count');
  }
  
  for (let i = 0; i < 5; i++) {
    exampleFunction();
  }
```
**結果**

![スクリーンショット 2024-02-16 16.44.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/7964a890-23ae-cf75-b500-cbfcb2e9bc87.png)

https://developer.mozilla.org/ja/docs/Web/API/console/count_static


### console.assert()
console.assert()は第一引数に渡された値がfalseの場合エラーメッセージを出力、trueの場合は何も表示しないメソッドとなっています。デバックの際に特定の条件が満たされているかどうかを確認するために使用されます。

```javascript:console.assert
let value = 10;

console.assert(value > 0, "値は0より大きい必要があります");
console.assert(value < 0, "値は0より小さい必要があります");
```
**結果**

![スクリーンショット 2024-02-19 114145.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/45d0ee55-8e2d-f35f-7096-5888b7229418.jpeg)



https://developer.mozilla.org/ja/docs/Web/API/console/assert_static


### console.error()
エラーメッセージを出力する際に用います。コンソール上では赤色のメッセージで強調表示されます。

```javascript:console.error
try {
    let result = someUndefinedVariable + 10; 
    console.log("結果:", result); 
  } catch (error) {
    console.error("エラーが発生しました:", error.message);
  }
```
**結果**
![スクリーンショット 2024-02-17 13.16.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/2c0c753d-f6c0-0fa0-c60d-d73f953796e2.png)

https://developer.mozilla.org/ja/docs/Web/API/console/error_static

### console.warn()
cosole.warn()はコンソールに警告メッセージを出力するのに用います。潜在的な問題や注意が必要な状況を知らせるのに用います。コンソール上では黄色で表示されます。

```javascript:console.warn
console.warn("これは警告メッセージです。");
```
**結果**

![スクリーンショット 2024-02-17 13.25.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/10c99160-66c2-1ac2-3a48-0474dba1e2f7.png)


### console.info()
console.info()は情報メッセージを出力するのに用いられます。デバックや開発中に役だつ情報を開発者に提供します。

```javascript:console.info
let userName = "John";
let age = 30;

console.info("ユーザー情報:", { userName, age });
```

**結果**

![スクリーンショット 2024-02-17 13.30.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/8863fac1-0746-d663-8902-5de2a1ef5be3.png)


### console.clear()
console.clear()はコンソールのメッセージやエラー表示が一杯の時に表示をクリアするのし使用します。使用すると「Console was cleared」と表示されます。

```javascript:console.clear
console.clear()
```
**結果**

![スクリーンショット 2024-02-16 16.01.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/0d09008a-04c0-89c2-ec13-21bdf004f7f6.png)

https://developer.mozilla.org/ja/docs/Web/API/console/clear_static

### console.trace()
console.trace()を使用するとコンソールにスタックトレースを表示させることができます。これによりデバック時に特定のコードがどのように呼び出されたのかを追跡するのに役立ちます。

:::note
スタックトレースとは
スタックトレース（Stack Trace）は、プログラムがエラーを発生させた際や、ある特定のポイントでの実行の経路を示す情報のことです。これは通常、コード内で関数がどの順番で呼び出されたか、またそれがどのようにネストされているかなどを示すものです。
:::


```javascript:console.trace
function thirdFunction() {
  console.trace("Inside thirdFunction");
}

function secondFunction() {
  thirdFunction();
}

function firstFunction() {
  secondFunction();
}

firstFunction();
```

**結果**

![スクリーンショット 2024-02-17 14.31.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/8b7d42ed-3cbe-eb0d-24d5-0e522a18440a.png)

https://developer.mozilla.org/ja/docs/Web/API/console/trace_static

### console.debug()
console.debug()は開発中の便利なデバック情報を残したいが、本番環境でユーザーに表示させたくない際に使用されます。多くのビルドシステムでは本番ビルド時にconsole.debug()の呼び出しを無視します。

https://developer.mozilla.org/ja/docs/Web/API/console/debug_static

# ChromeのConsoleにおける便利機能
最後におまけとしてChromeの開発者ツールにおけるコンソール上でのみ使用できる機能について紹介します。Chrome上で検証を行う際に役立つと思います。

### $(selector)
document.querySelector()と同じです。短くすることができます。
```javascript:$(selector)
$('title')
```

![スクリーンショット 2024-02-17 15.41.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/06257f9c-ebe2-1a18-4dad-f127de20841c.png)

### $$(selector)
document.querySelectorAllと似ているがNodelistではなく配列を返します。配列に変換する手間を省くことができます。

```javascript:$$(selector)
$$('img')
```

![スクリーンショット 2024-02-17 15.58.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/5922f83d-f709-3860-e4ba-1536bfe82ec3.png)


### $_
$_は直前の評価された値を返します。

![スクリーンショット 2024-02-17 14.41.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/5ec0526d-bcf2-a338-e6e0-f25cdeb934d6.png)

### $0~4
0は直近の1はさらに前のと、順番に直近5つの要素を参照することができます。

![スクリーンショット 2024-02-17 16.04.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/77a93cce-3499-fd83-420d-ab181b127af0.png)

![スクリーンショット 2024-02-17 16.04.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/e0ad4c2a-a9d5-68bc-864d-2c3fe68396db.png)


### copy()
copy()を使用することでオブジェクトをクリップボードにコピーすることができます。

```javascript:直前の結果をコピー
copy($_)
```

### 省略可能なコンソールコマンド
**console.clear()**
clear()でコンソールをクリアすることができます。ショートカットキー（cmd+K:mac)でも消すことができます（こっちの方が楽）。

![スクリーンショット 2024-02-17 15.28.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/181452b5-3c18-e2e4-13b8-acb10565bca9.png)


**console.table()**
table()でconsole.tableと同じ使い方ができます。

![スクリーンショット 2024-02-17 15.30.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/e5efb96d-d784-0fdf-2f88-e264527e1f55.png)


**console.dir**
dirでconsole.dirと同じ使い方ができます。

![スクリーンショット 2024-02-17 15.32.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125904/99e55024-b71e-98a2-4b7c-a11914373a9d.png)


他にもあるのでこちら参考にしてみてください。

https://developer.chrome.com/docs/devtools/console/utilities?hl=ja


# 最後に
いかがでしたでしょうか、今回は便利なconsoleメソッドについてまとめてみました。必要な状況に合わせて色々試してみてください。

:::note
弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています！興味をお持ちいただける方は、[こちら](https://www.recruit.nuco.co.jp/?qiita_item_id=453b5e6ee933765211ec)まで。
:::