完全負け組なモバイルwebが、これから復活する(多分)

60
完全負け組なモバイルWebが これから復活する(多分) 「The Next Generation Mobile Web(Google I/O 2015)」レポート 第58回HTML5とか勉強会 2015.6.13 Performance on RAIL Service Workers Push & Notification

Upload: hiroshi-kawada

Post on 06-Aug-2015

29.384 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 完全負け組なモバイルWebが、これから復活する(多分)

完全負け組なモバイルWebが • • • • •

これから復活する(多分)「The Next Generation Mobile Web(Google I/O 2015)」レポート

第58回HTML5とか勉強会 2015.6.13

Performance on RAIL

Service Workers

Push & Notification

Page 2: 完全負け組なモバイルWebが、これから復活する(多分)

ふろしきモバイルWebばっかりエンジニア ・html5jパフォーマンス部 ・日本Cordovaユーザー会

- 自己紹介 -

Page 3: 完全負け組なモバイルWebが、これから復活する(多分)

モバイルWeb

Page 4: 完全負け組なモバイルWebが、これから復活する(多分)

ダメダメ過ぎて 生きるのが辛い…

Java Swift HTML5

Page 5: 完全負け組なモバイルWebが、これから復活する(多分)

なぜ、ダメダメ?

Page 6: 完全負け組なモバイルWebが、これから復活する(多分)

ダメダメな理由 - その1

ブックマークが役に立たない

Page 7: 完全負け組なモバイルWebが、これから復活する(多分)

デスクトップPC ノートPC

個々のアプリの機能は大きく 一つで多くのユースケースのカバー

アプリ

ユース ケース

ユース ケース

ユース ケース

Page 8: 完全負け組なモバイルWebが、これから復活する(多分)

デスクトップPC ノートPC

ブラウザのブックマーク機能は PC上のアプリの扱われ方と相性が良かった

ブラウザ

Web サイト

Web サイト

Web サイト

Page 9: 完全負け組なモバイルWebが、これから復活する(多分)

モバイル

しかし、モバイルは 一つアプリ≒一つのユースケース

アプリ

アプリ

アプリ

ユース ケース

ユース ケース

ユース ケース

Page 10: 完全負け組なモバイルWebが、これから復活する(多分)

モバイル

ブラウザのブックマーク機能は モバイルのアプリの使われ方と合わない

アプリ

ブラウザ

アプリ

Web サイト

Web サイト

Web サイト

遠い…

遠い…

遠い…

Page 11: 完全負け組なモバイルWebが、これから復活する(多分)

ダメダメな理由 - その2

閉じられたら何もできない

Page 12: 完全負け組なモバイルWebが、これから復活する(多分)

PCは使う時だけ起動されていた ブラウザも同じタイミングで起動された

デスクトップPC ノートPC

作業中 作業無し

アプリ停止アプリ起動

PC停止PC起動

Page 13: 完全負け組なモバイルWebが、これから復活する(多分)

PCとその上のアプリは ライフタイムが殆ど変わらなかった

デスクトップPC ノートPC

作業中 作業無し

ブラウザ閉じるブラウザ開く

PC停止PC起動

Page 14: 完全負け組なモバイルWebが、これから復活する(多分)

モバイルは常に起動されユーザに寄り添い アプリもまた、常時ユーザと寄り添う

モバイル

作業中 作業無し

アプリ起動

モバイル起動

作業復活

通知!

Page 15: 完全負け組なモバイルWebが、これから復活する(多分)

しかし、Webは閉じられたら何もできない モバイルの使われ方とは合わない

作業中 作業無し

ブラウザ開く

モバイル起動

作業復活ならず!!

ブラウザ閉じる

モバイル

Page 16: 完全負け組なモバイルWebが、これから復活する(多分)

ダメダメな理由 - その3

パフォーマンスが悪い

Page 17: 完全負け組なモバイルWebが、これから復活する(多分)

デスクトップPC ノートPC

PCはハードウェアも通信リソースも潤沢 Webのオーバヘッドも吸収できる

Page 18: 完全負け組なモバイルWebが、これから復活する(多分)

モバイル

モバイルは省エネが求められ制限が多い Webのオーバヘッドは時に邪魔になる

Page 19: 完全負け組なモバイルWebが、これから復活する(多分)

Webはモバイルに 向いていないというのか…

けど、けど我々はッ

Page 20: 完全負け組なモバイルWebが、これから復活する(多分)

Webという自由な世界で 人々にサービスを 提供し続けたい!!

