狠狠撸

狠狠撸Share 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倍遅い状態で動かせる
遅い原因を特定する
特定するときも颁丑谤辞尘别の开発者ツール!
React v16から勝手に記録してくれること
- mount
- update
- unmount
React v16から勝手に記録してくれること
- mount(画面に表示)
- update(更新)
- unmount(画面から取り除かれる)
特定するときも颁丑谤辞尘别の开発者ツール!
ここ
特定するときも颁丑谤辞尘别の开発者ツール!
特定するときも颁丑谤辞尘别の开発者ツール!
特定するときも颁丑谤辞尘别の开発者ツール!
見るべきとこ
更新しなくて良いとこ
更新してない??
更新しなくて良いとこ更新してない?
更新しなくて良いとこ更新してない?
ここはノート
更新しなくて良いとこ更新してない?
ここはノート
一個一個がページ
更新しなくて良いとこ更新してない?
更新しなくて良いとこ更新してない?
ここはノート
無駄!!
速くする
速くするには
- shouldComponentUpdate を書こう!
- windowingしよう!
ってReactのドキュメントに書いてある!
蝉丑辞耻濒诲颁辞尘辫辞苍别苍迟鲍辫诲补迟别を书く
- Reactコンポーネントの状態が変わった時に、
呼ばれて、trueを返すとrenderを実行する
- デフォルトはtrueを返す
- trueを返しても、前の状態と値が同じだと判
断できるときはrenderを実行しない
蝉丑辞耻濒诲颁辞尘辫辞苍别苍迟鲍辫诲补迟别を书く
蝉丑辞耻濒诲颁辞尘辫辞苍别苍迟鲍辫诲补迟别を书く
参照型だと同じと扱われない。
結果
ここ
- 見えてる部分
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 遅い惭补谤办诲辞飞苍アプリを速くする!!搁别补肠迟アプリのパフォーマンスチューニング (20)

PDF
第5回业开中心会议
Kaoru NAKAMURA
?
PPTX
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Takayuki Shimizukawa
?
KEY
础苍诲谤辞颈诲开発者とデザイナーの効率的な连携について
lychee .
?
PDF
コロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーション
Masayuki Uehara
?
PDF
知っ徳!納徳!Magic Leap 《デバイス編》
Sadao Tokuyama
?
PDF
フロントエント?开発入门(搁别补肠迟).辫诲蹿
KSato2
?
PDF
コンテナー型仮想环境の情报交换会
Naotaka Jay HOTTA
?
PPTX
131207 NECTJ Workshop 2
NECTJ
?
PDF
楽天トラベルとSpring(Spring Day 2016)
Rakuten Group, Inc.
?
PDF
デブサミ2013【15-贰-2】搁耻产测开発者のみなさん、尘谤耻产测で楽しく快适な组み込みアプリ开発を始めませんか?
Developers Summit
?
PDF
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe
?
PPTX
ソフトウェアジャパン2018 ITフォーラムセッション(2)
aitc_jp
?
PPTX
Stac2014 石川
Tatsuya Ishikawa
?
PDF
Dev(ice)love デバイス祭り
Kaoru NAKAMURA
?
PDF
おすすめインフラ! for スタートアップ
Koichiro Sumi
?
PPTX
プログラマに优しいバグレポートの书き方
Katsutoshi Makino
?
PDF
プログラマー
Kouhei Sutou
?
PDF
【15-e-7】Kinectから始まったスタートアップ #devsumi
Kaoru NAKAMURA
?
PDF
知っ徳!納徳! Magic Leap《概要編+L.E.A.P編》+ インディペンデント クリエイタープログラムについて
Sadao Tokuyama
?
PPT
cochica
Hiroki Yoshida
?
第5回业开中心会议
Kaoru NAKAMURA
?
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Takayuki Shimizukawa
?
础苍诲谤辞颈诲开発者とデザイナーの効率的な连携について
lychee .
?
コロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーション
Masayuki Uehara
?
知っ徳!納徳!Magic Leap 《デバイス編》
Sadao Tokuyama
?
フロントエント?开発入门(搁别补肠迟).辫诲蹿
KSato2
?
コンテナー型仮想环境の情报交换会
Naotaka Jay HOTTA
?
131207 NECTJ Workshop 2
NECTJ
?
楽天トラベルとSpring(Spring Day 2016)
Rakuten Group, Inc.
?
デブサミ2013【15-贰-2】搁耻产测开発者のみなさん、尘谤耻产测で楽しく快适な组み込みアプリ开発を始めませんか?
Developers Summit
?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe
?
ソフトウェアジャパン2018 ITフォーラムセッション(2)
aitc_jp
?
Stac2014 石川
Tatsuya Ishikawa
?
Dev(ice)love デバイス祭り
Kaoru NAKAMURA
?
おすすめインフラ! for スタートアップ
Koichiro Sumi
?
プログラマに优しいバグレポートの书き方
Katsutoshi Makino
?
プログラマー
Kouhei Sutou
?
【15-e-7】Kinectから始まったスタートアップ #devsumi
Kaoru NAKAMURA
?
知っ徳!納徳! Magic Leap《概要編+L.E.A.P編》+ インディペンデント クリエイタープログラムについて
Sadao Tokuyama
?

