Slide 1

Slide 1 text

DevTools の 使い⽅ 知ってトクする ダーシノ @bc_rikko ※ 当資料では Chrome DevTools を主に扱っています

Slide 2

Slide 2 text

⽬次 DevTools とは ウェブサイトを“つかう”⼈向け - ページ全体のスクリーンショットを撮りたい - マニュアルや企画⽤にページの⼀部を書き換えたい - 動かない原因を知りたい ウェブサイトを“つくる”⼈向け - ウェブサイトの品質を知りたい - パフォーマンスを計測したい - メモリリークの調査をしたい

Slide 3

Slide 3 text

DevTools とは ※ 「デベロッパーツール」「開発者ツール」と呼ぶこともありますが、当資料では DevTools で統⼀します

Slide 4

Slide 4 text

フロントエンド「三種の神器」のひとつ ブラウザに組み込まれている開発⽀援ツール - ブラウザごとに特⾊がある - Firefox: GUIでスタイルをいじれる(デザイナー向け) - Chrome: パフォーマンス計測の機能が充実している(エンジニア向け) DevTools とは #1 図: GUIでclip-pathを編集している(Firefox) 図: パフォーマンスやアクセシビリティ対応を確認している(Chrome) ※ これは個⼈の意⾒です

Slide 5

Slide 5 text

DevTools でできること - HTML、CSS、JavaScriptの確認、編集、デバッグ - エラーログの確認 - 通信履歴の確認 - Cookie、Web Storage、キャッシュなどの確認 - パフォーマンス計測 - メモリリーク調査 - etc. DevTools とは #2

Slide 6

Slide 6 text

DevTools の表⽰⽅法 - メニュー > [その他のツール] > [デベロッパーツール] - ⌘ + ⌥ + I(Mac) - Ctrl + Shift + I or F12(Win) DevTools とは #3 図: DevToolsを開く⽅法 図: DevToolsの全景

Slide 7

Slide 7 text

Elements
 DOMとCSSを確認、編集できる Console
 ログの出⼒結果やJSの実⾏ができる Sources
 読み込まれているJavaScriptを確認できる Network
 リクエストの履歴が確認できる Performance, Memory
 パフォーマンス計測ができる Application
 Cookie、Web Storageなどが確認できる Lighthouse
 パフォーマンスやアクセシビリティを計測できる DevTools とは #4 図: DevToolsの全体図(Chrome 88)

Slide 8

Slide 8 text

ウェブサイトを 
 “つかう”⼈向け

Slide 9

Slide 9 text

ページ全体のスクリーンショットを撮りたい #1 図: ブラウザの表⽰領域と表⽰領域外 表⽰領域外 画⾯に表⽰されている部分しか
 スクリーンショットが撮れない 悩 解 “Capture full size screenshot” を使う

Slide 10

Slide 10 text

ページ全体のスクリーンショットを撮りたい #2 図: コマンドパレットからCaptureを実⾏する ⽅法1: コマンドパレットから実⾏ 1. DevTools 上で ⌘ + ⇧ + P(Mac)、
 Shift + Alt + P(Win)でコマンドパレットを開く 2. [capture full size screenshot] を選択する 3. Enter でキャプチャを実⾏する 4. 画像ファイルを保存する

Slide 11

Slide 11 text

ページ全体のスクリーンショットを撮りたい #3 図: Device ModeからCaptureを実⾏する ⽅法2: Device Mode から実⾏ 1. [ Toggle Device Toolbar] をクリックし、 Device Modeで表⽰する 2. Device Mode のメニューから [Capture full size screenshot] をクリックする 3. 画像ファイルを保存する

Slide 12

Slide 12 text

ページの⼀部を書き換えたい #1 図: Elements パネルでDOMを書き換える 表⽰領域外 資料⽤にウェブページを書き換えたい けど、デザイナーやエンジニアに依頼 するのは⾯倒くさい 悩 解 Elements パネルで DOMツリー を
 編集する

Slide 13

Slide 13 text

