Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Web高速化のススメ
Search
Atsushi Nakatsugawa
PRO
May 30, 2019
Technology
910
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Web高速化のススメ
ゆるWeb勉強会 with Monaca UG in Sapporoの発表資料です。
https://monacaug.connpass.com/event/130871/
Atsushi Nakatsugawa
PRO
May 30, 2019
More Decks by Atsushi Nakatsugawa
See All by Atsushi Nakatsugawa
開発を高速化。AIコーディングエージェントとCodeRabbitでループエンジニアリング
moongift
PRO
0
65
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
3k
AI駆動開発は個人技からチーム戦へ:組織でAIを使いこなすための実践設計
moongift
PRO
0
700
AI時代の開発生産性は、個人技からチーム設計へ
moongift
PRO
6
4k
コーディングだけ速くとも意味がない。自動レビューによる開発の高速化
moongift
PRO
0
150
AI 支援研究開発におけるコードレビューの役割と限界
moongift
PRO
0
210
個人AIからチームAIへ:開発における品質と生産性の再設計
moongift
PRO
0
530
AI活用の格差をなくす:チーム全体のAI開発生産性を底上げする方法
moongift
PRO
1
820
CodeRabbit 2026年04月アップデート
moongift
PRO
0
110
Other Decks in Technology
See All in Technology
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
150
AI駆動開発で仕様はどこまで書くべきか? ― 人とAIの責務境界から考える開発プロセスの実践
takahiromatsui
1
280
行動するAIのためのオントロジー | DevRev — Encraft #26.pdf
dvrv_tknrszk
2
660
AgentCoreで実践するハーネスエンジニアリング
yakumo
0
160
20260930_Gemma4_Hands-on
tsho
0
200
スキルを作る、その前に!複数人で使われるスキルを 作るためのプロセス
junkifurukawa
1
150
[2026 Oracle Technical Deep Dive] エンタープライズAIエージェントを支えるOCIソリューション。ラインナップと特徴を理解しよう! (2026年9月17日開催)
oracle4engineer
PRO
0
120
オブザーバビリティを高める AI エージェント体験を考える / Designing AI Agent Experiences That Enhance Observability
aoto
PRO
1
150
あなたの知らないAmazon VPC Route Server/Amazon VPC Route Server you don't know about
masakiokuda
1
200
2026-10-01_MagicPod_QAハーネスエンジニアリングとQA組織の未来像
ynisqa1988
0
260
GitHub Agentic Workflows を触ってみる
htkym
2
910
Account Factory for Terraformによる 標準化されたアカウント発行の自動化
pensuke628
0
120
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
380
YesSQL, Process and Tooling at Scale
rocio
174
15k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Building the Perfect Custom Keyboard
takai
2
890
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Ethics towards AI in product and experience design
skipperchong
2
400
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
380
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
420
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Ruling the World: When Life Gets Gamed
codingconduct
0
380
BBQ
matthewcrist
89
10k
Transcript
PAGE DAY 2019/02/14 # MOONGIFT / 50 Web高速化のススメ 1
PAGE # MOONGIFT / 50 DAY 2019/02/14 自己紹介 2 @goofmint
fb.me/goofmint 中津川 篤司 株式会社MOONGIFT代表取締役 エバンジェリスト コミュニティ 主催 https://www.moongift.jp
PAGE # MOONGIFT / 50 DAY 2019/02/14 今日お話しすること •フロントエンドでユーザ体験を向上させる •格好良さだけでなく実益につながる改善
3
PAGE # MOONGIFT / 50 DAY 2019/02/14 今日お話しないこと •Monacaのこと •サーバサイドの改善(Monacaはフロント向けなので…)
•実装 4
PAGE # MOONGIFT / 50 DAY 2019/02/14 よく使うWebサービス 5
PAGE # MOONGIFT / 50 DAY 2019/02/14 遅い = •2016年01月 読み込みに3秒かかると20%が離脱
•2018年11月 読み込みに3秒かかると53%が離脱 6
PAGE # MOONGIFT / 50 DAY 2019/02/14 遅い = •ECサイトで1秒遅いとコンバージョン率△7%
•Amazonでは0.1秒遅いと売上△1% 7
PAGE # MOONGIFT / 50 DAY 2019/02/14 旅行先にて Gwifiは1日500MBまで 切れると128kbps制限
追加購入したい サイトめっちゃ遅い… JavaScript動かない jQueryの読み込みでエラー出てる 8
PAGE # MOONGIFT / 50 DAY 2019/02/14
PAGE # MOONGIFT / 50 DAY 2019/02/14 高速化' 10
PAGE # MOONGIFT / 50 DAY 2019/02/14 高速化? 11 *
サーバ増強! ネットワーク回線強化! DOM改善 ネットワーク改善 プログラム改善
PAGE # MOONGIFT / 50 DAY 2019/02/14 Webフロントエンドのボトルネック •レンダリングが遅い、重たい •ネットワークが遅い
•JavaScript自体が遅い 12
PAGE # MOONGIFT / 50 DAY 2019/02/14 DOM改善 13
PAGE # MOONGIFT / 50 DAY 2019/02/14 仮想DOMを使いましょう •React/Vue.js/Riotなど •DOMを更新すべきかどうかはフレームワー
クに任せる •UI情報をJavaScriptにあらかじめ持たせる ことで、データ通信量を大幅に減らせる 14
PAGE # MOONGIFT / 50 DAY 2019/02/14 DOMの幅/高さを指定する •画像の高さがずれた時のDOM再計算が重い •テキストも可変にせず、溢れた時の処理を入れる
•iframeを使うと再計算処理が走らないので高速化する ↑実際やると結構地獄なので注意 https://vimeo.com/55486684 15
PAGE # MOONGIFT / 50 DAY 2019/02/14 UI/UX •アニメーションはCSS3でGPUを使う でも実装するのは大変
•ライブラリ、フレームワークを採用する •Onsen UI/ionic/Framework7など モバイル向けはデスクトップブラウザをサポートしていない ことがあるので注意 16
PAGE # MOONGIFT / 50 DAY 2019/02/14 ϒϥβ ϑϨʔϜϫʔΫ 0OTFO6*
*POJD 'SBNFXPSL
PAGE # MOONGIFT / 50 DAY 2019/02/14 ネットワーク改善 18
PAGE # MOONGIFT / 50 DAY 2019/02/14 CACHE APIを使おう! •JavaScriptから操作できるローカルプロキシ
•任意のURL、コンテンツをキャッシュ可能 19
PAGE # MOONGIFT / 12 DAY 2019/05/15 CACHE API •
Service Worker内で動作するキャッシュシステム • URLをキー、レスポンスをバリューにしたKVS • 有効期限などがないのでWorkboxと組み合わせると吉 20 リクエスト リクエスト Service Worker Webブラウザ レスポンス レスポンス サーバ キャッシュなし
PAGE # MOONGIFT / 12 DAY 2019/05/15 CACHE API •
Service Worker内で動作するキャッシュシステム • URLをキー、レスポンスをバリューにしたKVS • 有効期限などがないのでWorkboxと組み合わせると吉 21 リクエスト Service Worker Webブラウザ レスポンス サーバ キャッシュあり
PAGE # MOONGIFT / 12 DAY 2019/05/15 キャッシュパターン 22 ΦϯϥΠϯ
ΦϑϥΠϯ උߟ Ωϟογϡ ͋Γ ͳ͠ ͋Γ ͳ͠ ΩϟογϡϑΝʔετ Ωϟογϡ ωοτϫʔΫ Ωϟογϡ Τϥʔ جຊ ωοτϫʔΫϑΝʔετ ωοτϫʔΫ ωοτϫʔΫ Ωϟογϡ Τϥʔ ։ൃ࣌ʹ͓קΊ ΩϟογϡΦϯϦʔ Ωϟογϡ ωοτϫʔΫ Ωϟογϡ Τϥʔ ωοτϫʔΫΦϯϦʔ ωοτϫʔΫ ωοτϫʔΫ ωοτϫʔΫ Τϥʔ ։ൃ࣌ʹ͓קΊ ฏߦ ߋ৽ Ωϟογϡ ωοτϫʔΫ Ωϟογϡ Τϥʔ ΦϯϥΠϯͳΒΩϟογϡߋ৽ via Workbox
PAGE # MOONGIFT / 50 DAY 2019/02/14 メリット •ネットワークアクセスを大幅に減らせます •オフラインでもWebアプリケーションが使えます
23
PAGE # MOONGIFT / 50 DAY 2019/02/14 注意点 •キャッシュを自動更新する仕組みはありません •削除、更新する仕組みを作っておかないと大変なこと
になります •開発中はネットワークファーストで開発しましょう 24
PAGE # MOONGIFT / 50 DAY 2019/02/14 JavaScriptの速度改善 25
PAGE # MOONGIFT / 50 DAY 2019/02/14 WebAssemblyを使おう! •Webブラウザ上で動くバイナリフォーマット •超高速!
26
PAGE # MOONGIFT / 50 DAY 2019/02/14 速度比較(フィボナッチ) 27 JAVASCRIPT
WASM 20 2 1 30 69 4 40 6,733 423 42 17,356 1,061 44 46,195 2,839
PAGE # MOONGIFT / 50 DAY 2019/02/14 注意点 •WebAssemblyはプログラミング言語ではありません •WebAssemblyはDOMが扱えません
•WebAssemblyはネットワークが扱えません 28
PAGE # MOONGIFT / 50 DAY 2019/02/14 対応言語 •C/C++ •Rust
•C# •Java 29 •Go •AssemblyScript •Kotlin/Native •その他LLVM対応言語
PAGE # MOONGIFT / 50 DAY 2019/02/14 DOM/ネットワーク利用 30 1.
処理を依頼 2. 実行結果を返却
PAGE # MOONGIFT / 50 DAY 2019/02/14 DOM/ネットワークが使える言語 •Rust web-sysというcrate(ライブラリ)で実現
•Go syscall/jsというライブラリ 31
PAGE # MOONGIFT / 50 DAY 2019/02/14 Canvas/WebGLは使えます •メモリを直接書き換えるので複雑 •ゲーム、グラフィック描画には最適
32
PAGE # MOONGIFT / 50 DAY 2019/02/14 まとめ •DOM描画が遅い →
仮想DOMを使おう •ネットワークが遅い → CACHE APIを使おう •JavaScriptが遅い… → WebAssemblyを使おう 33
PAGE # MOONGIFT / 50 DAY 2019/02/14 + Thanks! @goofmint
fb.me/goofmint ご感想お待ちします!