Chromeのデベロッパーツールにはたくさんの機能がある！

こんにちは:sunny:

株式会社HRBrainでバックエンドエンジニアをしているみつです！

Web開発で何かとお世話になるデベロッパーツール:fire:

色々な機能があるんだとは思いながら、深堀りしたことがなかったのでドキュメントを読んでみました。

どんな機能があるのかを色々調べてみたら機能もりもりのツールだったので記事にしてみました。

## 目次
- [:writing\_hand:デベロッパーツールとは](#writing_handデベロッパーツールとは)
- [:writing\_hand:機能1: 要素 - DOM](#writing_hand機能1-要素---dom)
  - [DOMとHTMLの違い](#domとhtmlの違い)
- [:writing\_hand:機能2: 要素 - CSS](#writing_hand機能2-要素---css)
- [:writing\_hand:機能3: コンソール](#writing_hand機能3-コンソール)
- [:writing\_hand:機能4: ソース](#writing_hand機能4-ソース)
- [:writing\_hand:機能5: ネットワーク](#writing_hand機能5-ネットワーク)
- [:writing\_hand:機能6: パフォーマンス](#writing_hand機能6-パフォーマンス)
- [:writing\_hand:機能7: メモリ](#writing_hand機能7-メモリ)
  - [ヒープスナップショット](#ヒープスナップショット)
  - [タイムラインでの割り当ての計測](#タイムラインでの割り当ての計測)
  - [タイムラインでの割り当ての計測](#タイムラインでの割り当ての計測-1)
- [:writing\_hand:機能8: アプリケーション](#writing_hand機能8-アプリケーション)
- [:writing\_hand:機能9: レコーダー](#writing_hand機能9-レコーダー)
- [:writing\_hand:機能10: レンダリング](#writing_hand機能10-レンダリング)
- [まとめ](#まとめ)
- [参考](#参考)
- [PR](#pr)

## :writing_hand:デベロッパーツールとは

> Chrome DevTools は、Google Chrome ブラウザに直接組み込まれたウェブデベロッパーツールです。DevTools を使用して、その場でページを編集し、問題をすばやく診断して、より優れたウェブサイトをより迅速に構築できます。

デベロッパーツールは、Google Chromeに備わっている機能の1つ。

その場でページを編集したり、問題を素早く診断するためのツールとして提供されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/8b7993b2-6697-43b4-5730-1d2143087d85.png)

## :writing_hand:機能1: 要素 - DOM
- **DOMの操作を行うことができるタブ**
- **※HTMLを操作を行うことはできない**

要素を選択して、[検証]を押下することでDOMを表示することができます。

**[画面をクリック]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/088cdd69-66ff-53b8-b1e7-7c620f45ede0.png)

**[タブを開く]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/0cf7b406-a090-7b73-a16d-8e61a88ddb39.png)


### DOMとHTMLの違い

:::note info
> HTMLは、最初のページコンテンツを表し、DOM は現在のページコンテンツを表します。JavaScriptがノードを追加、削除、編集すると、DOMはHTMLとは異なるものになります。
:::

https://developer.chrome.com/docs/devtools/dom?hl=ja#appendix

## :writing_hand:機能2: 要素 - CSS
- **要素のCSSを表示することができるタブ**

同じく要素を選択して、[検証]を押下することで要素に当たっているCSSを表示することができます。

**[画面をクリック]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/4b3eb685-33cf-5d6c-14e9-258d2878720d.png)

**[検証ボタンを押下してCSSを見る]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/41b2170b-c62a-af1d-9bc0-49f6040cb96c.png)

## :writing_hand:機能3: コンソール
- **JavaScriptなどが期待どおりに動作していることを確認できるタブ**
- `console.table()`でテーブル表示とかもできます

**[画面をクリック]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/088cdd69-66ff-53b8-b1e7-7c620f45ede0.png)

**[コンソールを押下して実行環境を開く]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/e6f533b9-a352-c7e2-faa5-d3950332973c.png)

**[`console.table()`を実行する]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/dd9f934e-591a-20c5-46da-faf0ae436f0b.png)


## :writing_hand:機能4: ソース

- **ファイルの表示と編集、スニペットの作成、JavaScriptのデバッグ、ワークスペースの設定ができるタブ**

**[画面をクリック]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/088cdd69-66ff-53b8-b1e7-7c620f45ede0.png)

**[ファイルの表示ができる]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/0cc35e02-c90f-2745-ba52-c6f52d77ce7b.png)

## :writing_hand:機能5: ネットワーク
- **個人的には、一番使う機能！**
- ネットワークのアクティビティを見ることができるタブ
- APIでの通信やファイルがアップロード、ダウンロードができていることを確認する

> - リソースが実際にアップロードまたはダウンロードされていることを確認する
> - HTTP ヘッダー、コンテンツ、サイズなど、個々のリソースのプロパティを検査する

**[通信を見ることができる]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/12a97a4e-da9a-5274-cfe4-18b1aa78ef54.png)


## :writing_hand:機能6: パフォーマンス
- ページのパフォーマンスを知ることができるタブ

> 実行時のパフォーマンスとは、ページの読み込み時と実行時でのページのパフォーマンスを表します。

**[パフォーマンスを計測する]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/968c9f0b-c695-ff50-f968-9082abff8425.png)


**[パフォーマンスを確認する]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/3f71c9d2-dae6-d38c-ea43-9d5990f2269f.png)

**[重たいタスクを確認する]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/2328efd3-29df-eeb9-d299-1ce1822db601.png)

## :writing_hand:機能7: メモリ
- メモリ分布の確認、メモリリークの検出と隔離、関数別のメモリ割り当ての内訳の表示などができるタブ

**[メモリパネルを確認する]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/af8b1671-bd4e-68fc-c766-0ad0048cab9d.png)

**[（例）ヒープスナップショットを確認する]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/53ea80f1-d5d8-1427-0f02-dfd79dc79e57.png)

### ヒープスナップショット
> ヒープスナップショットには、ページのJavaScriptオブジェクトと関連するDOMノードのメモリ分布が表示されます。

### タイムラインでの割り当ての計測
> 割り当てタイムラインには、計測された JavaScriptメモリ割り当ての推移が表示されます。プロファイルの録画後に時間間隔を選択して、プロファイル内に割り当てられ、録画が終了するまでに継続しているオブジェクトを表示できます。このプロファイル タイプを使用してメモリリークを隔離します。

### タイムラインでの割り当ての計測
> サンプリングメソッドを使用してメモリ割り当てを記録します。このプロファイルタイプはパフォーマンスのオーバーヘッドが最小限で、長時間実行オペレーションに使用できます。JavaScript 実行スタックごとに分類された割り当てのおおよその値がわかります。

## :writing_hand:機能8: アプリケーション
- **Webサイトのfaviconや背景等の情報も確認ができる**
- アプリケーションタブでは、Service Worker、Service Workerのキャッシュを検査、変更、デバッグができる

**[アプリケーションタブを確認する]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/2f883f61-470b-463f-6038-e09aab8f3c19.png)


## :writing_hand:機能9: レコーダー
- ユーザーフローを記録、再生、測定することが出来るタブ

**[ユーザーフローを記録する]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/8aa80dcd-8ae7-481d-7268-2885db188cab.png)

**[実際に記録された画面]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/620939e2-3cca-8d71-314d-878f0ae8e256.png)

## :writing_hand:機能10: レンダリング
- レンダリングのパフォーマンスを確認することができるタブ
- フォーカスを当てたり、レイヤの枠線を表示したりすることができる

**[レンダリングを確認する]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1841912/c131d6dd-a24c-7e2a-0ee3-4c8ef14f5c33.png)

## まとめ
標準で備わっている機能でも結構使ってみたいと思えるものがたくさんありました。

他にも色々な機能がありますが、日々の中で使えそうなものを拾っていきたいと思います。

## 参考

**[公式ドキュメント日本語版]**

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

**[公式ドキュメント英語版]**

https://developer.chrome.com/docs/devtools

## PR
株式会社HRBrainでは、一緒に働く仲間を募集しています！

興味を持っていただいた方はぜひ弊社の採用ページをご確認ください！

HRBrain文化を一緒に作っていきましょう！

https://www.hrbrain.co.jp/recruit/