SlideShare a Scribd company logo
遅いマークダウンアプリを
速くする!!
Reactパフォーマンスチューニング
荒井雄治朗(32)プログラマー GIG所属
Classicc
横にマークダウンのメモを並べてかける便利なノート
React+Electronで動いてる
便利
パフォーマンスを改善しよう
パフォーマンスを改善しよう
1. どこが遅いのかを理解する
パフォーマンスを改善しよう
1. どこが遅いのかを理解する
2. 遅い原因を理解する
パフォーマンスを改善しよう
1. どこが遅いのかを理解する
2. 遅い原因を理解する
3. 速くする
遅いところを見つける
遅いところを見つける
- 自分自身が本物のユーザーになる
- プログラムを甘やかさない
本当の意味で使わなけ
れば、我々はその遅さ
に気づくことができな
い
本当の意味で使わなけ
れば、我々はその遅さ
に気づくことができな
い ー 荒井 雄治朗
「デバッグ」と「使う」
デバッグをしてるうちは遅いことに気づけな
い!!我々は!!
例)キーを入力してから表示されるまでの時間
例)キーを入力してから表示されるまでの時間
- 200msかかる時がある
例)キーを入力してから表示されるまでの時間
- 200msかかる時がある
- 200msって速い
例)キーを入力してから表示されるまでの時間
- 200msかかる時がある
- 200msって速い
- 問題に気づけない
例)キーを入力してから表示されるまでの時間
- 200msかかる時がある
- 200msって速い
- 問題に気づけない
例)キーを入力してから表示されるまでの時間
- 200msかかる時がある
- 200msって速い
- 問題に気づけない
たまに速い
あ
あい
あいう
あいうえ
あいうえ
あいうえお
あいうえおか
あいうえおかき
あいうえおかきく
あいうえおかきく
あいうえおかきくけ
あいうえおかきくけこ
デバッグではこれを問題だと感じられない
機能が正しく動くかを確認するために動かしてもわからない
文章を書くために入力することが重要だ
デバッグではこれを問題だと感じられない
機能が正しく動くかを確認するために動かしてもわからない
文章を書くために入力することが重要だ
なぜ?
デバッグではこれを問題だと感じられない
機能が正しく動くかを確認するために動かしてもわからない
文章を書くために入力することが重要だ
なぜ?→ わからない
デバッグではこれを問題だと感じられない
デバッグではむかつかなかった
自分がユーザーになったときはむかつい
た
デバッグではこれを問題だと感じられない
デバッグではむかつかなかった
自分がユーザーになったときはむかついた
むかつくとこに、ちゃんとむかつける
プログラムを甘やかさない
プログラムを甘やかさない
遅いマシンで動かしてみましょう!
Chromeなら開発者ツールで遅くできます!
ここ
ここ
4倍遅い状態で動かせる
遅い原因を特定する
特定するときもChromeの開発者ツール!
React v16から勝手に記録してくれること
- mount
- update
- unmount
React v16から勝手に記録してくれること
- mount(画面に表示)
- update(更新)
- unmount(画面から取り除かれる)
特定するときもChromeの開発者ツール!
ここ
特定するときもChromeの開発者ツール!
特定するときもChromeの開発者ツール!
特定するときもChromeの開発者ツール!
見るべきとこ
更新しなくて良いとこ
更新してない??
更新しなくて良いとこ更新してない?
更新しなくて良いとこ更新してない?
ここはノート
更新しなくて良いとこ更新してない?
ここはノート
一個一個がページ
更新しなくて良いとこ更新してない?
更新しなくて良いとこ更新してない?
ここはノート
無駄!!
速くする
速くするには
- shouldComponentUpdate を書こう!
- windowingしよう!
ってReactのドキュメントに書いてある!
shouldComponentUpdateを書く
- Reactコンポーネントの状態が変わった時に、
呼ばれて、trueを返すとrenderを実行する
- デフォルトはtrueを返す
- trueを返しても、前の状態と値が同じだと判
断できるときはrenderを実行しない
shouldComponentUpdateを書く
shouldComponentUpdateを書く
参照型だと同じと扱われない。
結果
ここ
- 見えてる部分
Windowingをする
- 実際のデータ
Windowingをする
- 実際のデータ
Windowingをする
無駄
- 実際のデータ
Windowingをする
見えないとこはレンダリングしない=windowing
- react-window ってライブラリで実装できる!
Windowingをする
結果
ここ!!
まとめ
- 本物のユーザーになれ・甘やかすな
まとめ
- 本物のユーザーになれ・甘やかすな
- Chromeのパフォーマンスツールすごい
まとめ
- 本物のユーザーになれ・甘やかすな
- Chromeのパフォーマンスツールすごい
- shouldComponentUpdateとwindowingしよう
まとめ
- 本物のユーザーになれ・甘やかすな
- Chromeのパフォーマンスツールすごい
- shouldComponentUpdateとwindowingしよう
- 結果を数字で見せよう!
まとめ
Good is good.
We provide opportunities to the SEKAI by fusing technology and ideas.
テクノロジーとクリエイティブでセカイをより良くする
のこと