ページの⼀部を書き換えたい #2 図: Elements パネルでDOMを書き換える ⽅法1: HTML を編集する 1. Shift + ⌘ + C(Mac)、Ctrl + Shift + C(Win)
 または DevTools 上の で 要素選択モード にする 2. 編集したい要素をページから選ぶ 3. コンテキストメニュー > [Edit as HTML] またはダブル クリックでHTMLを編集する 📝 DevTools の拡⼤・縮⼩
 DevTools からHTMLやCSSを編集すると⽂字が⼩さくて⽬が疲れ る、そんなときは⽂字サイズを変更してみましょう。 縮⼩: ⌘ + -(Mac)、Ctrl + -(Win)
 拡⼤: ⌘ + ^(Mac)、Ctrl + ^(Win)
 リセット: ⌘ + 0(Mac)、Ctrl + 0(Win)

Slide 14

Slide 14 text

ページの⼀部を書き換えたい #3 図: Console パネルで DesignMode を有効にする ⽅法2: DesignMode を有効にする 1. DevTools の Console パネルを表⽰する 2. `document.designMode='on'` と⼊⼒し実⾏する 3. DesignMode が有効になるので、ウェブページの⽂章を 直接編集する

Slide 15

Slide 15 text

動かない原因を知りたい #1 図: Console に出⼒されたメッセージ ボタンが反応しない、エラーがでて使 えない 悩 解 Console パネルや Network パネルで エラーが発⽣していないか確認する

Slide 16

Slide 16 text

動かない原因を知りたい #2 図: Console パネルにでたエラーたち ⽅法1: Console パネルを確認する - JavaScriptのランタイムエラー(実⾏時にエラーが発 ⽣するバグ)がわかる - リソース(ファイル、画像など)の読み込みエラーが わかる - エラーの右に表⽰されるリンクをクリックすると、コ ードのどこでエラーになっているか表⽰される 📝 ログの種類は3つある
 ⽩(通常): デバッグのログ ⻩(警告): エラーほど重⼤ではないけど、開発者に知らせる
 ためのログ ⾚(エラー): やばい…。

Slide 17

Slide 17 text

動かない原因を知りたい #3 図: Network パネルに表⽰されたリクエスト⼀覧 ⽅法2: Network パネルを確認する - HTTPリクエスト の履歴が確認できる 📝 エラーの問い合わせ先 ステータスコードでどこでエラーが起きているかだいたい把握できる 100〜399: 問題なし
 400〜499: フロントエンドエンジニア
 500〜599: バックエンドエンジニア(or フロントエンドエンジニア) 📝 より詳しい内容は… 伝わるバグ報告 by ダーシノ
 https://knowledge.sakura.ad.jp/26627/

Slide 18

Slide 18 text

ウェブサイトを 
 “つくる”⼈向け

Slide 19

Slide 19 text

ウェブサイトの品質を知りたい #1 図: www.sakura.ad.jpのLighthouseの結果 SEO、アクセシビリティなど対応でき ているか⼼配 悩 解 Lighthouse パネル(旧Audits)で計測 する

Slide 20

Slide 20 text

ウェブサイトの品質を知りたい #2 Lighthouse パネルで計測する - 計測したいカテゴリーにチェックをつけ、[Generate report] をクリックする - 各カテゴリーのスコアが表⽰される - 品質向上のヒントをくれる 📝 Lighthouse の結果がすべてではない
 imgタグ の alt属性 は、画像が表⽰されない場合の代替⽂字列 (画像の説明)を提供する。Lighthouse は alt属性 が設定され ているかどうかしか⾒ていないので “abc123” でも OKになる。 スコアはあくまで基準なので⽬的と⼿段を間違えないようにしま しょう。 図: www.sakura.ad.jp の Lighthouse のスコア

Slide 21

Slide 21 text

ウェブサイトの品質を知りたい #3 調査できるカテゴリー - Performance
 ウェブページが表⽰されるまでの速さを計測する - Progressive Web App
 ネイティブアプリみたいに使えるか計測する - Best practices
 ⼀般的に「やっておくといいぜ」を計測する - Accessibility
 どんなユーザーでもコンテンツにアクセス可能か計測する - SEO
 Googleさんに気に⼊られるための要素を計測する 図: www.sakura.ad.jp の Lighthouse の詳細 📝 ウェブ開発の勉強にも最適
 すべての項⽬には詳細説明へのリンク [Learn more.] が張ら れ、原因と対策がまとめられているので勉強にも最適。

Slide 22

Slide 22 text

パフォーマンスを計測したい #1 図: www.sakura.ad.jp の Performance の計測結果 読み込み・描画が遅いけど原因がわか らない 悩 解 Performanceパネルで計測する

