SlideShare a Scribd company logo
Submit Search
Upload
DCL15秒の見れないサイトを3秒まで改善した話。改善継続中
Report
Share
gree_tech
gree_tech
Follow
•
0 likes
•
768 views
1
of
18
DCL15秒の見れないサイトを3秒まで改善した話。改善継続中
•
0 likes
•
768 views
Report
Share
Download Now
Download to read offline
Engineering
「node学園 33時限目」で発表された資料です。
Read more
gree_tech
gree_tech
Follow
Recommended
Firestoreを使ってメディアアプリを作ってみた by
Firestoreを使ってメディアアプリを作ってみた
gree_tech
1.6K views
•
15 slides
LIMIAでのBigQuery活用事例 by
LIMIAでのBigQuery活用事例
gree_tech
4.2K views
•
18 slides
Fuelphpのテストをdocker-composeとJenkinsで実行 by
Fuelphpのテストをdocker-composeとJenkinsで実行
gree_tech
1.3K views
•
14 slides
RecommendWidgetを作った話 by
RecommendWidgetを作った話
gree_tech
983 views
•
14 slides
メディアアプリLIMIAにおけるプッシュ通知配信システム by
メディアアプリLIMIAにおけるプッシュ通知配信システム
gree_tech
765 views
•
26 slides
機械学習輪講会資料 by
機械学習輪講会資料
gree_tech
2.3K views
•
24 slides
More Related Content
What's hot
PHPからgoへの移行で分かったこと by
PHPからgoへの移行で分かったこと
gree_tech
6.4K views
•
39 slides
公式部活動技術書典部の活動紹介 by
公式部活動技術書典部の活動紹介
gree_tech
1.9K views
•
22 slides
携帯電話時代から続くモバイルゲームとアプリの関係 by
携帯電話時代から続くモバイルゲームとアプリの関係
gree_tech
1.4K views
•
155 slides
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま by
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
Daiki Hirozawa
2.6K views
•
25 slides
Matcherの紹介@ITリーダー育成キャンプ by
Matcherの紹介@ITリーダー育成キャンプ
noriyaz
369 views
•
27 slides
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram... by
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...
Members_corp
5.6K views
•
37 slides
What's hot
(17)
PHPからgoへの移行で分かったこと by gree_tech
PHPからgoへの移行で分かったこと
gree_tech
•
6.4K views
公式部活動技術書典部の活動紹介 by gree_tech
公式部活動技術書典部の活動紹介
gree_tech
•
1.9K views
携帯電話時代から続くモバイルゲームとアプリの関係 by gree_tech
携帯電話時代から続くモバイルゲームとアプリの関係
gree_tech
•
1.4K views
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま by Daiki Hirozawa
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
Daiki Hirozawa
•
2.6K views
Matcherの紹介@ITリーダー育成キャンプ by noriyaz
Matcherの紹介@ITリーダー育成キャンプ
noriyaz
•
369 views
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram... by Members_corp
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...
Members_corp
•
5.6K views
How are AsakusaSatellite growing with mzp by Ryo Suetsugu
How are AsakusaSatellite growing with mzp
Ryo Suetsugu
•
9.4K views
ITニュース六時五分:Vine、日本ユーザ3か月で3倍に急増 by 明穂 足立
ITニュース六時五分:Vine、日本ユーザ3か月で3倍に急増
明穂 足立
•
227 views
Realtime database、Clean Architectureを組み合わせた導入事例 by Tatsuya Kikuchi
Realtime database、Clean Architectureを組み合わせた導入事例
Tatsuya Kikuchi
•
603 views
月間6アプリリリースの開発現場でのQiita:Team活用法 by Naoya Mouri
月間6アプリリリースの開発現場でのQiita:Team活用法
Naoya Mouri
•
9.1K views
WordPressとS3で落ちないコーポレートサイトを立ち上げよう by Ichiro Tsuji
WordPressとS3で落ちないコーポレートサイトを立ち上げよう
Ichiro Tsuji
•
4.2K views
Androidの会のご紹介 by 高見 知英
Androidの会のご紹介
高見 知英
•
632 views
【サンプル】 Instagram開設マニュアルサービス資料 by AAsolution
【サンプル】 Instagram開設マニュアルサービス資料
AAsolution
•
18.5K views
Swiftビギナーズ倶楽部でのプレゼンver02 by Tomiji Suzuki
Swiftビギナーズ倶楽部でのプレゼンver02
Tomiji Suzuki
•
374 views
130423 slide share用「メディアビジネス復興」 by Atsuo Fujimura
130423 slide share用「メディアビジネス復興」
Atsuo Fujimura
•
2K views
Yumemi.swift #6 2020.5.15 presentation tomiji suzuki by Tomiji Suzuki
Yumemi.swift #6 2020.5.15 presentation tomiji suzuki
Tomiji Suzuki
•
221 views
原宿Cocos2d x ゲームアプリ開発者同盟 by Kentarou Mukunasi
原宿Cocos2d x ゲームアプリ開発者同盟
Kentarou Mukunasi
•
869 views
Similar to DCL15秒の見れないサイトを3秒まで改善した話。改善継続中
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3 by
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3
Yukidama
10.8K views
•
36 slides
少しずつキャッチアップしていくAndroidアプリ開発 by
少しずつキャッチアップしていくAndroidアプリ開発
Fumiya Sakai
1.2K views
•
33 slides
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話 by
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話
Fumiya Sakai
1.1K views
•
14 slides
私がRubyを学んでから個人開発をやっていくまでの道のり by
私がRubyを学んでから個人開発をやっていくまでの道のり
K K
411 views
•
11 slides
エッジ向けDeepLearningプロジェクトで必要なこと by
エッジ向けDeepLearningプロジェクトで必要なこと
LeapMind Inc
3.4K views
•
38 slides
ディレクターとして知っておいたほうが良いフロントエンドの知識 by
ディレクターとして知っておいたほうが良いフロントエンドの知識
GIG inc.
1.4K views
•
46 slides
Similar to DCL15秒の見れないサイトを3秒まで改善した話。改善継続中
(7)
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3 by Yukidama
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3
Yukidama
•
10.8K views
少しずつキャッチアップしていくAndroidアプリ開発 by Fumiya Sakai
少しずつキャッチアップしていくAndroidアプリ開発
Fumiya Sakai
•
1.2K views
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話 by Fumiya Sakai
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話
Fumiya Sakai
•
1.1K views
私がRubyを学んでから個人開発をやっていくまでの道のり by K K
私がRubyを学んでから個人開発をやっていくまでの道のり
K K
•
411 views
エッジ向けDeepLearningプロジェクトで必要なこと by LeapMind Inc
エッジ向けDeepLearningプロジェクトで必要なこと
LeapMind Inc
•
3.4K views
ディレクターとして知っておいたほうが良いフロントエンドの知識 by GIG inc.
ディレクターとして知っておいたほうが良いフロントエンドの知識
GIG inc.
•
1.4K views
Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~ by Developer Solutions事業部 メシウス株式会社 (旧グレープシティ株式会社)
Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~
Developer Solutions事業部 メシウス株式会社 (旧グレープシティ株式会社)
•
1.1K views
More from gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech
729 views
•
36 slides
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech
229 views
•
13 slides
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech
1K views
•
18 slides
アプリ起動時間高速化 ~推測するな、計測せよ~ by
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
1.9K views
•
84 slides
長寿なゲーム事業におけるアプリビルドの効率化 by
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
347 views
•
116 slides
Cloud Spanner をより便利にする運用支援ツールの紹介 by
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
685 views
•
31 slides
More from gree_tech
(20)
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech
•
729 views
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by gree_tech
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech
•
229 views
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by gree_tech
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech
•
1K views
アプリ起動時間高速化 ~推測するな、計測せよ~ by gree_tech
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
•
1.9K views
長寿なゲーム事業におけるアプリビルドの効率化 by gree_tech
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
•
347 views
Cloud Spanner をより便利にする運用支援ツールの紹介 by gree_tech
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
•
685 views
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介 by gree_tech
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
gree_tech
•
601 views
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について by gree_tech
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
gree_tech
•
626 views
海外展開と負荷試験 by gree_tech
海外展開と負荷試験
gree_tech
•
593 views
翻訳QAでのテスト自動化の取り組み by gree_tech
翻訳QAでのテスト自動化の取り組み
gree_tech
•
305 views
組み込み開発のテストとゲーム開発のテストの違い by gree_tech
組み込み開発のテストとゲーム開発のテストの違い
gree_tech
•
576 views
サーバーフレームワークに潜んでる脆弱性検知ツール紹介 by gree_tech
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
gree_tech
•
209 views
データエンジニアとアナリストチーム兼務になった件について by gree_tech
データエンジニアとアナリストチーム兼務になった件について
gree_tech
•
308 views
シェアドサービスとしてのデータテクノロジー by gree_tech
シェアドサービスとしてのデータテクノロジー
gree_tech
•
433 views
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて- by gree_tech
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
gree_tech
•
1K views
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話 by gree_tech
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
gree_tech
•
1.1K views
比較サイトの検索改善(SPA から SSR に変換) by gree_tech
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
•
696 views
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行 by gree_tech
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech
•
2.9K views
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜 by gree_tech
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
gree_tech
•
397 views
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮) by gree_tech
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech
•
752 views
Recently uploaded
Najah Matsuo Self Introduction by
Najah Matsuo Self Introduction
NajahMatsuo
16 views
•
29 slides
ウォーターフォール開発で生 産性を測る指標 by
ウォーターフォール開発で生 産性を測る指標
Kouhei Aoyagi
58 views
•
13 slides
概要.pdf by
概要.pdf
Taira Shimizu
6 views
•
1 slide
システム概要.pdf by
システム概要.pdf
Taira Shimizu
44 views
•
1 slide
onewedge_companyguide1 by
onewedge_companyguide1
ONEWEDGE1
81 views
•
22 slides
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
修治 松浦
211 views
•
36 slides
Recently uploaded
(6)
Najah Matsuo Self Introduction by NajahMatsuo
Najah Matsuo Self Introduction
NajahMatsuo
•
16 views
ウォーターフォール開発で生 産性を測る指標 by Kouhei Aoyagi
ウォーターフォール開発で生 産性を測る指標
Kouhei Aoyagi
•
58 views
概要.pdf by Taira Shimizu
概要.pdf
Taira Shimizu
•
6 views
システム概要.pdf by Taira Shimizu
システム概要.pdf
Taira Shimizu
•
44 views
onewedge_companyguide1 by ONEWEDGE1
onewedge_companyguide1
ONEWEDGE1
•
81 views
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by 修治 松浦
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
修治 松浦
•
211 views
DCL15秒の見れないサイトを3秒まで改善した話。改善継続中
1.
DCL15秒の見れないサイトを3秒 まで改善した話。改善継続中
2.
Masahiro Higuchi /
樋口雅拓 ● グリーグループのリミア株式会社で、LIMIA という住まい領域のメディアを 作っています。ゲーム会社ですが、最近はメディアに力を入れています。 ● 機械学習のエンジニアですが、iOS, Android,JSなどもやっている何でも屋 です。4歳の娘のパパ。 ● twitter: @mahiguch1, github: @mahiguch ● https://limia.jp/ ● https://arine.jp/ ● https://aumo.jp/ ● https://moguna.com/ ● https://www.mine-3m.com/mine/
3.
背景と目的みたいなもの ● 3年前LIMIA Web
https://limia.jp/ をリリース。 ● 最初1年間機能追加を行い、その後放置してアプリを作っていた。 ● 久しぶりにWebを確認したら、DOM Content Loadedが15秒。orz → これを3秒まで改善した試行錯誤を共有します。 というか、凄く辛かったので、誰か聞いて欲しい!
4.
LIMIAとは 社内外の記者およびユーザーが投稿した記事 を読めるサービスです。記事は住まい暮らしに 関連するものです。機能としては、 ● 記事の一覧表示 ● 記事を閲覧、投稿、検索できる ●
写真を閲覧、投稿、検索できる ● ユーザーページで設定、投稿管理 ● ログインしていいね、フォロー ● タイムライン、コンテスト、お知らせ よくあるメディアの機能の全部のせです。
5.
どんな状態か ● TypeScript: 記事投稿画面、写真投稿画面、ユーザ設定編集画面など編 集画面内での操作 ●
React: 記事にリンクを強制追加、全文検索サジェストなどちょっとした動作 ● これらをwebpackでまとめている ● 広告タグはHTMLテンプレートにベタ書き → タスクを担当した人の意見を尊重。統一感はない。
6.
どれだけ遅かったか ● DCL15秒だった。 ● 遅すぎて広告が表示さ れなくなった。 ●
応急処置として簡単に 直せる所を洗い出して1 回目の対応開始
7.
1回目に行なった対策: scriptタグ数削減 scriptタグが見つかるたびに、レンダリング処理が止まる。それを防ぐため、 scriptタグをまとめることでレンダリング完了までの時間を短縮します。 <script>...</script> …
<script>...</script> … <script> … </script> → <script> ………………………………………… </script>
8.
1回目に行なった対策: 3rd party
jsの非同期読み込み Scriptタグの後ろにasyncと書くと非同期読み込みをしてくれる。その場所で実行必須なもの以外は、非同期読み込みし てしまった方が良い。つまり、全ての3rd partyスクリプトを非同期にしてしまって良さそう。 非同期のさせかた <script src="app.js" async></script> パッと調べた限り、jenieeは同期処理していた。adxが出ないでjenieeだけ出ていた理由はこれ。 <script type="text/javascript" src="https://js.mediams.mb.softbank.jp/t/328/617/a1328617.js"></script> これをasyncにする。
9.
1回目に行なった対策: CSSのpreload s.limia.jpからのjs/cssのdownloadをrel="preload"を付けて先読みさせることで、高速化を行う。Chromeデベロッパー ツールのAuditsタブで検知。 先読みのさせかた <link rel="preload"
href="style.css" as="style"> 対象箇所例 <link rel="stylesheet" href="//s.limia.jp/assets/css/common-256c8f20a7b999bcc048ab1e.css" media="all"> <link rel="stylesheet" href="//s.limia.jp/assets/css/main-pc-6669f7268689600cc942b763.css" media="all">
10.
1回目に行なった対策: アセットCDN配信 これがCDN(s.limia.jp)に乗っていない。 FAILED -
https://limia.jp/manifest.json FAILED - https://limia.jp/launcher-icon-192x192.png limia.jpをs.limia.jpに変更することにより、CDNから配信します。 これにより、速度改善だけでなく、サーバ負荷削減効果が見込めます。
11.
1回目に行なった対策: 画像容量削減 無駄に大きな画像を取得している部分 が多かったので、そこを適切なサイズ の画像を使うようにした。 SP記事詳細画像を800x800(116KB) から640x265(62KB)に変更。
12.
どれだけ早くなったか この(1)の部分だけ。 5%ぐらい?
13.
2回目に行なった対策: Nodejsの バージョンアップ WebWorkerの利用などちゃんとした対策を検討。 本格的に取り掛かる前に準備として、Node.js, gulp, TypeScriptのバージョンを上げた。 ●
Node.js: v6.14.1 → v10.14.2 ● gulp: v3.9.1 → v4.0.0 ● TypeScript: v2.2.2 → v3.2.2 "gulp": "^3.9.1", ---> 4.0.0 "gulp-concat": "^2.6.0", ---> 2.6.1 "gulp-consolidate": "^0.1.2", ---> 0.2.0 "gulp-eslint": "^3.0.1", ---> 5.0.0 "gulp-if": "^2.0.0", ---> 2.0.2 "gulp-rename": "^1.2.2", ---> 1.4.0 "gulp-rev": "^5.0.1", ---> 9.0.0 "gulp-rev-replace": "^0.4.3", ---> 0.4.4 "gulp-sourcemaps": "2.6.0", ---> 2.6.4 "gulp-tslint": "^2.0.0", ---> 8.1.3 "gulp-twig": "^0.3.0", ---> 1.2.0 "gulp-typescript": "3.1.6", ---> 5.0.0 "gulp-uglify": "^1.2.0", ---> 3.0.1 "gulp-unassert": "^1.0.0", ---> 1.1.0 "gulp-changed": "^3.1.1", ---> 3.2.0 "gulp-iconfont": "^8.0.1", ---> 10.0.2 "gulp-imagemin": "^3.1.1", ---> 5.0.3 "gulp-sketch": "^0.1.0", ---> 1.0.5 "gulp.spritesmith": "^4.0.0", ---> 6.9.0
14.
どれだけ早くなったか この(2)の部分。 めっちゃ早くなってる! TypeScriptは効率改善して そうだけど、ここまで?node とgulpについては影響して いるかどうかすら分からな い。。。
15.
3回目に行なった対策: ReactとWebPackのバージョ ンアップ それならReactとWebPackもバージョンアップしたら早くなるのでは? ● React:
v15.6.2 → v16.7.0 ● WebPack: v1.14.0 → v4.29.0
16.
どれだけ早くなったか この(3)の部分。 めっちゃ早くなってる! WebPackってこんなに進化 してたんだ。。。
17.
今後の改善予定 1から3月期の残タスク ● FirstViewのレンダリングに関係ないスクリプトをDCL後に読み込ませるよ うにする。 ● DOMアクセスが不要な処理をWebWokerで行うようにする。 ●
setTimeout または setInterval を使用するのを避けて、できる限り requestAnimationFrame を使用するようにする。 3秒でもまだ遅いので、3ヶ月スプリントでPDCAを回して改善中!
18.
まとめ ● DCL 15秒のサイトを3秒まで改善した ●
Node.js自体もmoduleもバージョンアップは速度改善に効果的! ● 3秒でもまだまだ遅いので改善継続中。 ● なぜnode.js、gulp、TypeScriptのバージョンアップだけでここまで速くなっ たのか理解できていない。もしお気づきの点があれば声をかけていただけ ると助かります。 ご清聴、ありがとうございました!