More Related Content

Similar to 遅いMarkdownアプリを速くする!!Reactアプリのパフォーマンスチューニング

第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議Kaoru NAKAMURA
 
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようDjango ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Takayuki Shimizukawa
 
Android開発者とデザイナーの効率的な連携について
Android開発者とデザイナーの効率的な連携についてAndroid開発者とデザイナーの効率的な連携について
Android開発者とデザイナーの効率的な連携についてlychee .
 
コロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーション
コロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーションコロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーション
コロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーション
Masayuki Uehara
 
知っ徳!納徳!Magic Leap 《デバイス編》
知っ徳!納徳!Magic Leap 《デバイス編》知っ徳!納徳!Magic Leap 《デバイス編》
知っ徳!納徳!Magic Leap 《デバイス編》
Sadao Tokuyama
 
フロントエンド開発入門(React).pdf
フロントエンド開発入門(React).pdfフロントエンド開発入門(React).pdf
フロントエンド開発入門(React).pdf
KSato2
 
コンテナー型仮想環境の情報交換会
コンテナー型仮想環境の情報交換会コンテナー型仮想環境の情報交換会
コンテナー型仮想環境の情報交換会
Naotaka Jay HOTTA
 
131207 NECTJ Workshop 2
131207 NECTJ Workshop 2131207 NECTJ Workshop 2
131207 NECTJ Workshop 2NECTJ
 
楽天トラベルとSpring(Spring Day 2016)
楽天トラベルとSpring(Spring Day 2016)楽天トラベルとSpring(Spring Day 2016)
楽天トラベルとSpring(Spring Day 2016)
Rakuten Group, Inc.
 
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Developers Summit
 
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe
 
ソフトウェアジャパン2018 ITフォーラムセッション(2)
ソフトウェアジャパン2018 ITフォーラムセッション(2)ソフトウェアジャパン2018 ITフォーラムセッション(2)
ソフトウェアジャパン2018 ITフォーラムセッション(2)
aitc_jp
 
Stac2014 石川
Stac2014 石川Stac2014 石川
Stac2014 石川
Tatsuya Ishikawa
 
Dev(ice)love デバイス祭り
Dev(ice)love デバイス祭りDev(ice)love デバイス祭り
Dev(ice)love デバイス祭りKaoru NAKAMURA
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
Koichiro Sumi
 
プログラマに優しいバグレポートの書き方
プログラマに優しいバグレポートの書き方プログラマに優しいバグレポートの書き方
プログラマに優しいバグレポートの書き方Katsutoshi Makino
 
プログラマー
プログラマープログラマー
プログラマー
Kouhei Sutou
 
【15-e-7】Kinectから始まったスタートアップ #devsumi
【15-e-7】Kinectから始まったスタートアップ #devsumi【15-e-7】Kinectから始まったスタートアップ #devsumi
【15-e-7】Kinectから始まったスタートアップ #devsumi
Kaoru NAKAMURA
 
