SlideShare a Scribd company logo
Chrome  Developer  Tools  を
     使いこなそう!

                                           2013/04/02
                    Google  Developers  Live  Japan  #3  
このスライドを使ったセッションはこちら  →  http://bit.ly/YYtStr
                     Toru  Yoshikawa  (@yoshikawa_̲t)
Who?
吉川  徹  /  Toru  Yoshikawa
@yoshikawa_̲t
   Google  Developer  Experts  (Chrome)

   html5j/HTML5とか勉強会スタッフ

   Web先端味⾒見見部  顧問

   ⽇日本jQuery  Mobileユーザー会  管理理⼈人

   Sublime  Text  2  Japan  Users  Group  管理理⼈人

   allWebクリエイター塾/jQuery  Mobile担当講師

   Blog:  http://d.hatena.ne.jp/pikotea/
はじめに
初⼼心者向けの解説はこちらから

  Chrome  DevTools  for  beginners  (http://
  www.slideshare.net/yoshikawa_̲t/chrome-‐‑‒
  devtools-‐‑‒for-‐‑‒beginners)

本資料料は、あくまで解説を聞きながらメモを取らな
くて済むようにしたものです。本資料料のみでは、若若
⼲干わかりづらい部分があるかもしれませんので、ご
注意ください。
対象範囲

Elements  …  要素・スタイルの確認・編集

Resources  …  ファイル構成・リソース(Web  Storageなど)の確認  

Network  …  ネットワークアクセスの確認・分析

Sources  …  ソースファイルの確認・保存、JavaScriptのデバッグ

Timeline  …  パフォーマンスの測定と分析

Profiles  …  CPU、メモリ状況、CSSセレクターのプロファイル

Audits  …  ネットワーク、サイトスピードのチェック・推奨事項

Console  …  エラーログ表⽰示、JavaScript・コンソールコマンドの実⾏行行
Agenda
Sourcesパネルの基本とTips

JavaScriptのデバッグ

Timelineパネルを使ったパフォーマンスチューニング

TimelineパネルとProfilesパネルを使ったメモリリーク調査
Sourcesパネルの基本とTips
Sourcesパネル




ファイルツリー            サイドパネル

          ソースパネル
各部解説
        サイドパネルの
         表⽰示・⾮非表⽰示

                タブ
          ※「Content  scripts」は
       Chrome  Extensionsで利利⽤用して
           いるスクリプトこと



  サイドパネルの固定

  ドメインごとの
  ファイルツリー
ファイルの保存と履履歴管理理


ElementsパネルやSourcesパネルで編集した結
果は、右クリックで保存する

右クリック「Local  Modifications...」で履履歴管理理
ができる
ファイルの履履歴管理理
便便利利なショートカット
ショートカット

 Command+O  …  ファイル選択

 Command+Shift+O  …  関数・セレクター選択

 Command+L  …  指定⾏行行へ移動

 Command+Option+F  …  ソースコードの全⽂文検索索
全⽂文検索索
MinifyされたJavaScriptコードの整形




  MinifyされたJavaScriptコードを整形できる

  そのままデバッグ可能
JavaScriptのデバッグ
JavaScriptのデバッグの基本的な流流れ

1. デバッグの開始(コードの停⽌止)

2. 状態の監視

3. ステップ実⾏行行

4. 「2」に戻る
デバッグの開始(コードの停⽌止)

 基本的な⽅方法

  Breakpoints

  debugger句句
状態の監視

Watch  Expressions

Call  Stack

Scope  Variable

Console
Watch  Expressions
Call  Stack
Scope  Variables
Console
ステップ実⾏行行
Pause/Continue  (F8)

Step  over  (F10)

Step  into  (F11)

Step  out  (Shift+F11)
指定箇所まで移動
いろいろなコードの停⽌止⽅方法

 条件付きBreakpoints

 DOM  Breakpoints

 XHR  Breakpoints

 Event  Listener  Breakpoints

 Exception発⽣生

 Workers
条件付きBreakpoints




