【Dev Tools】DevToolsのnetworkを使いこなす。各項目の見方と使い方まとめ。

ブラウザでの表示状況を調査・確認するのに欠かせない、Chromeの開発ツールのnetworkパネルの使い方についてのまとめ。

なお、[microsoftのedgeでも全く同じ開発ツール](https://docs.microsoft.com/ja-jp/microsoft-edge/devtools-guide-chromium/network/reference)を使っている。


##目次

1. [Dev toolの起動](#dev-toolの起動)
2. [networkパネルの主な挙動](#networkパネルの主な挙動)
3. [Preserve log](#preserve-log)
4. [Disable Cache](#disable-cache)
5. [スクリーンショットの記録](#スクリーンショットの記録)
6. [ネットワークの切り替え](#ネットワークの切り替え)
7. [フィルタリング](#フィルタリング)
    7. [任意のフィルタリング](#任意のフィルタリング)
    8. [リクエストタイプによるフィルタリング](#リクエストタイプによるフィルタリング)
    9. [Hide data URLs](#hide-data-urls)
    10. [経過時間によるフィルタリング](#経過時間によるフィルタリング)
11. [waterfall](#waterfall)
12. [ファイルごとの詳細情報](#ファイルごとの詳細情報)
    13. [HTTP Headers](#1-http-headers)
    14. [Preview](#2-preview)
    15. [Response](#3-response)
    16. [Timing](#4-timing)
    17. [Cookies](#5-cookies)



##Dev toolの起動
`ctrl + shift + I`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/4960dec9-ebf0-6d88-fead-a952f26d3e10.png)

networkタブをクリックする。



##networkパネルの主な挙動

- デフォルトは何もない（開いている間の通信のみを記録するため）
- 左上に赤い丸があるときの通信は記録する（クリックして黒丸にしたら通信は終了）


##Preserve log
すべてのログを保存（preserve）する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/9c3903dd-5fd9-dd43-14f2-05d156429c98.png)


##Disable Cache
Disable cacheにチェックをいれると、キャッシュを利用しなくなるので、リロードしても初回訪問時と同じ読み込み速度になる。




<br>
##スクリーンショットの記録
呼び出してから表示されるまでの画面のキャプチャを時系列で確認することができる。

**レンダリングのスピードや描画状況を調べることができる**。

昔のchromeではビデオアイコンがあったが、現在は歯車をクリックし、capture schreenshotにチェックマークをいれる。

![capture.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/a77be836-8974-198e-a9ee-97524cb3b669.gif)

キャプチャ画像を選択したときに下のwaterfallに表示される黄色い線が描画している位置を表している。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/c8e405b6-eb28-2598-ba67-fee8522d2f67.png)



<br>
##ネットワークの切り替え
オンライン（現在のネットワーク通信）や3G、オフライン状態でページがどのように表示されるかを簡単に確認することができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/76fd5af2-788a-aad4-27d9-fc3199a7afab.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/a647923c-3758-4b50-5766-f9d40ef3af11.png)

addをクリックすれば、好きな設定を追加することもできる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/62306ea2-0896-bd16-3def-8cb9ba35eb8f.png)


<br>
##フィルタリング
取得したログのフィルタリング方法はいくつかある。

1. 任意のフィルタリング
2. リクエストタイプによるフィルタリング
3. Hide data URLs
4. 経過時間によるフィルタリング



##任意のフィルタリング
左上の検索窓でフィルタリングができる。

マッチするファイル名を入れてもいいし、専用の検索ワードを使うこともできる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/e30d3112-d326-ebb5-6713-8a0054117b46.png)

[filter requests](https://developers.google.com/web/tools/chrome-devtools/network/reference?hl=ja#filter)


<br>
##リクエストタイプによるフィルタリング

![type.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/d8f73a57-ee7b-bba2-509f-a563bfe380b8.gif)

###XHRとは？
Ajax (非同期通信) に使われる組み込みオブジェクト。非同期通信でリクエストを送っているリソースを確認することができる。

XMLHttpRequestの略。


<br>
##Hide data URLs
data URLとは、ドキュメントに埋め込まれた小さなファイル。冒頭に`data:`がついたスキーム。

URLだけで画像や音楽、動画などを埋め込むことができる便利スキーム。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/e7d023c2-b5a6-5bbc-e357-7acc4ba31db7.png)

　↓　Hide data URLsにチェックをいれると非表示にできる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/761d4865-6053-f1a4-cbb1-e747cd477ab4.png)



<br>
##経過時間によるフィルタリング
経過時間を絞って、その期間だけのファイルを表示することができる。

![timefilter.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/bcddc813-b5a6-942e-7e17-41da81d85a9e.gif)



<br>
##ログパネル
各ファイルのログを確認することができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/d46f0548-1581-3e15-2891-56e14ceccee0.png)

| 項目 | 内容 |
|:-:|:--|
| Name  | ファイル名  |
| Status  | HTTPステータスコード  |
| Type  | MIMEタイプ  |
| Initiator  | リソースを呼び出す初期リクエスト |
| Size  | ファイルのサイズ（レスポンスヘッダーとボディ）  |
| Time  | リクエストの開始から最後のレスポンスまでの合計時間  |
| Waterfall  | 各アクティビティのビジュアル表示  |


###ログパネルの編集
カラム名で右クリックすれば、カラムの追加や削除ができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/2f8dabcb-eec0-9b05-9ff8-c4ed3c7d9b5d.png)

 ↓ method, protocolなどを追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/e1d26feb-aa67-a137-17f8-e7cf966720cb.png)






<br>
##waterfall
waterfallで各ファイルがリクエストから表示までにかかった時間を確認することができる。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/04d4ea98-930e-afed-21a4-cf73db346d42.png)

各ファイルを選択して、timingにしても同じ情報を確認できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/ad87ca5c-0e39-90df-3f23-d7a04daa9941.png)


| 項目 | 内容 |
|:-:|:--|
| Queing  | ブラウザがリクエストをキューに入れたタイミング |
| Stalled  | リクエストを送信できるようになるまでの待機時間  |
| DNS Lookup  | ブラウザがドメイン名からIPアドレスを参照するのにかかった時間（名前解決にかかった時間）  |
| Initial connection  | TCPやSSLの接続を確立するのにかかった時間 |
| SSL  | SSLハンドシェイクの完了にかかった時間。（TCP = Initial connection - SSL） |
| Request sent  | リクエストの送信にかかった時間  |
| Waiting(TTFB)  | 初回のレスポンスまでにかかった時間。サーバーがリクエストを受け取ってからレスポンスを返すまでの時間となる。TTFBとも呼ばれる。（Time To First Bite）  |
| Content Download  | ブラウザがレスポンスを受け取るまでの時間  |



<br>
##ファイルごとの詳細情報
ファイル名をクリックすると詳細情報を確認することができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/3380b898-4776-5803-b67c-5807207ea9e0.png)

ファイルの種類によっては、CookiesとInitiatorはない。


###1. HTTP Headers
HTTPヘッダーの確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/009e4240-574c-1236-781e-f7dee08ce339.png)

表示されるHeadersの情報はファイルによって異なる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/71e9105d-55a7-8d5c-6031-c398b94fbd2e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/75c3cc0a-1f95-1d03-747c-9d2123ffcb63.png)

（参考）[ヘッダーの詳細](https://qiita.com/yuta-38/items/77af3e961134977eaac7)



<br>
###2. Preview
レスポンスのボディのプレビューを確認できる。

▼`content-type: image/jpeg`の例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/f78c2b7a-5f99-3315-730e-aece21a24d36.png)


▼`Content-Type: application/javascript`の例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/5b4b3a00-6f59-f63d-3d47-45d1025d31c5.png)


▼`content-type: text/html; charset=utf-8`の例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/91089c7d-ddaa-9fd5-81eb-437e4f3c592a.png)



<br>
###3. Response
レスポンスのボディーを確認できる。

▼`content-type: text/html; charset=utf-8`の例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/db4669f8-4f8b-865e-2e52-ef63db945551.png)



▼`Content-Type: application/javascript`の例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/aef177c8-7246-ffbc-a34b-e7c669ac0238.png)