知っ徳!納徳! Magic Leap《概要編+L.E.A.P編》+ インディペンデント クリエイタープログラムについて
知っ徳!納徳! Magic Leap《概要編+L.E.A.P編》+ インディペンデント クリエイタープログラムについて知っ徳!納徳! Magic Leap《概要編+L.E.A.P編》+ インディペンデント クリエイタープログラムについて
知っ徳!納徳! Magic Leap《概要編+L.E.A.P編》+ インディペンデント クリエイタープログラムについて
Sadao Tokuyama
 

Similar to 遅いMarkdownアプリを速くする!!Reactアプリのパフォーマンスチューニング (20)

第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議
 
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようDjango ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
 
Android開発者とデザイナーの効率的な連携について
Android開発者とデザイナーの効率的な連携についてAndroid開発者とデザイナーの効率的な連携について
Android開発者とデザイナーの効率的な連携について
 
コロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーション
コロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーションコロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーション
コロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーション
 
知っ徳!納徳!Magic Leap 《デバイス編》
知っ徳!納徳!Magic Leap 《デバイス編》知っ徳!納徳!Magic Leap 《デバイス編》
知っ徳!納徳!Magic Leap 《デバイス編》
 
フロントエンド開発入門(React).pdf
フロントエンド開発入門(React).pdfフロントエンド開発入門(React).pdf
フロントエンド開発入門(React).pdf
 
コンテナー型仮想環境の情報交換会
コンテナー型仮想環境の情報交換会コンテナー型仮想環境の情報交換会
コンテナー型仮想環境の情報交換会
 
131207 NECTJ Workshop 2
131207 NECTJ Workshop 2131207 NECTJ Workshop 2
131207 NECTJ Workshop 2
 
楽天トラベルとSpring(Spring Day 2016)
楽天トラベルとSpring(Spring Day 2016)楽天トラベルとSpring(Spring Day 2016)
楽天トラベルとSpring(Spring Day 2016)
 
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
 
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
 
ソフトウェアジャパン2018 ITフォーラムセッション(2)
ソフトウェアジャパン2018 ITフォーラムセッション(2)ソフトウェアジャパン2018 ITフォーラムセッション(2)
ソフトウェアジャパン2018 ITフォーラムセッション(2)
 
Stac2014 石川
Stac2014 石川Stac2014 石川
Stac2014 石川
 
Dev(ice)love デバイス祭り
Dev(ice)love デバイス祭りDev(ice)love デバイス祭り
Dev(ice)love デバイス祭り
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
プログラマに優しいバグレポートの書き方
プログラマに優しいバグレポートの書き方プログラマに優しいバグレポートの書き方
プログラマに優しいバグレポートの書き方
 
プログラマー
プログラマープログラマー
プログラマー
 
【15-e-7】Kinectから始まったスタートアップ #devsumi
【15-e-7】Kinectから始まったスタートアップ #devsumi【15-e-7】Kinectから始まったスタートアップ #devsumi
【15-e-7】Kinectから始まったスタートアップ #devsumi
 
知っ徳!納徳! Magic Leap《概要編+L.E.A.P編》+ インディペンデント クリエイタープログラムについて
知っ徳!納徳! Magic Leap《概要編+L.E.A.P編》+ インディペンデント クリエイタープログラムについて知っ徳!納徳! Magic Leap《概要編+L.E.A.P編》+ インディペンデント クリエイタープログラムについて
知っ徳!納徳! Magic Leap《概要編+L.E.A.P編》+ インディペンデント クリエイタープログラムについて
 
cochica
cochicacochica
cochica
 

More from GIG inc.

Lt41
Lt41Lt41
Lt41
GIG inc.
 
Lt40
Lt40Lt40
Lt40
GIG inc.
 
Lt39
Lt39Lt39
Lt39
GIG inc.
 
LT38テーマ3-2
LT38テーマ3-2LT38テーマ3-2
LT38テーマ3-2
GIG inc.
 
LT38テーマ3-1
LT38テーマ3-1LT38テーマ3-1
LT38テーマ3-1
GIG inc.
 
LT38テーマ2-2
LT38テーマ2-2LT38テーマ2-2
LT38テーマ2-2
GIG inc.
 
LT38テーマ2-1
LT38テーマ2-1LT38テーマ2-1
LT38テーマ2-1
GIG inc.
 
