ブラウザの開発ツール(F12)を使いこなしたい！！

_F12を学んだ人間の多くはWebデベロッパーになった。残りの人間がWebデザイナーになった。そうしてWWWが生まれた。_
～ F12について、オスカー・ワイルド


F12、使ったことありますか？
===========================

__開発ツール__は、その名の通りWeb開発者に役立つ便利ツールの詰め合わせ。
Web開発の際、__どこの要素がどう表示されているのか__、HTMLだけでなくCSSやJSにも渡って確認できます。


対象ブラウザについて
====================

筆者はFirefox使いです。
__いいえ__、「どうせ_俺FirefoxユーザだからChromiumの配慮とか知らんわｗｗｗｗｗ_とか言って__ブラウザシェア1位__のChromeをスルーするんでしょう」などと心配する必要はありません。
普段使いの関係でFirefoxが中心ですが、ElectronとVivaldiとはそれなりに親しい間柄ですから__彼らのために__Chromium系の解説もいっしょにします。

~~べ、別にChromeのためにやってるわけじゃないんだからね！~~


主要なツール
============

[開発ツール - MDN](https://developer.mozilla.org/ja/docs/Tools)に主要ツールとして載っているやつら一覧。基本的な機能はChromiumでも同じ。

見出しはFirefox日本語名/Chromium英語名。

撮影に使っているページは[俺のGitHub Pages](https://mominisjapan.github.io/Pages/)。

インスペクター/Elements
-----------------------

- たぶんいちばん使う。
- HTML要素がずらっと並び、どの要素が画面上のどこに対応しているのか見てわかるようになる。
- CSSのルールの編集や、フォント、アニメーションの設定も可能。
- HTML/CSSへの変更は即座に反映されるので、軽いチェックにも恐ろしく便利。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/9fd67265-533c-315e-7617-62cf2df0c793.png)
Firefox。Developer Editionではデフォルトでダークテーマ(設定で変更できる)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/11e27c18-98f4-5da1-e1e8-fcddc8811e17.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/aaf92332-b266-d8f2-2d1f-90ecbca75a3e.png)
Chr、Ffx共通ショートカット `Ctrl`+`Shift`+`C`で表示されているページを直接ポイントしてインスペクターで開ける。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/509fce25-85a2-5eb1-34c9-730e063d2f2c.png)
イベントリスナーもチェックできる。


コンソール/Console
------------------

- JavaScriptでの`console.log()`とか`console.error()`とかで出力したものが置いてある。
- オブジェクトはふつくしい形で見られるし、HTML要素もそれっぽく表示される。
- 実際にコードを書いて、その結果を見たりもできる。`node`コマンドとか`irb`に似ているといったら通じるだろうか？
- 「エラー」「警告」「ログ」「情報」「デバッグ」といった種類でフィルタリングできる。
- コンソールのくせに__CSSが効いたり__する。
- CSSとかconsoleいろいろについてはこの記事が参考になる。
- [JavaScriptでの賢いconsole.log( )の使い方 & その他便利なconsole.xxx( )使い方まとめ (dir・table・warn・groupとか)](https://qiita.com/mtoyopet/items/7274761af5424cee342a)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/acd26a15-c7f4-c656-0eaa-16d748c592bf.png)
Firefox。新し目のECMAScriptでは`number ** number`で冪乗ができる。


デバッガー/Sources
------------------

- JSの停止、ステップ実行とかが可能。
- 画像のページではTypeScriptからWebpackを通しているおかげでアセンブリ言語と見紛う状態になっており、あんまり役に立ちそうにない。
- ソースマップをオンにすれば使い方が見えてくる(推測)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/d8c125a9-ecef-0f62-8a6a-ce38c2136820.png)
コード書いてる行は全て恐ろしく右に突き出している。


パフォーマンス/Performance
--------------------------

- __パフォーマンスを計測する__。
- ぱっと見ですぐわかるのはfps。setTimeoutとかレイアウト変更で時間を食ってみたりしている様子がわかる。わかる？
- JSがループにハマってページがゲロ重くなっている際~~サイバー課が来るより先に~~原因を特定することができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/eed1d417-7d3f-d928-950b-1d0ebc57eff0.png)


ネットワーク/Network
--------------------

- ネットワークリクエストを見れる。
- 応用的に、ページで使われている画像やらを一覧で見れたりもする。
- サイトがつながらない時、ここを見ると自分の環境なのか相手鯖が死んでるのかが特定できたり。
- 帯域制限つき。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/a910acd9-0aa1-4f05-c980-49e90e7a690b.png)
Chromium。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/f0bcc0c2-e170-7cec-37c2-aa33da3d701d.png)
Firefox。

アクセシビリティ/Accessibility
------------------------------

- サイトの使いやすさ的なのをチェックする。
- __文字と背景のコントラスト比チェック機能__がクソ有能。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/2a66fd1e-7f78-83b8-4023-51ac365ad9d0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/42854982-2d58-cdbd-1f88-605ae8f01853.png)
「AA」「AAA」というのはなんだか肉に似ている。



その他機能
==========


React
-----

- これはFirefox/Chromeのデフォルトにはない機能。
- [React開発用の専用アドオン](https://reactjs.org/blog/2015/09/02/new-react-developer-tools.html#installation)をインストールすると出てくる。
- React専用のインスペクターといった趣。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/92143044-02d5-1606-21b9-c027f1330cb9.png)


レスポンシブデザインモード
--------------------------

- __スマホ、タブレット、PC、その他もろもろの環境でどう表示されるか見れる__。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/821c7c4d-d393-faef-094a-e5295708425e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/caf980b1-2f58-8177-5c30-c8fbf50efd3e.png)



部分サイズ計測&定規(Firefox)
============================

- 設定から有効にできるが最初から有効でいい気がする。
- サイズを測れる。
- インスペクターよりも自由な測量ができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/4c56c005-7df2-046b-fbd5-edd584f72518.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/2503cb62-1805-20ae-a0a8-ecf57c983b31.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/51d5a4cd-04d7-ef67-3f7d-ddbb61585ed1.png)


開発ツールの設定
================


Firefox
-------

- __まさか設定が入ってるとは思わないであろうメニューの中__。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/1932e270-27c6-b77f-d58b-236a9de4e5ad.png)


Chromium
--------

- __まさか設定が入ってるとは思わないであろうメニューの中__。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411269/038fe91c-616c-2fff-c83f-f2ac40faca01.png)


おわりに
========

この記事の中ではたくさんのツールを~~画像で文章水増しして~~紹介しましたが、__この記事の内容はただの初歩にすぎません。__
そして、MDNによればFirefoxのNightlyビルドでは新型の開発ツールが登場しているとのこと。
開発ツールは、Webとともにこれからも進化し続けます。
___俺たちの旅は、まだ始まったばかりだ。___