Page 21: 完全負け組なモバイルWebが、これから復活する(多分)

Googleはその答えを探っているようです

The Next Generation Mobile Web Google I/O 2015

Page 22: 完全負け組なモバイルWebが、これから復活する(多分)

モバイルに適したWebを作るために 開発者が行うべき3つのこと

Mobile UIモバイルに適したUISTEP.1

Mobile Lifetimeモバイルに適したライフタイム

STEP.2

Mobile Performanceモバイルに適したパフォーマンス

STEP.3

User

Contents

Page 23: 完全負け組なモバイルWebが、これから復活する(多分)

STEP.1

Mobile UIモバイルに適したUIでWebを扱おう!!

Page 24: 完全負け組なモバイルWebが、これから復活する(多分)

ホームスクリーンへ ランチャーアイコンを配置し

Web

Web

アプリ

アプリ

ほげほげ ふがふが ぴよぴよ ふーばー

Page 25: 完全負け組なモバイルWebが、これから復活する(多分)

アイコンをタップ時には モバイル専用のUIで起動させよう!!

ほげほげ ふがふが ぴよぴよ ふーばー

ぴよぴよ

Page 26: 完全負け組なモバイルWebが、これから復活する(多分)

どうやって!?

Page 27: 完全負け組なモバイルWebが、これから復活する(多分)

Web Application Manifest

・WebアプリでモバイルUIを  扱うためのWeb標準。

・Apache Cordovaで慣らされ  ManifoldJSでも使われる。

・Chrome M39(2014.10)からは、  ホームスクリーン起動時にも利用可に!!

http://www.w3.org/TR/appmanifest/

Page 28: 完全負け組なモバイルWebが、これから復活する(多分)

Add to Home Screen

manifest.json

ほげほげ ふがふが ぴよぴよ ふーばー

index.html

・タイトル ・リンク先URL ・IconファイルURL ・UI制限

参照

Page 29: 完全負け組なモバイルWebが、これから復活する(多分)

index.html

<!DOCTYPE html> <html lang="ja"> <head>

<meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <link rel="manifest" href="manifest.json"> <title>ぴよぴよ</title>

・・・

Chrome M39+

Page 30: 完全負け組なモバイルWebが、これから復活する(多分)

manifest.json

Chrome M39+

{ "name": "Manifest Sample", "icons": [ { "src": "launcher-icon-0-75x.png", "sizes": "36x36", "type": "image/png", "density": "0.75" },

], "start_url": "index.html", "display": "standalone", "orientation": "landscape" }

← iconファイルURL

← 開始URL← ブラウザUIの有無← 縦/横の制限

Page 31: 完全負け組なモバイルWebが、これから復活する(多分)

index.html

<!DOCTYPE html> <html lang="ja"> <head>

<meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <meta name="mobile-web-app-capable" content="yes"> <link rel="icon" sizes="192x192" href="/icon.png"> <title>ぴよぴよ</title>

・・・

Chrome M31~M38 (一昔前のやり方)

Page 32: 完全負け組なモバイルWebが、これから復活する(多分)

https://developer.chrome.com/multidevice/android/installtohomescreen

Page 33: 完全負け組なモバイルWebが、これから復活する(多分)

STEP.2

Mobile LifetimeWebをモバイルに適したライフタイムで動かそう!!

Page 34: 完全負け組なモバイルWebが、これから復活する(多分)

Notification Are The Next Platform. — Anish Acharya, TechCrunch

これからのプラットフォームは 通知機能だ!!

Page 35: 完全負け組なモバイルWebが、これから復活する(多分)

ブラウザが閉じられても バックグラウンドで待機させて

ぴよぴよほげほげ ふがふが ぴよぴよ ふーばー

Page 36: 完全負け組なモバイルWebが、これから復活する(多分)

何か起きた時に ユーザへそれを通知しよう!!

ぴよぴよ 5分前

【悲報】あなたがいつになってもAPI 22を使ってくれないから、ドロイド君がグレてしまったようです。

Page 37: 完全負け組なモバイルWebが、これから復活する(多分)

どうやって!?

Page 38: 完全負け組なモバイルWebが、これから復活する(多分)

Service Workers

Page 39: 完全負け組なモバイルWebが、これから復活する(多分)

Service Workers

バックグラウンドでイベントを受付けて 何かしらの処理を実行できるWeb標準。

http://www.w3.org/TR/service-workers/

Push APIhttp://www.w3.org/TR/push-api/