LT38テーマ1-2
LT38テーマ1-2LT38テーマ1-2
LT38テーマ1-2
GIG inc.
 
LT38テーマ1-1
LT38テーマ1-1LT38テーマ1-1
LT38テーマ1-1
GIG inc.
 
lt37
lt37lt37
lt37
GIG inc.
 
lt23後半
lt23後半lt23後半
lt23後半
GIG inc.
 
lt23前半
lt23前半lt23前半
lt23前半
GIG inc.
 
LT.22 GitHub Actionsを触ってみた話
LT.22 GitHub Actionsを触ってみた話LT.22 GitHub Actionsを触ってみた話
LT.22 GitHub Actionsを触ってみた話
GIG inc.
 
LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話 LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話
GIG inc.
 
LT.21 SPIN法を活用した人心掌握術
LT.21 SPIN法を活用した人心掌握術LT.21 SPIN法を活用した人心掌握術
LT.21 SPIN法を活用した人心掌握術
GIG inc.
 
LT.21 スゴいチームになるフィードバック術
LT.21 スゴいチームになるフィードバック術LT.21 スゴいチームになるフィードバック術
LT.21 スゴいチームになるフィードバック術
GIG inc.
 
LT.20 コーディングとマジックナンバー
LT.20 コーディングとマジックナンバーLT.20 コーディングとマジックナンバー
LT.20 コーディングとマジックナンバー
GIG inc.
 
LT.20 Wordpress x nuxt.jsで実現するSPA
LT.20 Wordpress x nuxt.jsで実現するSPALT.20 Wordpress x nuxt.jsで実現するSPA
LT.20 Wordpress x nuxt.jsで実現するSPA
GIG inc.
 
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
GIG inc.
 
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
 【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」 【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
GIG inc.
 

More from GIG inc. (20)

Lt41
Lt41Lt41
Lt41
 
Lt40
Lt40Lt40
Lt40
 
Lt39
Lt39Lt39
Lt39
 
LT38テーマ3-2
LT38テーマ3-2LT38テーマ3-2
LT38テーマ3-2
 
LT38テーマ3-1
LT38テーマ3-1LT38テーマ3-1
LT38テーマ3-1
 
LT38テーマ2-2
LT38テーマ2-2LT38テーマ2-2
LT38テーマ2-2
 
LT38テーマ2-1
LT38テーマ2-1LT38テーマ2-1
LT38テーマ2-1
 
LT38テーマ1-2
LT38テーマ1-2LT38テーマ1-2
LT38テーマ1-2
 
LT38テーマ1-1
LT38テーマ1-1LT38テーマ1-1
LT38テーマ1-1
 
lt37
lt37lt37
lt37
 
lt23後半
lt23後半lt23後半
lt23後半
 
lt23前半
lt23前半lt23前半
lt23前半
 
LT.22 GitHub Actionsを触ってみた話
LT.22 GitHub Actionsを触ってみた話LT.22 GitHub Actionsを触ってみた話
LT.22 GitHub Actionsを触ってみた話
 
LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話 LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話
 
LT.21 SPIN法を活用した人心掌握術
LT.21 SPIN法を活用した人心掌握術LT.21 SPIN法を活用した人心掌握術
LT.21 SPIN法を活用した人心掌握術
 
LT.21 スゴいチームになるフィードバック術
LT.21 スゴいチームになるフィードバック術LT.21 スゴいチームになるフィードバック術
LT.21 スゴいチームになるフィードバック術
 
LT.20 コーディングとマジックナンバー
LT.20 コーディングとマジックナンバーLT.20 コーディングとマジックナンバー
LT.20 コーディングとマジックナンバー
 
LT.20 Wordpress x nuxt.jsで実現するSPA
LT.20 Wordpress x nuxt.jsで実現するSPALT.20 Wordpress x nuxt.jsで実現するSPA
LT.20 Wordpress x nuxt.jsで実現するSPA
 
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
 
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
 【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」 【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
 

遅いMarkdownアプリを速くする!!Reactアプリのパフォーマンスチューニング