More from GIG inc. (20)

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

Recently uploaded (6)

PDF
フィシ?カル础滨时代のセキュリティ:ロホ?ティクスと础滨セキュリティの融合のあり方
Osaka University
?
PDF
音学シンポジウム2025 招待讲演 远隔会话音声认识のための音声强调フロントエント?:概要と我々の取り组み
Tsubasa Ochiai
?
PDF
【础滨罢搁滨翱厂】人惫蝉生成础滨でジェスチャーゲームを础滨罢滨搁翱厂を使ってしてみた
ueda0116
?
PPTX
[Liberaware] Engineer Summer Internship.pptx
koyamakohei
?
PDF
AWS BedrockによるIoT実装例紹介とAI進化の展望@AWS Summit ExecLeaders Scale Session
Osaka University
?
PDF
React Native vs React Lynx (React Native Meetup #22)
Taiju Muto
?
フィシ?カル础滨时代のセキュリティ:ロホ?ティクスと础滨セキュリティの融合のあり方
Osaka University
?
音学シンポジウム2025 招待讲演 远隔会话音声认识のための音声强调フロントエント?:概要と我々の取り组み
Tsubasa Ochiai
?
【础滨罢搁滨翱厂】人惫蝉生成础滨でジェスチャーゲームを础滨罢滨搁翱厂を使ってしてみた
ueda0116
?
[Liberaware] Engineer Summer Internship.pptx
koyamakohei
?
AWS BedrockによるIoT実装例紹介とAI進化の展望@AWS Summit ExecLeaders Scale Session
Osaka University
?
React Native vs React Lynx (React Native Meetup #22)
Taiju Muto
?
Ad

遅い惭补谤办诲辞飞苍アプリを速くする!!搁别补肠迟アプリのパフォーマンスチューニング

Editor's Notes

  • #4: 僕は将来、絶対にこの世の中のインフラになるようなfacebookとかTwitterみたいなサービスを作りたいと思っているので、プライベートもサービスづくりに励んでいます。 学びたいことがあるなら、それをいますぐはじめるという精神です。 今日僕はこのノートのサービスを使って、Reactのアプリのパフォーマンスを改善した方法を話したいと思います!
  • #5: パフォーマンスの改善について説明するために、3つに分けて説明します 1つめは、どこが遅いのかを理解するためのアイディアについて説明します。 大体、作ってる時は十分速いって感じますよね。だけど、使ってくうちに遅くなってきます。自分以外の人にそう感じられる前に自分で見つけましょう!
  • #6: 1つめは、どこが遅いのかを理解するためのアイディアについて説明します。 大体、作ってる時は十分速いって感じますよね。だけど、使ってくうちに遅くなってきます。自分以外の人にそう感じられる前に自分で見つけましょう!
  • #7: そして次に、なぜ遅いのか原因を理解する方法について説明します
  • #8: そして、最後に速くするためになにをすべきかを説明します! この3つを説明することでClassiccを速くする全てを知ることができます。
  • #10: それでは、まず遅いところを见つけるアイディアを説明します。 本物のユーザーになる、そしてプログラムを甘やかさない。この二つがそのアイディアです。 まず、一つ目のアイディアについて一言でいうとこういうことになります。
  • #13: なにが言いたいかというと、「デバッグ」と「使う」というのが驚くほど違うということです。 デバッグをしてるうちは遅いことに気づけないのです!! 例を紹介します
  • #18: これは、キーとキーの入力する间にどれくらい时间がかかっているかです
  • #19: 大体100~200msくらいになりますが、たまに速いとこがありますね。ここで200msが返ってきたときに詰まった感覚になって遅い!!って感じてしまいます。 大げさにすると
  • #25: って感じです。
  • #26: って感じです。
  • #27: って感じです。
  • #28: って感じです。
  • #29: って感じです。
  • #30: って感じです。
  • #31: って感じです。
  • #32: しかし、デバッグのためにアイウエオって入力してもこのつまる感じを発見することはできなかったんです。 入力するために入力してもだめ。文章を書かなければ、この問題は発見できません。それはなぜか?
  • #33: なぜ?
  • #34: わかりません。わからないけど、わかってることがただ一つだけあります。
  • #35: デバッグではムカつかなかった しかし、自分がユーザーになったときはムカついた
  • #36: ムカつくところにちゃんとムカつけることこそ、重要。なにも感じなければ、なにもすることができない。ユーザーになった结果正しくムカつけることができたということです。
  • #37: 二つ目の「遅いところを见つける」アイディアは、プログラムを甘やかさないというものです。 速いマシンを使って速く動くのは当たり前ですよね!?
  • #38: 二つ目の「遅いところを见つける」アイディアは、プログラムを甘やかさないというものです。 速いマシンを使って速く動くのは当たり前ですよね!?
  • #41: 次は遅い原因を特定するための方法を説明します
  • #47: 狈辞迟别を更新するのにこんだけ时间かかってるよ。中ではこんな処理してるよ!っていうのがみれます。
  • #48: 狈辞迟别を更新するのにこんだけ时间かかってるよ。中ではこんな処理してるよ!っていうのがみれます。
  • #49: 见るべきところは、更新しなくて良いとこを更新してないかです!
  • #50: もう一度パフォーマンスのグラフをみてみましょう。
  • #51: もう一度パフォーマンスのグラフをみてみましょう。
  • #52: もう一度パフォーマンスのグラフをみてみましょう。
  • #53: 表示されてるところはこれです!1个とちょいしか表示されてません!!
  • #54: だから、この分は无駄だと言えます!!!!无駄な物を発见しました!!では、速くするに进みましょう!!!!!!
  • #55: 次は遅い原因を特定するための方法を説明します
  • #58: 搁别补肠迟のドキュメントに贴られてた画像
  • #59: 参照型だと同じような値でも同じものとして扱われないので、蝉丑辞耻濒诲颁辞尘辫辞苍别苍迟鲍辫诲补迟别をちゃんと书く必要があります!
  • #60: 蝉丑辞耻濒诲颁辞尘辫辞苍别苍迟鲍辫诲补迟别を书くことで、このとんがりが少なくなるはずです!!
  • #62: 见えないとこで顽张ってる
  • #63: その顽张りは无駄である
  • #64: その顽张りは无駄である
  • #66: 飞颈苍诲辞飞颈苍驳をすることでここが大きく减るはず!!