Slide 23

Slide 23 text

パフォーマンスを計測したい #2 Performance パネルで計測する - Record:
 クリックした瞬間から記録する
 特定操作のパフォーマンスを計測したいときに便利 - Start profiling and reload page:
 リロードしてから描画が終わるまでを⾃動で記録する
 FP、FCP、FMP、TTIを計測したいときに便利 図: www.sakura.ad.jp の Performance を計測 📝 パフォーマンスに関する⽤語
 First Paint
 何でもいいのでページが表⽰されはじめたとき First Contentful Paint
 コンテンツ(テキストや画像など)が表⽰されはじめたとき First Meaningful Paint
 ユーザーにとって意味のある表⽰になったとき(わりと曖昧) Time To Interactive
 描画処理が終わりユーザーが操作できるようになったとき

Slide 24

Slide 24 text

パフォーマンスを計測したい #3 図: www.sakura.ad.jp の Performance を計測結果 1 各セクションの説明 1. タイムラインのグラフ
 CPU使⽤量、FPSなど 2. イベントの⼀覧
 リソースの読み込み、実⾏されたスク リプトなど 3. メモリ使⽤量のグラフ
 JS Heapやノード数、GPUメモリの使 ⽤量など 4. アクティビティの概要
 計測範囲の概要円グラフ 2 3 4 ※ ちゃんと説明しようとすると時間が⾜りないので詳細は割愛します

Slide 25

Slide 25 text

パフォーマンスを計測したい(実例 1) 時間 時間 ※説明をシンプルにするため同時接続数を3にしています ファイルの読み込み順序を変えただけで⾼速化 クリティカルパスに
 なりうるファイル 早めに読込開始する … JSファイル

Slide 26

Slide 26 text

パフォーマンスを計測したい(実例 2) 時間 時間 ※説明をシンプルにするため同時接続数を3にしています … JSファイル … イメージファイル 重い画像が占拠して 他のファイルが読み込めない 優先度が低い画像を後回し ファーストビューに不要なリソースを遅延読み込み First Contentful Paint までの時間が短縮

Slide 27

Slide 27 text

メモリリークの調査をしたい #1 図: www.sakura.ad.jp の Memory の計測結果 ずっと使っているとブラウザが重くなる 悩 解 Memory パネルで計測する

Slide 28

Slide 28 text

メモリリークの調査をしたい #2 Memoryパネルで計測する
 (Performanceパネル のMemory部分の詳細版) - Heap snapshot:
 ある時点でのヒープ(動的に割当可能なメモリ領域)のスナップショッ トをとる - Allocation instrumentation on timeline:
 50ms ごとにヒープスナップショットを取得し、時系列で記録する - Allocation sampling:
 記録中に使⽤されたメモリを記録する 図: www.sakura.ad.jp の Memory の計測結果

Slide 29

Slide 29 text

メモリリークの調査をしたい #3 スナップショットの表⽰⽅法 - Summary
 オブジェクトをコンストラクタ別にグループ化して表⽰する
 DOMツリーのメモリリークを調べるのに適している - Comparison:
 2つのスナップショットを⽐較し、増減したオブジェクトや割当/開放さ れたメモリサイズを表⽰する
 メモリリークを調べるのに適している - Comtainment:
 グローバル名前空間で参照されているオブジェクトを表⽰する
 グローバル変数の調査に適している - Statistic:
 メモリの使⽤割合を円グラフで表⽰する 図: www.sakura.ad.jp の Memory の計測結果 ※ ちゃんと説明しようとすると時間が⾜りないので詳細は割愛します

Slide 30

Slide 30 text

おわり

Slide 31

Slide 31 text

ダーシノ こんな⼈が発表しました @bc_rikko @BcRikko kuroeveryday.blogspot.com NES.css ファミコン⾵CSSフレームワーク 17,300+stars on GitHub https://github.com/nostalgic-css/NES.css 仮想DOM 実践⼊⾨ ⾃作フレームワークを作りながら仮想DOMを学ぶ記事、エンジニアHub寄稿 https://eh-career.com/engineerhub/entry/2020/02/18/103000 CSSと副業 OSS活動や副業に関するインタビュー記事、Offers寄稿 https://offers.jp/media/sidejob/workstyle/a_1769