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
ウェブ開発者の視点からおさらいするPWA
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Takeshi Nick Osanai
March 12, 2019
Technology
1.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ウェブ開発者の視点からおさらいするPWA
2019年3月12日 MT東京のイベントの登壇内容です。
Takeshi Nick Osanai
March 12, 2019
Transcript
24 slides
ウェブ開発者の視点から おさらいする PWA 2019年3月12日 シックス・アパート株式会社 ⾧内毅志
自己紹介 • ⾧内毅志 • ディベロッパーリレーションマネージャー、エバンジェリスト • AWS認定ソリューションアーキテクト • 趣味 ジョギング、野球観戦
英語の勉強 (TOEIC 875, 英検準1級) 家族と過ごすこと @Nick_smallworld
本スライドの対象 • PWAに興味を持っているWeb開発者 • すでにPWAを開発している方には物足りないかもしれません • 個人的に調べ直したことをまとめました
アジェンダ • PWA (Progressive Web Apps)とは • PWAを構成する技術 • Service
Worker と プッシュ通知 • ウェブ開発者の視点から考えるPWAのメリット
PWAとは • Google が提唱・推進しているアプリ • Progressive Web Apps の略称 •
ウェブアプリ、スマホアプリともに含まれる
PWAの事例
PWAの事例
個人的に作ったPWA • 英単語レッスンアプリ • ランダムに10問の英単語クイズを出題 • JavaScript(Vue.js)でフルスクラッチ開 発 • デモ用に公開したものなので、2019/3月末に一度削除します
個人的に作ったPWA • 君の名は。聖地ナビ • 映画「君の名は。」の名所案内 • 2017年にローンチ • MT+AWSで構築 •
Service Worker でオフライン利用可に
技術面からみたPWAの特徴 • Web技術 (html、css、JavaScript、各種 Web API) を利用 • ウェブサイトで公開可能、Appストアを経由せずに配布 •
スマートフォンにインストール可能 • Service Worker を利用し、ネット未接続でも動作 • プッシュ通知を使うことで、利用ユーザーに対する通知が可能
APP SHELL とは • PWAのコア概念 • 特別な技術ではなく、 「アプリ用テンプレート」の概念 を言語化したもの https://developers.google.com/web/fundamentals/architecture/app-shell?hl=ja
SERVICE WORKERについて • ブラウザのバックグラウンドで動 作するJavaScript • プッシュ通知やバックグラウンド 同期などを行う https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/?hl=ja
SERVICE WORKER の登録(例)
PUSH通知について • Web技術の通知用APIは大きく分けて2つある • Notifications API • Push API •
PWAでは「Push API」を利用した通知を指すことが多い
プッシュ通知の流れ • ユーザーから通知許可をもらう • Push Subscriptionをサーバー側に 保存 • プッシュ通知を受信するためのスクリプ トをService
Worker に設定 • サーバーからプッシュ通知を送る • 通知登録したユーザーへ届く • Service Worker が通知を処理 https://developers.google.com/web/fundamentals/push-notifications/how-push-works
PWAを開発するためには • Web技術を利用したアプリ作成 • manifest.jsonでアプリの定義 • Service Worker を登録し、ブラウザにデータキャッシュ、バックグ ラウンドで動作
• プッシュ通知でユーザーへ通知
必須知識 • HTML5、JavaScript • Promise オブジェクトを多用するためおさらいを • プッシュ通知を使う場合、サーバーサイドの知識 • 通知登録者の管理はDBが必要となる
GOOGLEが推奨するオフラインキャッシュの方法 • App Shell + データフェッチ • App Shell はURLで指定できるファイルをコンパクトに設計、
Cache APIでキャッシュ • フェッチした データは IndexedDB を利用して保存・管理
PWA開発でハマりそうなところ • Service Worker によるキャッシュのライフサイクルに注意 • キャッシュコントロールを間違えずに • 設定をミスすると古いバージョンが残り続ける •
プッシュ通知の実装はそれなりに工数かかる • VAPID Key の発行 • サブスクリプション用DBの準備が必要 • mBaaSを使うのが手っ取り早い(Firebase、Nifty Cloudなど)
宣伝 • MovableType.net はどちらも設定が楽 • PWA用のmBaaSとして一考の価値あり • とくにプッシュ通知の管理はかなり楽
ウェブ開発者の視点から見たPWAのメリット • 既存のスキルでアプリ開発・配布ができる • ネイティブアプリ用言語の習得が必要ない • ハイブリッドアプリのようにパッケージ化の必要がない • ビジネスサービスの幅を広げるチャンス •
これまでアプリ開発をしたことがない方はチャレンジの価値あり
エンド・制作会社からみたメリット • ウェブサイトとウェブアプリ・スマホアプリの開発を並行して進め ることができる • スマホアプリ投入のトライアルとして利用 • ネイティブアプリは開発・メンテナンスコストが高い • さきにPWAを投入、メリットが検証できたらネイティブ開発
今日の内容 • Qiitaというサービスに、もう少し詳しく書いています • 「Progressive Web Apps (PWA) 学習者のメモ 」
• Qiita で「PWA」で検索ください。
ありがとうございました。
More Decks by Takeshi Nick Osanai
See All by Takeshi Nick Osanai
How DevRel should proceed with the breaking change project?
tosanai
0
320
AWS を利用した ウェブサイトホスティングと PowerCMS X
tosanai
1
1.3k
プラットフォーム事業を推進するための開発者マーケティング
tosanai
0
100
MTクラウドハンズオン資料
tosanai
1
170
Movable Type クラウド版 ハンズオンセミナー
tosanai
0
340
20190508_DevRel_Meetup_Public.pdf
tosanai
0
880
Movable Type クラウド版 ハンズオン資料
tosanai
0
170
20190320_MTCloud_handson.pdf
tosanai
0
150
IndexedDBのラッパー「localoForage」を試してみた
tosanai
0
3k
Other Decks in Technology
See All in Technology
ラクスル会社紹介資料|エンジニア向け / RAKSUL Introduction for Engineers
raksulrecruiting
0
110
あの日、見つかっていなかったらどうなっていたか
kazzpapa3
2
210
The Author Pays
hiccupps
0
210
[NW-JAWS DAY]「うちのAWS、インターネット出られないんで」― AWS外の自社サービスをPrivateLinkでシュッと公開する方法
ykimi
2
300
アラートを見直していたら営業組織への理解にちょっとだけ繋がった話
z63d
1
200
Intro to Kiro (One agent, every surface) | Kiro: Zero to Hero 01
inariku
PRO
2
130
BALLAS Technology Deck
ballas_inc
0
620
狙われているAPIの脆弱性!今こそ手をつけるべき根本的な対策とは?
nagix
0
130
属人化したISMS運用をGitHubとAIで仕組み化した1年間の記録
sioncojp
4
2.6k
大江戸Ruby会議でデータベース クライアントの話をするのは 間違っているだろうか
yahonda
1
120
AWS Emulator を評価する: 手元で動く AWS の API の仕組み、始め方、確かめ方
inariku
PRO
1
500
Context != Context: One window, many lifecycles (AI Native DevCon, Nov 2026)
birgitta410
0
140
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
530
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Paper Plane
katiecoart
PRO
6
55k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
Test your architecture with Archunit
thirion
2
2.5k
The Pragmatic Product Professional
lauravandoore
37
7.5k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
370
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.8k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
560
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
A designer walks into a library…
pauljervisheath
211
25k