プッシュサービスからのプッシュイベントを 受付けて、メッセージを読み込めるWeb標準。

Notifications APIhttps://notifications.spec.whatwg.org/

モバイルの通知を実現するLiving Standard。 Permission APIの仕様が固まるとWeb標準になる?

Page 40: 完全負け組なモバイルWebが、これから復活する(多分)

プッシュ サービス

ネットワーク

push events

clear push subscription

ぴよぴよ 5分前

【悲報】あなたがいつになってもAPI 22を使ってくれないから、ドロイド君がグレてしまったようです。

通知画面

Service Workers

ブラウザが閉じていても 裏で動いている

show notification

Page 41: 完全負け組なモバイルWebが、これから復活する(多分)

https://developers.google.com/web/updates/2015/03/push-notificatons-on-the-open-web

Page 42: 完全負け組なモバイルWebが、これから復活する(多分)

https://developers.google.com/web/updates/2015/03/push-notificatons-on-the-open-web

時代はBackground Syncですね ごめんなさい。

Page 43: 完全負け組なモバイルWebが、これから復活する(多分)

STEP.3

Mobile Performanceモバイルに適したパフォーマンスにチューンしよう!!

Page 44: 完全負け組なモバイルWebが、これから復活する(多分)

When is performance ‘good enough’? When the user can’t perceive it. — Don Draper

十分なパフォーマンスとは ユーザがそれを意識しないことである

Page 45: 完全負け組なモバイルWebが、これから復活する(多分)

どうやって!?

Page 46: 完全負け組なモバイルWebが、これから復活する(多分)

ブラウザの中の人は モバイルWebを速くしようと戦っている!!

Oil-pan

Discardable memory

TurboFan

CSS Writer rewrite

Slimming Paint

Intelligent session restore

DOM serialization

Scheduler

SaneScript

SoundScript

Fast line layout

Ganesh

Code caching

Script Streaming

Service Worker

IndexedDB Optimization

image-rendering:pixelated

Media power reduction

Animated GIF optimization

Memory Coordinator

Remove Animated GIF paint storm

Unified BeginFrame Scheduling

Threaded GPU Rasterization

Partial Swap

Page 47: 完全負け組なモバイルWebが、これから復活する(多分)

RAIL

開発者が実践すべきことは Webのパフォーマンスモデル

Page 48: 完全負け組なモバイルWebが、これから復活する(多分)

RAIL

R : Reaction, Response

A : Animation

I : Idle

L : Load

これでユーザは、ストレスフリーになれる!!

Page 49: 完全負け組なモバイルWebが、これから復活する(多分)

R : Reactionは100ms未満で!

Page 50: 完全負け組なモバイルWebが、これから復活する(多分)

A : Animationは16.67ms未満で!

Page 51: 完全負け組なモバイルWebが、これから復活する(多分)

I : Idleは50ms未満で!

Page 52: 完全負け組なモバイルWebが、これから復活する(多分)

L : Loadは1,000ms未満で!

Page 53: 完全負け組なモバイルWebが、これから復活する(多分)

もっと詳しく!?

Page 54: 完全負け組なモバイルWebが、これから復活する(多分)

大好評連載中http://gihyo.jp/dev/serial/01/web-rail

Page 55: 完全負け組なモバイルWebが、これから復活する(多分)

最後に

Page 56: 完全負け組なモバイルWebが、これから復活する(多分)

モバイルWebの未来はダメダメじゃない 希望を持って生きようじゃないか!!

1. モバイルに適したUIを! Web Application Manifest/Add to Homescreen

2. モバイルに適したライフタイムを!ServiceWorkers/Notification/Push

3. モバイルに適したパフォーマンスを!Performance on RAIL

Page 57: 完全負け組なモバイルWebが、これから復活する(多分)

ほげほげ ふがふが ぴよぴよ ふーばー

入り口は ホームスクリーンから

Service Workers

Web サーバー

Push サービス

アセット (キャッシュ)

メッセージ ②③

通知

HTMLアプリを 送っておく

Push

パフォーマンスはRAILで!!

モバイルWebの未来はダメダメじゃない 希望を持って生きようじゃないか!!

Page 58: 完全負け組なモバイルWebが、これから復活する(多分)

フラグメントの問題が 解決されたらね…

Page 59: 完全負け組なモバイルWebが、これから復活する(多分)

Googleさん 期待しています!!

Page 60: 完全負け組なモバイルWebが、これから復活する(多分)

Thank You!

ふろしき  @_furoshiki