Editor's Notes

  1. 僕は将来、絶対にこの世の中のインフラになるようなfacebookとかTwitterみたいなサービスを作りたいと思っているので、プライベートもサービスづくりに励んでいます。 学びたいことがあるなら、それをいますぐはじめるという精神です。 今日僕はこのノートのサービスを使って、Reactのアプリのパフォーマンスを改善した方法を話したいと思います!
  2. パフォーマンスの改善について説明するために、3つに分けて説明します 1つめは、どこが遅いのかを理解するためのアイディアについて説明します。 大体、作ってる時は十分速いって感じますよね。だけど、使ってくうちに遅くなってきます。自分以外の人にそう感じられる前に自分で見つけましょう!
  3. 1つめは、どこが遅いのかを理解するためのアイディアについて説明します。 大体、作ってる時は十分速いって感じますよね。だけど、使ってくうちに遅くなってきます。自分以外の人にそう感じられる前に自分で見つけましょう!
  4. そして次に、なぜ遅いのか原因を理解する方法について説明します
  5. そして、最後に速くするためになにをすべきかを説明します! この3つを説明することでClassiccを速くする全てを知ることができます。
  6. それでは、まず遅いところを見つけるアイディアを説明します。 本物のユーザーになる、そしてプログラムを甘やかさない。この二つがそのアイディアです。 まず、一つ目のアイディアについて一言でいうとこういうことになります。
  7. なにが言いたいかというと、「デバッグ」と「使う」というのが驚くほど違うということです。 デバッグをしてるうちは遅いことに気づけないのです!! 例を紹介します
  8. これは、キーとキーの入力する間にどれくらい時間がかかっているかです
  9. 大体100~200msくらいになりますが、たまに速いとこがありますね。ここで200msが返ってきたときに詰まった感覚になって遅い!!って感じてしまいます。 大げさにすると
  10. って感じです。
  11. って感じです。
  12. って感じです。
  13. って感じです。
  14. って感じです。
  15. って感じです。
  16. って感じです。
  17. しかし、デバッグのためにアイウエオって入力してもこのつまる感じを発見することはできなかったんです。 入力するために入力してもだめ。文章を書かなければ、この問題は発見できません。それはなぜか?
  18. なぜ?
  19. わかりません。わからないけど、わかってることがただ一つだけあります。
  20. デバッグではムカつかなかった しかし、自分がユーザーになったときはムカついた
  21. ムカつくところにちゃんとムカつけることこそ、重要。なにも感じなければ、なにもすることができない。ユーザーになった結果正しくムカつけることができたということです。
  22. 二つ目の「遅いところを見つける」アイディアは、プログラムを甘やかさないというものです。 速いマシンを使って速く動くのは当たり前ですよね!?
  23. 二つ目の「遅いところを見つける」アイディアは、プログラムを甘やかさないというものです。 速いマシンを使って速く動くのは当たり前ですよね!?
  24. 次は遅い原因を特定するための方法を説明します
  25. Noteを更新するのにこんだけ時間かかってるよ。中ではこんな処理してるよ!っていうのがみれます。
  26. Noteを更新するのにこんだけ時間かかってるよ。中ではこんな処理してるよ!っていうのがみれます。
  27. 見るべきところは、更新しなくて良いとこを更新してないかです!
  28. もう一度パフォーマンスのグラフをみてみましょう。
  29. もう一度パフォーマンスのグラフをみてみましょう。
  30. もう一度パフォーマンスのグラフをみてみましょう。
  31. 表示されてるところはこれです!1個とちょいしか表示されてません!!
  32. だから、この分は無駄だと言えます!!!!無駄な物を発見しました!!では、速くするに進みましょう!!!!!!
  33. 次は遅い原因を特定するための方法を説明します
  34. Reactのドキュメントに貼られてた画像
  35. 参照型だと同じような値でも同じものとして扱われないので、shouldComponentUpdateをちゃんと書く必要があります!
  36. shouldComponentUpdateを書くことで、このとんがりが少なくなるはずです!!
  37. 見えないとこで頑張ってる
  38. その頑張りは無駄である
  39. その頑張りは無駄である
  40. windowingをすることでここが大きく減るはず!!