frontend optimization dena_creativeseminar

35
Smartphone フロントエンドの最適化と最前線

Upload: denaopenevents

Post on 24-May-2015

1.088 views

Category:

Technology


0 download

DESCRIPTION

DeNA Creative Seminar @ Shinjuku NS Building on 21st Match.

TRANSCRIPT

Page 1: Frontend optimization dena_creativeseminar

Smartphoneフロントエンドの最適化と最前線

Page 2: Frontend optimization dena_creativeseminar

ソーシャルゲーム統括部

フロントエンド担当

ExGame メンテナ

AboutMe

@sou城戸 総史(きど そうし)

Page 3: Frontend optimization dena_creativeseminar

リッチな表現 x 限られた性能

Display: 960 x 640

CPU: 800MHz (?)

Memory: 512MB

3G Network

Page 4: Frontend optimization dena_creativeseminar

リッチな表現 x 限られた性能

重い 軽い

Page 5: Frontend optimization dena_creativeseminar

Front-end Optimization

「80% of the end-user response time is

spent on the front-end.」

2~3sec 800ms 未満

Page 6: Frontend optimization dena_creativeseminar

1. 計測する

2. TTI にフォーカスする

3. 最適化する

Page 7: Frontend optimization dena_creativeseminar

Google Page Speed

Date.now

HTTP Archive

1. 計測する

Page 8: Frontend optimization dena_creativeseminar

HTTP Archive

Page 9: Frontend optimization dena_creativeseminar

1. 計測する

2. TTI にフォーカスする

3. 最適化する

Page 10: Frontend optimization dena_creativeseminar

開発用画面

TTI: Time to Interact

「お、動いた」「お、動かせる」

Page 11: Frontend optimization dena_creativeseminar

1. 計測する

2. TTI にフォーカスする

3. 最適化する

Page 12: Frontend optimization dena_creativeseminar

原則

Page 13: Frontend optimization dena_creativeseminar

1. MAKE FEWER HTTP REQUESTS

2. USE A CDN3. ADD AN EXPIRES HEADER

4. GZIP COMPONENTS

5. PUT STYLESHEETS AT THE TOP

6. PUT SCRIPTS AT THE BOTTOM

7. AVOID CSS EXPRESSIONS

8. MAKE JS AND CSS EXTERNAL

9. REDUCE DNS LOOKUPS

10. MINIFY JS11. AVOID REDIRECTS

12. REMOVE DUPLICATE SCRIPTS

13. CONFIGURE ETAGS

14. MAKE AJAX CACHEABLE

Page 14: Frontend optimization dena_creativeseminar

1. MAKE FEWER HTTP REQUESTS

2. USE A CDN3. ADD AN EXPIRES HEADER

4. GZIP COMPONENTS

5. PUT STYLESHEETS AT THE TOP

6. PUT SCRIPTS AT THE BOTTOM

7. AVOID CSS EXPRESSIONS

8. MAKE JS AND CSS EXTERNAL

9. REDUCE DNS LOOKUPS

10. MINIFY JS11. AVOID REDIRECTS

12. REMOVE DUPLICATE SCRIPTS

13. CONFIGURE ETAGS

14. MAKE AJAX CACHEABLE

リクエスト数を削る

ブロックを回避する

遅延させる

Page 15: Frontend optimization dena_creativeseminar

リクエスト数を削る

画像の base64 encode、スプライト化

JavaScript, CSS の Unify

Page 16: Frontend optimization dena_creativeseminar

ブロックを回避する

SCRIPT は後続処理をブロックする

回避方法

body の下部に置く

async, defer を使う

Page 17: Frontend optimization dena_creativeseminar

<script defer type="text/javascript" src="...

Page 18: Frontend optimization dena_creativeseminar

遅延させる

Page 19: Frontend optimization dena_creativeseminar

TTI: Time to Interact

最優先

遅れても良い

負荷部分の処理を後回しに

Page 20: Frontend optimization dena_creativeseminar

Smartphone の負荷部分

HTML のパース処理

画像取得(empty cache)

JavaScript ライブラリの evaluation

Page 21: Frontend optimization dena_creativeseminar

HTML をパーススキップ

画像を encode して CSS 化その CSS を遅延ロード

Page 22: Frontend optimization dena_creativeseminar

リクエスト数を削る

ブロックを回避する

遅延させる

Page 23: Frontend optimization dena_creativeseminar

まとめ

Page 24: Frontend optimization dena_creativeseminar

計測する

「何が問題か」

TTI にフォーカスする

TTI 短縮のための最適化を行う

ブロッキングを避ける

defer / async を活用する

遅延可能なものは追い出して後に回す

Page 25: Frontend optimization dena_creativeseminar

Front-end Optimization

なめらかな体験をつくる取り組みHD

UI/UX高度・複雑化

Page 26: Frontend optimization dena_creativeseminar

Question ?

Page 27: Frontend optimization dena_creativeseminar

Smartphoneフロントエンドの最適化と最前線最前線

Page 28: Frontend optimization dena_creativeseminar

これからの Web

HD

UI/UX高度・複雑化

アニメーション

Page 29: Frontend optimization dena_creativeseminar

優れたオーサリングツールに支えられた

ベクタベースの

アニメーションフォーマット

→ Flash のような

アニメーション

Page 30: Frontend optimization dena_creativeseminar

HTML5 + Flash

Page 31: Frontend optimization dena_creativeseminar

Image Object

var img = new Image;

img.onload = function() {

....

}

img.src = “path.png”;

Page 32: Frontend optimization dena_creativeseminar

SWF Object

var img = new SWF;

img.onload = function() {

....

}

img.src = “path.swf”;

Page 33: Frontend optimization dena_creativeseminar

demo

Page 34: Frontend optimization dena_creativeseminar

Mobile Web + Game の現場は楽しい !

Page 35: Frontend optimization dena_creativeseminar

ありがとうございました。