ある式がtrueになった際にブレークする

⾏行行番号の右クリックから式を⼊入⼒力力
DOM  Breakpoints
ある要素が変化した際にブレークする

   属性の変化

   ⼦子要素の追加

   要素の削除

Elementsパネルから要素を右クリック

Event  Listener  BreakpointsのDOM  
Mutationでも可能
XHR  Breakpoints




XHR(Ajax)が投げられた際にブレークする

リクエスト先のURLに含まれる⽂文字列列を指定する

XHR  Breakpointsパネルから+ボタン
Event  Listener  Breakpoints
  イベントが発⽣生した際にブレークする

  イベント

    Animation,  Timer

         requestAnimationFrameやsetTimeoutなど

    Control,  Device

         resizeやscroll,  deviceorientationなど

    Clipboard

    Touch,  Mouse,  Keyboard

    DOM  Mutation

         DOM操作
Exception発⽣生



Exceptionが発⽣生した際にブレークする

ステータスバーのポーズボタン

ポーズボタンを1回クリックですべてのExceptionをブレーク

ポーズボタンをもう1回クリックでcatchされていないExceptionを
ブレーク
Workers




Web  Workers開始時にブレークする

別のウィンドウされ、Web  WorkerのJSがデバッ
グできる
LiveEdit!




デバッグ中でもJavaScriptを編集できる

編集した結果を保存すると⾃自動的に再実⾏行行される
Timelineパネルを使ったパ
フォーマンスチューニング
デモ
Timelineパネル
Timelineパネル

     記録ボタンを押して計測開始

     記録ボタンをもう⼀一度度押して計測停⽌止


             GCの実施



         記録開始・終了了
15ms以下のレコードを⾮非表⽰示
Timelineパネル



レコードの種類

 Loading  …  読み込みなどのネットワークに関するレコード

 Scripting  …  イベントや関数呼び出しなどJSの実⾏行行に関するレコード

 Rendering  …  DOMの参照や変更更、レンダリングなどに関するレコード

 Painting  …  画像の表⽰示やopacity、box-‐‑‒shadowなど画⾯面の表⽰示に関す
 るレコード
Eventsの⾒見見⽅方


全体的に時間が掛かっているイベントの割合を⾒見見てチューニングすべき
項⽬目をチェックする

  Loading  >  ネットワーク系のチューニング

  Scripting  >  JavaScriptのチューニング

  Rendering,  Painting  >  DOM操作、描画系のチューニング

上部のタイムにある⻘青いラインは、DOMContentLoadedイベントを表す

⾚赤いラインは、loadイベントを表す
Framesの⾒見見⽅方


スムーズにスクロール、アニメーションなどができているかどうかを
時間別に確認する

30FPSライン、60FPSラインを⾒見見て、ラインを越えているレコードが
ないかどうかを確認する

アニメーションは、30FPS(24FPSぐらいでも良良い)

FPSゲームなどのシビアなものは60FPS
チューニングすべき部分



ラインを越えて、突出しているレコードがチュー
ニング対象

ドラッグで表⽰示範囲を調整できる
レコードの詳細を確認する
 レコードをクリックすれば詳細を表⽰示可能

 そのままでソースを表⽰示できるものもあれば、できないものもある
Loadingレコード
Loadingレコード
     レコード名                            説明

Send  Request       リクエストの送信

Receive  Response   レスポンスの受信

                    レスポンスデータの受信。⼤大きいデータの場合、複数の
Receive  Data
                    レコードに分かれることがある。

Finish  Loading     レスポンスデータの受信完了了

                    HTMLのパース。JavaScriptによるdocument.write()や
Parse  HTML
                    要素のinnerHTML属性への追加でも発⽣生する。
Scriptingレコード
Scriptingレコード
            レコード名                                  説明

Evaluate  Script            JavaScriptコードを読み込み・実⾏行行する

Function  Call              関数の実⾏行行

Event                       各種イベント。イベント名も表⽰示される。

Install  Timer              タイマーの作成(setInterval、setTimeout)