<br>
###4. Timing
リクエストから画面表示にかかるまでの時間の詳細が確認できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/53fb1ec6-df0c-86a3-d012-632fc5b44753.png)

各項目は[waterfall](#waterfall)を参照。



<br>
###5. Cookies
クッキーの情報を確認できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/11ce5817-cdb7-2869-f2ff-bfd145c6372f.png)


| 項目 | 内容 |
|:-:|:--|
| Name  | クッキー名  |
| Value  | クッキーの値  |
| Domain  | クッキーの受け取りを許可されたホスト  |
| Path  | リクエストに存在するURL  |
| Expires / Max-Age  | クッキーの最大有効期限  |
| Size  | クッキーのサイズ[bits]  |
| HTTP only  | ✔︎（true）の場合、クッキーをHTTPのみで使用。JSは許可しない  |
| Secure  | ✔︎（true）の場合、HTTPSのみクッキーを送信  |
| SameSite  | 同一サイトのみクッキーを許可するかどうか（none, strict lax）  |


###Googleの主なクッキー
Googleは広告のリタゲなどで使用されており、doubleclick.net配下に保存されている。


####1. IDE
広告の有効性を測定し、お客様にターゲット広告を提示する目的で、広告主の広告の一つを閲覧・クリックされた後のお客様の活動を登録・報告するために使用。


####2. DSID
オンライン広告のリターゲティング、最適化、報告及び帰属表示のために使用。

（参考）[Google privacy policy](https://policies.google.com/technologies/cookies?hl=ja)




<br>
##参考リンク
・[Chrome DevTools](https://developers.google.com/web/tools/chrome-devtools/network/reference?hl=ja#controls)