Timer  Fired                タイマーの実⾏行行

Remove  Timer               タイマーの削除

GC  Event                   GCの発⽣生

XHR  Ready  State  Change   XMLHttpRequstの状態の更更新

Create  WebSocket           WebSocketコネクションの作成

Destroy  WebSocket          WebSocketコネクションの破棄

Request  Animation  Frame   アニメーションフレームの作成(requestAnimationFrame)

Animation  Frame  Fired     アニメーションフレームの実⾏行行
Renderingレコード
DOMアクセスによって発⽣生する

キャッシュをうまく利利⽤用したりしてDOMアクセスを最⼩小限に
Renderingレコード
     レコード名                        説明

Recalculate  Style   要素(DOM)の参照や変更更、スタイルの変更更など

Layout               レイアウトの変更更
Renderingレコードの
パフォーマンスボトルネック




リフローが発⽣生する操作を繰り返すと発⽣生する
Paintingレコード
もっともパフォーマンスに影響しやすいレコード

過度度な装飾は控える
Paintingレコード
        レコード名                    説明

Composite  Layers   レイヤーの合成

Paint               画⾯面の描画

Scroll              スクロール

Image  Decode       画像のデコード処理理

Image  Resize       画像のリサイズ処理理
TimelineパネルとProfilesパネル
  を使ったメモリリーク調査
デモ
Memoryの⾒見見⽅方


メモリーリークをチェックすることができる

メモリの使⽤用量量が定期的に下降降しているのは、GCが発⽣生して
いるため

GCは、⼀一定以上のメモリを消費するかアイドル時間に⾃自動的
に発⽣生する

グラフが右肩上がりか、徐々に上がっていく場合は注意が必要
Memory  (Counters)  の⾒見見⽅方



                    [最⼩小値  -‐‑‒  最⼤大値]
 DOM  Node  CountやEvent  Listener  Countが増えて、減らな
 い場合はリークしている可能性がある

 iframeの内容もカウントされる

 問題がありそうな場合には、Profilesで詳細を確認する
Profiles




CPU、CSS  Selector、Heap  Snapshotなどがあるが
今回は、Take  Heap  Snapshotを簡単に解説します
Profiles



記録⽅方法は、Timelineと同じ(Startボタンでも可能)

スナップショットは、定点の記録なので⼀一瞬で終了了

CPU  Profileでは、console.profile('プロファイル名')、  
console.profileEnd()などのコードで正確な位置で記録す
ることもできる
Profiles  (Heap  Snapshots)



   スナップショットを2つ記録して比較
Profiles  (Heap  Snapshots)


  差分からGCで回収されていないオブジェクトを⾒見見つける

  項⽬目

        #  New  >  新規オブジェクト

        #  Deleted  >  削除オブジェクト

        #  Delta  >  差分カウント

        Alloc.  Size  >  割り当てられたメモリサイズ

        Freed  Size  >  解放されたメモリサイズ

        Size  Delta  >  差分メモリサイズ
Object's  retaining  tree
そのオブジェクトに対してどのような参照が残っ
ているかを確認して、適切切に参照を解放する
その他のTips
Chrome  Developer  Tools
     の実験的機能の有効
chrome://flags




Settings
便便利利な拡張機能
Page  Speed  …  ページ⾼高速化のための提案をしてくれる

Accessibility  Developer  Tools  …  アクセシビリティを確保する
ための提案をAuditsに追加する

jQuery  Debugger  …  jQueryのイベントやデータをElementsパ
ネルで確認できる

DevTools  autosave  …  ElementsパネルやSourcesパネルで編
集した内容を⾃自動的にローカルに保存する

AngularJS  Batarang  …  AngularJSの開発に凄く便便利利

RailsPanel  …  Ruby  on  Railsの開発に凄く便便利利
DevTools  autosave
⾒見見た⽬目のカスタマイズ




MNML  Theme  (https://github.com/frontdevDE/mnml-‐‑‒devtools-‐‑‒theme)
⾒見見た⽬目のカスタマイズ
Custom.cssに任意のスタイルを定義する

Mac

  ~∼/Library/Application  Support/Google/Chrome/Default/
  User  StyleSheets/Custom.css

Windows

  C:UsersYourUsernameAppDataLocalGoogleChrome
  User  DataDefaultUser  StyleSheetsCustom.css

⼤大本のスタイルの確認(DevToolsをデバッグしても良良い)

  chrome-‐‑‒devtools://devtools/devTools.css
その他のテーマ
MNML  Theme(https://github.com/frontdevDE/mnml-‐‑‒devtools-‐‑‒theme)  

Monokai  Dark(https://gist.github.com/bc12d6bb85ffb96042e8)

Tomorrow  Theme(https://gist.github.com/1163300)

IR_̲Black  Theme(https://gist.github.com/1150520)

Solarized  Dark(https://gist.github.com/2174604)

Ruby  Blue(https://github.com/chrisbateman/ChromeDevToolsTheme-‐‑‒RubyBlue/)

Expresso(https://gist.github.com/1207219)

Inversion(https://github.com/mohsen1/Chrome-‐‑‒Dev-‐‑‒tools-‐‑‒dark-‐‑‒theme)

Dark  Theme(https://github.com/xajler/chrome-‐‑‒devtools-‐‑‒dark-‐‑‒theme)

Dark  Dev(https://github.com/simonsmith/DarkDev)

WebLight  Theme(Theme:  https://gist.github.com/1325072)
チートシート




http://anti-code.com/devtools-cheatsheet/
まとめ
Chrome  Developer  Toolsは、使いこなせば様々な分析は
できますが、万能ではありません。

Chrome  Developer  Toolsは、あくまで必要な情報を提供
するというツールです。ツールを使うのは⼈人間なので、う
まく⼯工夫してデバッグやチューニングを⾏行行いましょう。

モバイルはRemote  debugで実機チェックをしましょう。

Chrome  Developer  Toolsは、頻繁にアップデートされて
います。新しい機能を是⾮非試してみて下さい。(要望した
機能も追加されるかも?)
Thank  you!!
 (@yoshikawa_̲t)
Resources

https://developers.google.com/chrome-‐‑‒
developer-‐‑‒tools/

https://developers.google.com/live/chrome/

http://anti-‐‑‒code.com/devtools-‐‑‒cheatsheet/

More Related Content

PDF
これからSpringを使う開発者が知っておくべきこと
KEY
やはりお前らのMVCは間違っている
PPTX
Amazon EKS によるスマホゲームのバックエンド運用事例
PDF
3D描画基礎知識
PDF
低レイヤー入門
PDF
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
PDF
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
PPTX
backlogsでもCI/CDする夢を見る
これからSpringを使う開発者が知っておくべきこと
やはりお前らのMVCは間違っている
Amazon EKS によるスマホゲームのバックエンド運用事例
3D描画基礎知識
低レイヤー入門
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
backlogsでもCI/CDする夢を見る

What's hot (20)

PDF
LXC入門 - Osc2011 nagoya
PDF
ドメイン駆動設計サンプルコードの徹底解説
PPTX
初心者向けMongoDBのキホン!
PDF
TDD のこころ
PPTX
世界一わかりやすいClean Architecture
PPTX
スマホアプリのSSLサーバ証明書の検証不備について
KEY
Go言語のスライスを理解しよう
PDF
自宅で出来る!ゲームサーバの作り方
PDF
The only one big thing every programmer should know
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
PDF
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
PPTX
負荷分散だけじゃないELBのメリット
PPTX
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
PDF
PostgreSQLアンチパターン
PDF
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
PDF
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
PDF
Unityと.NET
PDF
Cinemachineで見下ろし視点のカメラを作る
PDF
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
PDF
分散トレーシング技術について(Open tracingやjaeger)
LXC入門 - Osc2011 nagoya
ドメイン駆動設計サンプルコードの徹底解説
初心者向けMongoDBのキホン!
TDD のこころ
世界一わかりやすいClean Architecture
スマホアプリのSSLサーバ証明書の検証不備について
Go言語のスライスを理解しよう
自宅で出来る!ゲームサーバの作り方
The only one big thing every programmer should know
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
負荷分散だけじゃないELBのメリット
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
PostgreSQLアンチパターン
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Unityと.NET
Cinemachineで見下ろし視点のカメラを作る
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
分散トレーシング技術について(Open tracingやjaeger)
Ad

Similar to Chrome Developer Toolsを使いこなそう! (20)

PDF
Chrome DevTools.next
PDF
Devtools.next
PDF
すごいぞ!Google Chrome
PDF
Chromeでjavascriptデバッグ!まず半歩♪
PDF
JavaScript.Next Returns
PDF
jQuery Performance Tips – jQueryにおける高速化 -
PPTX
HTML5最新動向
PDF
Firefox DevTools
PPTX
HTML5&API総まくり
PDF
JavaScript.Next
PPT
Firefox 学生向けアドオンパック
PDF
Browser Computing Structure
PDF
Firefox 3.1 In Depth (?)
PDF
⑮jQueryをおぼえよう!その1
KEY
春のJavaScript祭り
PDF
Firefox 3.1 & MozTech
PDF
JavaScriptことはじめ
PDF
jQuery Mobile 1.2 最新情報 & Tips
PDF
HTML5でオフラインWebアプリケーションを作ろう
PDF
Java scriptの進化
Chrome DevTools.next
Devtools.next
すごいぞ!Google Chrome
Chromeでjavascriptデバッグ!まず半歩♪
JavaScript.Next Returns
jQuery Performance Tips – jQueryにおける高速化 -
HTML5最新動向
Firefox DevTools
HTML5&API総まくり
JavaScript.Next
Firefox 学生向けアドオンパック
Browser Computing Structure
Firefox 3.1 In Depth (?)
⑮jQueryをおぼえよう!その1
春のJavaScript祭り
Firefox 3.1 & MozTech
JavaScriptことはじめ
jQuery Mobile 1.2 最新情報 & Tips
HTML5でオフラインWebアプリケーションを作ろう
Java scriptの進化
Ad

More from yoshikawa_t (20)

PDF
Ionicで作るTechfeed
PDF
困った時のDev toolsの使い方(初心者向け)
PDF
TechFeedというテクノロジーキュレーションサービスを作った話
PDF
Chrome DevTools Awesome 10 Features +1
PDF
これからのモバイルWebと最新動向
PDF
いまさら聞けないHTML5概要
PDF
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
PDF
jQuery Mobile is not dead!
PDF
HTML5開発最前線
PDF
Chrome Apps のデバイスAPI
PDF
Chrome Apps & Chromeウェブストア概要
PDF
Chrome DevTools for beginners v1.2
PDF
モバイル時代のWebパフォーマンス
PDF
モバイル時代のWebパフォーマンスTips
PDF
Chrome apps for mobile 概要
PDF
Chrome Apps 概要
PDF
Chrome Devtools for beginners (v1.1)
PDF
Html5概要 & デモ
PDF
いまさら聞けないCSSレイアウト入門
PDF
Sencha touch vs j query mobile
Ionicで作るTechfeed
困った時のDev toolsの使い方(初心者向け)
TechFeedというテクノロジーキュレーションサービスを作った話
Chrome DevTools Awesome 10 Features +1
これからのモバイルWebと最新動向
いまさら聞けないHTML5概要
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
jQuery Mobile is not dead!
HTML5開発最前線
Chrome Apps のデバイスAPI
Chrome Apps & Chromeウェブストア概要
Chrome DevTools for beginners v1.2
モバイル時代のWebパフォーマンス
モバイル時代のWebパフォーマンスTips
Chrome apps for mobile 概要
Chrome Apps 概要
Chrome Devtools for beginners (v1.1)
Html5概要 & デモ
いまさら聞けないCSSレイアウト入門
Sencha touch vs j query mobile

Chrome Developer Toolsを使いこなそう!