SlideShare una empresa de Scribd logo
1 de 68
Descargar para leer sin conexión
進化する Web
~ Progressive Web Apps の実装と応用 ~
AD09
for
DEVELOPER
• Progressive Web Apps について
• Progressive Web Apps を実現する API
• Progressive Web Apps on Windows
アジェンダ
Progressive Web Apps
Progressive Web Apps とは?
ネイティブアプリのような UX を提供する Web アプリの概念
• Chrome Dev Summit 2015
• もともとは Alex Russell 氏(Google) のブログ記事
• Web によるネイティブアプリのような UX
• クライアントの性能に合わせた機能提供
• アプリにおける Progressive Enhancement
アプリにおける Progressive Enhancement
同じコンテンツ
Web ページ
アプリケーション
Web サーバー
Progressive Web Apps を実現する機能
これまでの Web になかった機能
オフラインサポート プッシュ通知 バックグラウンド処理 アイコンの追加
Cache API Push API Background Sync Web App Manifest
Service Worker
Web App Manifest
Web のメリット
•Secure (安全)
•Linkable (リンク可能)
•Indexable (インデックス可能)
•Composable (再構成可能)
•Ephemeral (一時的な利用)
SLICE
Progressive Web Apps が提供する価値
• FIRE = Fast Integrated Reliable Engage
• Fast: パフォーマンスの良い、軽快な動作
• Integrated: OS と統合されたユーザー体験
• Reliable: オフラインでも動作する利便性と信頼性
• Engaging: Web サイトの価値向上
高速で信頼性の高いエンゲージメント
Progressive Web Apps のメリット
PWA = Web + アプリのメリット
Progressive Web Apps を実現する API
Service Worker
• Web Worker のひとつ
• DOM に直接アクセスできない
• Web ページと異なるライフサイクル
• ページのスクリプトから “登録” (インストール)
• 再インストール : Service Worker の JS ファイルの更新
• HTTPS 必須
バックグラウンドで動作するネットワークプロキシ
プログラミング可能な
Service Worker が提供する機能
クライアントWeb サーバー
• キャッシュ
• リクエストのハンドリング
• Push
• バックグラウンド同期
これまでの Web になかった機能
Service Worker が提供する機能
クライアントWeb サーバー
• キャッシュ
• リクエストのハンドリング
• Push
• バックグラウンド同期
これまでの Web になかった機能
Service Worker が提供する機能
クライアントWeb サーバー
• キャッシュ
• リクエストのハンドリング
• Push
• バックグラウンド同期
これまでの Web になかった機能
Service Worker が提供する機能
クライアントWeb サーバー
• キャッシュ
• リクエストのハンドリング
• Push
• バックグラウンド同期
これまでの Web になかった機能
Service Worker が提供する機能
クライアントWeb サーバー
• キャッシュ
• リクエストのハンドリング
• Push
• バックグラウンド同期
これまでの Web になかった機能
Service Worker が提供する機能
クライアントWeb サーバー
• キャッシュ
• リクエストのハンドリング
• Push
• バックグラウンド同期
これまでの Web になかった機能
Service Worker が提供する機能
クライアントWeb サーバー
• キャッシュ
• リクエストのハンドリング
• Push
• バックグラウンド同期
これまでの Web になかった機能
Service Worker の各 API 実装状況
Service Worker 〇 〇 〇 〇
Cache API 〇 〇 〇 〇
Push API 〇 〇 〇 ×
Background Sync API △ 〇 × ×
17 5966 11.1
開発中
Service Worker を使う準備
Service Worker 用の JS ファイルが必要
+
sw.js
JavaScript JavaScript
配下のアセットを制御
Service Worker のライフサイクル
Install
Activate
Idle
Error
Fetch /
Message
• ServiceWoker の登録
(Register メソッド)
• 静的なアセットのキャッシュ
• ダウンロードの失敗
• キャッシュの失敗
• Activate されない
• 有効化された際に発生
• インストール直後
• 復帰時
• 待機状態
• 終了(メモリ節約のため)• ネットワークリクエスト
またはメッセージに対する処理
Step 1 : Service Worker の登録 Web コンテンツ側の JS
Step 1 : Service Worker の登録
if ( navigator.serviceWorker ) {
} Service Worker がサポートされているか検証
Web コンテンツ側の JS
Step 1 : Service Worker の登録
if ( navigator.serviceWorker.controller ) {
console.log('There’s an active service worker');
}
すでに動作している Service Worker があるか検証することも可能
Web コンテンツ側の JS
Step 1 : Service Worker の登録
else {
navigator.serviceWorker.register('/sw.js')
.then(function(reg) {
}
Service Worker を登録
Web コンテンツ側の JS
Step 1 : Service Worker の登録
.then(function(reg) {
console.log('SW registered for scope',
reg.scope);
});
Promise で結果が返される
Web コンテンツ側の JS
Step 1 : Service Worker の登録
if ( navigator.serviceWorker ) {
navigator.serviceWorker.register('/sw.js');
}
Web コンテンツ側の JS
Service Worker 登録するだけならシンプルに書ける
Step 2 : アセットのキャッシュ Service Worker 側の JS
Step 2 : アセットのキャッシュ
Self.addEventListener('install', function(event)
Service Worker 側の JS
Service Worker 登録時に install イベントが発生
Step 2 : アセットのキャッシュ
event.waitUntil(
caches.open('キャッシュの名前')
)
Service Worker 側の JS
キャッシュを開く
Step 2 : アセットのキャッシュ
urlsToCache
'/',
'/index.html',
'/css/index.css',
'/script/index.js'
caches.open('キャッシュの名前')
.then(function(cache) {
return cache.addAll(urlsToCache);
Service Worker 側の JS
キャッシュするアセットを登録する
Step 3 : 有効化イベント
'キャッシュの名前'
Service Worker 側の JS
Step 3 : 有効化イベント
self.addEventListener('activate', function(e) {
'キャッシュの名前'
});
Service Worker 側の JS
Service Worker のインストールが完了し有効化
Step 3 : 有効化イベント
e.waitUntil(
caches.keys().then(function(keyList) {
'キャッシュの名前'
})
);
Service Worker 側の JS
既存のキャッシュの一覧を取り出す
Step 3 : 有効化イベント
return Promise.all(keyList.map(function(key) {
console.log('ServiceWorker の古いキーを削除しました。', key);
if (key !== 'キャッシュの名前') {
return caches.delete(key);
}
Service Worker 側の JS
今回開いたキャッシュと異なる名前のキャッシュを削除
キャッシュについて
コンテンツのキャッシュをオフラインで使用できるように管理
• App Shell
• UI が機能するために必要な最小限のリソース
• 要件にあったアセット
なにをキャッシュするか?
Service Worker の更新
• js ファイルを更新
• キャッシュがクリアされるわけではない
• 有効になるのは一度ページを閉じた後
Step 4 : リクエストのハンドリング Service Worker 側の JS
Step 4 : リクエストのハンドリング
self.addEventListener('fetch', function(e) {
})
Service Worker 側の JS
ネットワークリクエストがされると fetch イベントが発生
Step 4 : リクエストのハンドリング
caches.match(e.request)
Service Worker 側の JS
キャッシュからのデータが利用可能か どうかを確認
Step 4 : リクエストのハンドリング
e.request
.then(function(response) {
return response || fetch(e.request);
}
Service Worker 側の JS
キャッシュか fetch でネットワークから取得した内容を返す
Step 4 : リクエストのハンドリング
e.respondWith(
)
Service Worker 側の JS
ページにレスポンスを返す
デモ : Service Worker の実装
Web App Manifest
サイトのブックマークを端末のホーム画面に保存
<link rel="manifest" href="/manifest.manifest">
(※)Windows では現状 .appxmanifest(XML)形式に変換して使用
{
"lang": "ja",
"short_name": "Spece Enemy",
"name": "The Spece Enemy",
"icons": [
{
"src": "img/launcher-icon-2x.png",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "img/launcher-icon-4x.png",
"sizes": "512x512",
"type": "image/png"
}
],
"start_url": "/pwa/?utm_source=homescreen",
"display": "standalone",
"orientation": "portrait",
"background_color": "black"
}
Web Application Manifest の記述
{
"lang": "ja",
"short_name": "Spece Enemy",
"name": "The Spece Enemy",
"icons": [
{
"src": "img/launcher-icon-2x.png",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "img/launcher-icon-4x.png",
"sizes": "512x512",
"type": "image/png"
}
],
"start_url": "/pwa/?utm_source=homescreen",
"display": "standalone",
"orientation": "portrait",
"background_color": "black"
}
• name:アプリのフルネーム
• short_name:ショートネーム
{
"lang": "ja",
"short_name": "Spece Enemy",
"name": "The Spece Enemy",
"icons": [
{
"src": "img/launcher-icon-2x.png",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "img/launcher-icon-4x.png",
"sizes": "512x512",
"type": "image/png"
}
],
"start_url": "/pwa/?utm_source=homescreen",
"display": "standalone",
"orientation": "portrait",
"background_color": "black"
}
• icons : ホーム画面の
アイコンや起動画面に使用
されるアイコン
{
"lang": "ja",
"short_name": "Spece Enemy",
"name": "The Spece Enemy",
"icons": [
{
"src": "img/launcher-icon-2x.png",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "img/launcher-icon-4x.png",
"sizes": "512x512",
"type": "image/png"
}
],
"start_url": "/pwa/?utm_source=homescreen",
"display": "standalone",
"orientation": "portrait",
"background_color": "black"
}
• display : 優先されるビュー
• orientation : 画面の向き
• Background_color : 背景色
display : 優先されるビューの設定
fullscreen standalone minimal-ui browser
戻るボタンのみ
4 種類の指定が可能
限定された UI
(読み取り専用のナビ
ゲーションバー)
ブラウザーのまま
デモ : Web Application Manifest
Progressive Web Apps on
Windows
Microsoft Store からの配布
• 自動インデックス • セルフパブリッシング
PWA を Microsoft Store で公開する 2 の方法
Bing に自動インデックスされる条件
• HTTPS, セキュアなエンドポイント
• 高品質の manifest
(names, screen shots, descriptions)
• オフラインサポート
• ストアの審査をパス
• デジタルグッズを販売しないこと
• アダルトコンテンツを含まないこと
• 不快なコンテンツは不可
• Windows ならではの差別化がされている
Microsoft Store で公開するための条件
Windows Store むけ PWA の検証
• PWA が Microsoft Store の準備ができていることを
検証
• パフォーマンスとユーザーエクスペリエンスの向上https://sonarwhal.com/
Bing に検出されないようにするには
• manifest なし、https なし、もしくは
オフラインで動作しない
• Robot.txt ファイルを設定
• display: browser
• アプリを削除するようサービスリクエストを
出す
(reportapp@microsoft.com)
Microsoft ストアでの公開
• dev.microsoft.com で開発者アカウントを
開設
PWABuilder.com で Appx を生成する
reportapp@microsoft.com
UWP アプリの提出とおなじ
PWA Builder での PWA の開始
https://www.pwabuilder.com/
ホストされている PWA をパッケージング
Windows Store App の価値
• デベロッパーセンターの分析
• アプリ内課金
• プロモーションの機会
• データストレージの上限がない
• Service Workers
• WinRT API へのアクセス
Progressive Web Apps をさらに Progressive
WinRT API にアクセス可能
//Windows にインストールされているかどうか
//セカンダリータイルをピン留めする
//有効化される場所
Progressive Web Apps の価値を高める API
• CSS3
• WebAssembly
• WebVR
• Web Payments
Progressive Web Apps の位置づけ
Web と Native の間を埋める
Progressive Web Apps の位置づけ
Web と Native の間を埋める
PWA
まとめ
=
• Service Worker
• Web Application Manifest
• Other..
Web
+
Native
Apps
This is
good one!
参考
• Progressive Web Apps on Windows
• Sonarwhal
• PWA BUILDER
• Building Progressive Web Apps
for Windows devices : Build 2018
• Cboard: A Progressive Web App for Everyone
Ask the Speaker のご案内
ブレイクアウトセッション終了後の休憩時間に、
登壇したスピーカーに直接ご質問いただける
コーナーを 「Ask The Speakers」 Room に
用意しております。セッション内容のより深い
理解のため、ぜひお役立てください。
「Ask The Speakers」
セッションアンケートにご協力ください。
Twitter のご案内
© 2018 Microsoft Corporation. All rights reserved.
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

Más contenido relacionado

La actualidad más candente

【BS10】Microsoft と GitHub の開発エコシステムで、開発にドライブをかけよう!
【BS10】Microsoft と GitHub の開発エコシステムで、開発にドライブをかけよう!【BS10】Microsoft と GitHub の開発エコシステムで、開発にドライブをかけよう!
【BS10】Microsoft と GitHub の開発エコシステムで、開発にドライブをかけよう!日本マイクロソフト株式会社
 
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...Shotaro Suzuki
 
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説Takao Tetsuro
 
Myfirst buildpack session_mgmt_20161201
Myfirst buildpack session_mgmt_20161201Myfirst buildpack session_mgmt_20161201
Myfirst buildpack session_mgmt_20161201Tomohiro Ichimura
 
祝 top-level project Apache Geode
祝 top-level project Apache Geode祝 top-level project Apache Geode
祝 top-level project Apache GeodeTomohiro Ichimura
 
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること 【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること 日本マイクロソフト株式会社
 
【BS9】モダン & クラウドネイティブなソフトウエア開発はじめよう ~ Azure DevOps & GitHub を使ったアプリ開発 DevOps 101
【BS9】モダン & クラウドネイティブなソフトウエア開発はじめよう ~ Azure DevOps & GitHub を使ったアプリ開発 DevOps 101 【BS9】モダン & クラウドネイティブなソフトウエア開発はじめよう ~ Azure DevOps & GitHub を使ったアプリ開発 DevOps 101
【BS9】モダン & クラウドネイティブなソフトウエア開発はじめよう ~ Azure DevOps & GitHub を使ったアプリ開発 DevOps 101 日本マイクロソフト株式会社
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Shotaro Suzuki
 
Circle of Code with Cloud Foundry
Circle of Code with Cloud FoundryCircle of Code with Cloud Foundry
Circle of Code with Cloud FoundryTomohiro Ichimura
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Shotaro Suzuki
 
Azure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュAzure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュYasuaki Matsuda
 
ASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さSho Okada
 
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発日本マイクロソフト株式会社
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CDIssei Hiraoka
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介Shotaro Suzuki
 
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...Shotaro Suzuki
 
Microsoft Build 2021をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPs
Microsoft Build 2021をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPsMicrosoft Build 2021をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPs
Microsoft Build 2021をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPsRie Moriguchi
 
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発Naoki (Neo) SATO
 
Infra as Code in Azure
Infra as Code in AzureInfra as Code in Azure
Infra as Code in AzureIssei Hiraoka
 

La actualidad más candente (20)

【BS10】Microsoft と GitHub の開発エコシステムで、開発にドライブをかけよう!
【BS10】Microsoft と GitHub の開発エコシステムで、開発にドライブをかけよう!【BS10】Microsoft と GitHub の開発エコシステムで、開発にドライブをかけよう!
【BS10】Microsoft と GitHub の開発エコシステムで、開発にドライブをかけよう!
 
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
 
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
 
Myfirst buildpack session_mgmt_20161201
Myfirst buildpack session_mgmt_20161201Myfirst buildpack session_mgmt_20161201
Myfirst buildpack session_mgmt_20161201
 
祝 top-level project Apache Geode
祝 top-level project Apache Geode祝 top-level project Apache Geode
祝 top-level project Apache Geode
 
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること 【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
 
【BS9】モダン & クラウドネイティブなソフトウエア開発はじめよう ~ Azure DevOps & GitHub を使ったアプリ開発 DevOps 101
【BS9】モダン & クラウドネイティブなソフトウエア開発はじめよう ~ Azure DevOps & GitHub を使ったアプリ開発 DevOps 101 【BS9】モダン & クラウドネイティブなソフトウエア開発はじめよう ~ Azure DevOps & GitHub を使ったアプリ開発 DevOps 101
【BS9】モダン & クラウドネイティブなソフトウエア開発はじめよう ~ Azure DevOps & GitHub を使ったアプリ開発 DevOps 101
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
 
Circle of Code with Cloud Foundry
Circle of Code with Cloud FoundryCircle of Code with Cloud Foundry
Circle of Code with Cloud Foundry
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
 
Azure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュAzure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュ
 
ASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さ
 
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CD
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
 
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
 
Microsoft Build 2021をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPs
Microsoft Build 2021をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPsMicrosoft Build 2021をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPs
Microsoft Build 2021をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPs
 
【BS6】 マイクロソフトの GitHub との取り組み
【BS6】 マイクロソフトの GitHub との取り組み 【BS6】 マイクロソフトの GitHub との取り組み
【BS6】 マイクロソフトの GitHub との取り組み
 
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
 
Infra as Code in Azure
Infra as Code in AzureInfra as Code in Azure
Infra as Code in Azure
 

Similar a 進化する Web ~ Progressive Web Apps の実装と応用 ~

Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)shigeya
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから真吾 吉田
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用Yatabe Terumasa
 
Web プラットフォーム再考 ~PWA のもたらす未来の光と影~
Web プラットフォーム再考 ~PWA のもたらす未来の光と影~Web プラットフォーム再考 ~PWA のもたらす未来の光と影~
Web プラットフォーム再考 ~PWA のもたらす未来の光と影~Osamu Monoe
 
クラウドネイティブ化する未来
クラウドネイティブ化する未来クラウドネイティブ化する未来
クラウドネイティブ化する未来Keisuke Nishitani
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューションHiromasa Oka
 
PWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringPWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringRyu Shindo
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説Akira Inoue
 
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Akira Inoue
 
次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説kumo2010
 
2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~Takeshi Shinmura
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...Naoya Ito
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.jsTanUkkii
 
Challenge PWA!! WordCamp Tokyo 2018
Challenge PWA!!  WordCamp Tokyo 2018Challenge PWA!!  WordCamp Tokyo 2018
Challenge PWA!! WordCamp Tokyo 2018Ryu Shindo
 
AWS Amplify - Auth/API Category & Vue 構築ハンズオン
AWS Amplify - Auth/API Category & Vue 構築ハンズオンAWS Amplify - Auth/API Category & Vue 構築ハンズオン
AWS Amplify - Auth/API Category & Vue 構築ハンズオンEiji KOMINAMI
 
自社クラウドサービスをAnsibleで作った話
自社クラウドサービスをAnsibleで作った話自社クラウドサービスをAnsibleで作った話
自社クラウドサービスをAnsibleで作った話Watanabe Shunji
 
JAWSDAYS2016 Technical Deep DIVE
JAWSDAYS2016 Technical Deep DIVE JAWSDAYS2016 Technical Deep DIVE
JAWSDAYS2016 Technical Deep DIVE 陽平 山口
 

Similar a 進化する Web ~ Progressive Web Apps の実装と応用 ~ (20)

Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
 
Web プラットフォーム再考 ~PWA のもたらす未来の光と影~
Web プラットフォーム再考 ~PWA のもたらす未来の光と影~Web プラットフォーム再考 ~PWA のもたらす未来の光と影~
Web プラットフォーム再考 ~PWA のもたらす未来の光と影~
 
クラウドネイティブ化する未来
クラウドネイティブ化する未来クラウドネイティブ化する未来
クラウドネイティブ化する未来
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューション
 
PWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringPWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 Spring
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
 
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
 
次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説
 
2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
densan2014-late01
densan2014-late01densan2014-late01
densan2014-late01
 
Challenge PWA!! WordCamp Tokyo 2018
Challenge PWA!!  WordCamp Tokyo 2018Challenge PWA!!  WordCamp Tokyo 2018
Challenge PWA!! WordCamp Tokyo 2018
 
AWS Amplify - Auth/API Category & Vue 構築ハンズオン
AWS Amplify - Auth/API Category & Vue 構築ハンズオンAWS Amplify - Auth/API Category & Vue 構築ハンズオン
AWS Amplify - Auth/API Category & Vue 構築ハンズオン
 
自社クラウドサービスをAnsibleで作った話
自社クラウドサービスをAnsibleで作った話自社クラウドサービスをAnsibleで作った話
自社クラウドサービスをAnsibleで作った話
 
UnicastWS vol.2
UnicastWS vol.2UnicastWS vol.2
UnicastWS vol.2
 
JAWSDAYS2016 Technical Deep DIVE
JAWSDAYS2016 Technical Deep DIVE JAWSDAYS2016 Technical Deep DIVE
JAWSDAYS2016 Technical Deep DIVE
 

Más de Microsoft Azure Japan

Awl introduction and camera ra 121219
Awl introduction and camera ra  121219Awl introduction and camera ra  121219
Awl introduction and camera ra 121219Microsoft Azure Japan
 
Smart Camera: Azure IoT + Container
Smart Camera: Azure IoT + Container Smart Camera: Azure IoT + Container
Smart Camera: Azure IoT + Container Microsoft Azure Japan
 
Smart store servlerless-20191030-40min
Smart store servlerless-20191030-40minSmart store servlerless-20191030-40min
Smart store servlerless-20191030-40minMicrosoft Azure Japan
 
Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Microsoft Azure Japan
 
Smart storeを実現するAzureサービス IoT編
Smart storeを実現するAzureサービス IoT編Smart storeを実現するAzureサービス IoT編
Smart storeを実現するAzureサービス IoT編Microsoft Azure Japan
 
Ceonnect(): 2018 Japan AKS (Yoshio Terada)
Ceonnect(): 2018 Japan AKS (Yoshio Terada)Ceonnect(): 2018 Japan AKS (Yoshio Terada)
Ceonnect(): 2018 Japan AKS (Yoshio Terada)Microsoft Azure Japan
 
Connect(); 2018 Japan IoT <Hiroshi Ota>
Connect(); 2018 Japan IoT <Hiroshi Ota>Connect(); 2018 Japan IoT <Hiroshi Ota>
Connect(); 2018 Japan IoT <Hiroshi Ota>Microsoft Azure Japan
 
音声 Chat で見込み客を獲得!Bot を活用した業務効率化
音声 Chat で見込み客を獲得!Bot を活用した業務効率化音声 Chat で見込み客を獲得!Bot を活用した業務効率化
音声 Chat で見込み客を獲得!Bot を活用した業務効率化Microsoft Azure Japan
 
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQLスケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQLMicrosoft Azure Japan
 
Intelligent Mobile App と Cloud Native、これからの時代のアプリケーション開発ビジョン
Intelligent Mobile App と Cloud Native、これからの時代のアプリケーション開発ビジョンIntelligent Mobile App と Cloud Native、これからの時代のアプリケーション開発ビジョン
Intelligent Mobile App と Cloud Native、これからの時代のアプリケーション開発ビジョンMicrosoft Azure Japan
 
高速開発でビジネスニーズをいち早く具現化する DevOps ソリューション
高速開発でビジネスニーズをいち早く具現化する DevOps ソリューション高速開発でビジネスニーズをいち早く具現化する DevOps ソリューション
高速開発でビジネスニーズをいち早く具現化する DevOps ソリューションMicrosoft Azure Japan
 
おもてなしサービスで売上伸長! 画像認識を活用した先端マーケティング 〜カメラとAIの素敵なカンケイ〜
おもてなしサービスで売上伸長! 画像認識を活用した先端マーケティング 〜カメラとAIの素敵なカンケイ〜おもてなしサービスで売上伸長! 画像認識を活用した先端マーケティング 〜カメラとAIの素敵なカンケイ〜
おもてなしサービスで売上伸長! 画像認識を活用した先端マーケティング 〜カメラとAIの素敵なカンケイ〜Microsoft Azure Japan
 
AIを使いこなせ! ~AI最新技術とMicrosft AI Platform~
AIを使いこなせ! ~AI最新技術とMicrosft AI Platform~AIを使いこなせ! ~AI最新技術とMicrosft AI Platform~
AIを使いこなせ! ~AI最新技術とMicrosft AI Platform~Microsoft Azure Japan
 
センサーxIo tx機械学習が実現する導線分析のビジネス貢献
センサーxIo tx機械学習が実現する導線分析のビジネス貢献センサーxIo tx機械学習が実現する導線分析のビジネス貢献
センサーxIo tx機械学習が実現する導線分析のビジネス貢献Microsoft Azure Japan
 
Msのio tと最新事例 ms_02082018
Msのio tと最新事例 ms_02082018Msのio tと最新事例 ms_02082018
Msのio tと最新事例 ms_02082018Microsoft Azure Japan
 

Más de Microsoft Azure Japan (20)

Awl introduction and camera ra 121219
Awl introduction and camera ra  121219Awl introduction and camera ra  121219
Awl introduction and camera ra 121219
 
Microsoft smart store strategy
Microsoft smart store strategyMicrosoft smart store strategy
Microsoft smart store strategy
 
Smart Store Map
Smart Store MapSmart Store Map
Smart Store Map
 
Smart Camera: Azure IoT + Container
Smart Camera: Azure IoT + Container Smart Camera: Azure IoT + Container
Smart Camera: Azure IoT + Container
 
Ms retail update ra 20191030
Ms retail update ra 20191030Ms retail update ra 20191030
Ms retail update ra 20191030
 
Smart store servlerless-20191030-40min
Smart store servlerless-20191030-40minSmart store servlerless-20191030-40min
Smart store servlerless-20191030-40min
 
Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編
 
Smart storeを実現するAzureサービス IoT編
Smart storeを実現するAzureサービス IoT編Smart storeを実現するAzureサービス IoT編
Smart storeを実現するAzureサービス IoT編
 
Azure IoT/AI最前線
Azure IoT/AI最前線Azure IoT/AI最前線
Azure IoT/AI最前線
 
Ceonnect(): 2018 Japan AKS (Yoshio Terada)
Ceonnect(): 2018 Japan AKS (Yoshio Terada)Ceonnect(): 2018 Japan AKS (Yoshio Terada)
Ceonnect(): 2018 Japan AKS (Yoshio Terada)
 
Connect(); 2018 Japan IoT <Hiroshi Ota>
Connect(); 2018 Japan IoT <Hiroshi Ota>Connect(); 2018 Japan IoT <Hiroshi Ota>
Connect(); 2018 Japan IoT <Hiroshi Ota>
 
音声 Chat で見込み客を獲得!Bot を活用した業務効率化
音声 Chat で見込み客を獲得!Bot を活用した業務効率化音声 Chat で見込み客を獲得!Bot を活用した業務効率化
音声 Chat で見込み客を獲得!Bot を活用した業務効率化
 
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQLスケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
 
App center an overview
App center  an overviewApp center  an overview
App center an overview
 
Intelligent Mobile App と Cloud Native、これからの時代のアプリケーション開発ビジョン
Intelligent Mobile App と Cloud Native、これからの時代のアプリケーション開発ビジョンIntelligent Mobile App と Cloud Native、これからの時代のアプリケーション開発ビジョン
Intelligent Mobile App と Cloud Native、これからの時代のアプリケーション開発ビジョン
 
高速開発でビジネスニーズをいち早く具現化する DevOps ソリューション
高速開発でビジネスニーズをいち早く具現化する DevOps ソリューション高速開発でビジネスニーズをいち早く具現化する DevOps ソリューション
高速開発でビジネスニーズをいち早く具現化する DevOps ソリューション
 
おもてなしサービスで売上伸長! 画像認識を活用した先端マーケティング 〜カメラとAIの素敵なカンケイ〜
おもてなしサービスで売上伸長! 画像認識を活用した先端マーケティング 〜カメラとAIの素敵なカンケイ〜おもてなしサービスで売上伸長! 画像認識を活用した先端マーケティング 〜カメラとAIの素敵なカンケイ〜
おもてなしサービスで売上伸長! 画像認識を活用した先端マーケティング 〜カメラとAIの素敵なカンケイ〜
 
AIを使いこなせ! ~AI最新技術とMicrosft AI Platform~
AIを使いこなせ! ~AI最新技術とMicrosft AI Platform~AIを使いこなせ! ~AI最新技術とMicrosft AI Platform~
AIを使いこなせ! ~AI最新技術とMicrosft AI Platform~
 
センサーxIo tx機械学習が実現する導線分析のビジネス貢献
センサーxIo tx機械学習が実現する導線分析のビジネス貢献センサーxIo tx機械学習が実現する導線分析のビジネス貢献
センサーxIo tx機械学習が実現する導線分析のビジネス貢献
 
Msのio tと最新事例 ms_02082018
Msのio tと最新事例 ms_02082018Msのio tと最新事例 ms_02082018
Msのio tと最新事例 ms_02082018
 

Último

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 

Último (12)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

進化する Web ~ Progressive Web Apps の実装と応用 ~

  • 1. 進化する Web ~ Progressive Web Apps の実装と応用 ~ AD09
  • 3. • Progressive Web Apps について • Progressive Web Apps を実現する API • Progressive Web Apps on Windows アジェンダ
  • 5. Progressive Web Apps とは? ネイティブアプリのような UX を提供する Web アプリの概念 • Chrome Dev Summit 2015 • もともとは Alex Russell 氏(Google) のブログ記事 • Web によるネイティブアプリのような UX • クライアントの性能に合わせた機能提供 • アプリにおける Progressive Enhancement
  • 6. アプリにおける Progressive Enhancement 同じコンテンツ Web ページ アプリケーション Web サーバー
  • 7. Progressive Web Apps を実現する機能 これまでの Web になかった機能 オフラインサポート プッシュ通知 バックグラウンド処理 アイコンの追加 Cache API Push API Background Sync Web App Manifest Service Worker Web App Manifest
  • 8. Web のメリット •Secure (安全) •Linkable (リンク可能) •Indexable (インデックス可能) •Composable (再構成可能) •Ephemeral (一時的な利用) SLICE
  • 9. Progressive Web Apps が提供する価値 • FIRE = Fast Integrated Reliable Engage • Fast: パフォーマンスの良い、軽快な動作 • Integrated: OS と統合されたユーザー体験 • Reliable: オフラインでも動作する利便性と信頼性 • Engaging: Web サイトの価値向上 高速で信頼性の高いエンゲージメント
  • 10. Progressive Web Apps のメリット PWA = Web + アプリのメリット
  • 11. Progressive Web Apps を実現する API
  • 12. Service Worker • Web Worker のひとつ • DOM に直接アクセスできない • Web ページと異なるライフサイクル • ページのスクリプトから “登録” (インストール) • 再インストール : Service Worker の JS ファイルの更新 • HTTPS 必須 バックグラウンドで動作するネットワークプロキシ プログラミング可能な
  • 13. Service Worker が提供する機能 クライアントWeb サーバー • キャッシュ • リクエストのハンドリング • Push • バックグラウンド同期 これまでの Web になかった機能
  • 14. Service Worker が提供する機能 クライアントWeb サーバー • キャッシュ • リクエストのハンドリング • Push • バックグラウンド同期 これまでの Web になかった機能
  • 15. Service Worker が提供する機能 クライアントWeb サーバー • キャッシュ • リクエストのハンドリング • Push • バックグラウンド同期 これまでの Web になかった機能
  • 16. Service Worker が提供する機能 クライアントWeb サーバー • キャッシュ • リクエストのハンドリング • Push • バックグラウンド同期 これまでの Web になかった機能
  • 17. Service Worker が提供する機能 クライアントWeb サーバー • キャッシュ • リクエストのハンドリング • Push • バックグラウンド同期 これまでの Web になかった機能
  • 18. Service Worker が提供する機能 クライアントWeb サーバー • キャッシュ • リクエストのハンドリング • Push • バックグラウンド同期 これまでの Web になかった機能
  • 19. Service Worker が提供する機能 クライアントWeb サーバー • キャッシュ • リクエストのハンドリング • Push • バックグラウンド同期 これまでの Web になかった機能
  • 20. Service Worker の各 API 実装状況 Service Worker 〇 〇 〇 〇 Cache API 〇 〇 〇 〇 Push API 〇 〇 〇 × Background Sync API △ 〇 × × 17 5966 11.1 開発中
  • 21. Service Worker を使う準備 Service Worker 用の JS ファイルが必要 + sw.js JavaScript JavaScript 配下のアセットを制御
  • 22. Service Worker のライフサイクル Install Activate Idle Error Fetch / Message • ServiceWoker の登録 (Register メソッド) • 静的なアセットのキャッシュ • ダウンロードの失敗 • キャッシュの失敗 • Activate されない • 有効化された際に発生 • インストール直後 • 復帰時 • 待機状態 • 終了(メモリ節約のため)• ネットワークリクエスト またはメッセージに対する処理
  • 23. Step 1 : Service Worker の登録 Web コンテンツ側の JS
  • 24. Step 1 : Service Worker の登録 if ( navigator.serviceWorker ) { } Service Worker がサポートされているか検証 Web コンテンツ側の JS
  • 25. Step 1 : Service Worker の登録 if ( navigator.serviceWorker.controller ) { console.log('There’s an active service worker'); } すでに動作している Service Worker があるか検証することも可能 Web コンテンツ側の JS
  • 26. Step 1 : Service Worker の登録 else { navigator.serviceWorker.register('/sw.js') .then(function(reg) { } Service Worker を登録 Web コンテンツ側の JS
  • 27. Step 1 : Service Worker の登録 .then(function(reg) { console.log('SW registered for scope', reg.scope); }); Promise で結果が返される Web コンテンツ側の JS
  • 28. Step 1 : Service Worker の登録 if ( navigator.serviceWorker ) { navigator.serviceWorker.register('/sw.js'); } Web コンテンツ側の JS Service Worker 登録するだけならシンプルに書ける
  • 29. Step 2 : アセットのキャッシュ Service Worker 側の JS
  • 30. Step 2 : アセットのキャッシュ Self.addEventListener('install', function(event) Service Worker 側の JS Service Worker 登録時に install イベントが発生
  • 31. Step 2 : アセットのキャッシュ event.waitUntil( caches.open('キャッシュの名前') ) Service Worker 側の JS キャッシュを開く
  • 32. Step 2 : アセットのキャッシュ urlsToCache '/', '/index.html', '/css/index.css', '/script/index.js' caches.open('キャッシュの名前') .then(function(cache) { return cache.addAll(urlsToCache); Service Worker 側の JS キャッシュするアセットを登録する
  • 33. Step 3 : 有効化イベント 'キャッシュの名前' Service Worker 側の JS
  • 34. Step 3 : 有効化イベント self.addEventListener('activate', function(e) { 'キャッシュの名前' }); Service Worker 側の JS Service Worker のインストールが完了し有効化
  • 35. Step 3 : 有効化イベント e.waitUntil( caches.keys().then(function(keyList) { 'キャッシュの名前' }) ); Service Worker 側の JS 既存のキャッシュの一覧を取り出す
  • 36. Step 3 : 有効化イベント return Promise.all(keyList.map(function(key) { console.log('ServiceWorker の古いキーを削除しました。', key); if (key !== 'キャッシュの名前') { return caches.delete(key); } Service Worker 側の JS 今回開いたキャッシュと異なる名前のキャッシュを削除
  • 37. キャッシュについて コンテンツのキャッシュをオフラインで使用できるように管理 • App Shell • UI が機能するために必要な最小限のリソース • 要件にあったアセット なにをキャッシュするか? Service Worker の更新 • js ファイルを更新 • キャッシュがクリアされるわけではない • 有効になるのは一度ページを閉じた後
  • 38. Step 4 : リクエストのハンドリング Service Worker 側の JS
  • 39. Step 4 : リクエストのハンドリング self.addEventListener('fetch', function(e) { }) Service Worker 側の JS ネットワークリクエストがされると fetch イベントが発生
  • 40. Step 4 : リクエストのハンドリング caches.match(e.request) Service Worker 側の JS キャッシュからのデータが利用可能か どうかを確認
  • 41. Step 4 : リクエストのハンドリング e.request .then(function(response) { return response || fetch(e.request); } Service Worker 側の JS キャッシュか fetch でネットワークから取得した内容を返す
  • 42. Step 4 : リクエストのハンドリング e.respondWith( ) Service Worker 側の JS ページにレスポンスを返す
  • 43. デモ : Service Worker の実装
  • 44. Web App Manifest サイトのブックマークを端末のホーム画面に保存 <link rel="manifest" href="/manifest.manifest"> (※)Windows では現状 .appxmanifest(XML)形式に変換して使用
  • 45. { "lang": "ja", "short_name": "Spece Enemy", "name": "The Spece Enemy", "icons": [ { "src": "img/launcher-icon-2x.png", "sizes": "96x96", "type": "image/png" }, { "src": "img/launcher-icon-4x.png", "sizes": "512x512", "type": "image/png" } ], "start_url": "/pwa/?utm_source=homescreen", "display": "standalone", "orientation": "portrait", "background_color": "black" } Web Application Manifest の記述
  • 46. { "lang": "ja", "short_name": "Spece Enemy", "name": "The Spece Enemy", "icons": [ { "src": "img/launcher-icon-2x.png", "sizes": "96x96", "type": "image/png" }, { "src": "img/launcher-icon-4x.png", "sizes": "512x512", "type": "image/png" } ], "start_url": "/pwa/?utm_source=homescreen", "display": "standalone", "orientation": "portrait", "background_color": "black" } • name:アプリのフルネーム • short_name:ショートネーム
  • 47. { "lang": "ja", "short_name": "Spece Enemy", "name": "The Spece Enemy", "icons": [ { "src": "img/launcher-icon-2x.png", "sizes": "96x96", "type": "image/png" }, { "src": "img/launcher-icon-4x.png", "sizes": "512x512", "type": "image/png" } ], "start_url": "/pwa/?utm_source=homescreen", "display": "standalone", "orientation": "portrait", "background_color": "black" } • icons : ホーム画面の アイコンや起動画面に使用 されるアイコン
  • 48. { "lang": "ja", "short_name": "Spece Enemy", "name": "The Spece Enemy", "icons": [ { "src": "img/launcher-icon-2x.png", "sizes": "96x96", "type": "image/png" }, { "src": "img/launcher-icon-4x.png", "sizes": "512x512", "type": "image/png" } ], "start_url": "/pwa/?utm_source=homescreen", "display": "standalone", "orientation": "portrait", "background_color": "black" } • display : 優先されるビュー • orientation : 画面の向き • Background_color : 背景色
  • 49. display : 優先されるビューの設定 fullscreen standalone minimal-ui browser 戻るボタンのみ 4 種類の指定が可能 限定された UI (読み取り専用のナビ ゲーションバー) ブラウザーのまま
  • 50. デモ : Web Application Manifest
  • 51. Progressive Web Apps on Windows
  • 52. Microsoft Store からの配布 • 自動インデックス • セルフパブリッシング PWA を Microsoft Store で公開する 2 の方法
  • 53. Bing に自動インデックスされる条件 • HTTPS, セキュアなエンドポイント • 高品質の manifest (names, screen shots, descriptions) • オフラインサポート • ストアの審査をパス • デジタルグッズを販売しないこと • アダルトコンテンツを含まないこと • 不快なコンテンツは不可 • Windows ならではの差別化がされている Microsoft Store で公開するための条件
  • 54. Windows Store むけ PWA の検証 • PWA が Microsoft Store の準備ができていることを 検証 • パフォーマンスとユーザーエクスペリエンスの向上https://sonarwhal.com/
  • 55. Bing に検出されないようにするには • manifest なし、https なし、もしくは オフラインで動作しない • Robot.txt ファイルを設定 • display: browser • アプリを削除するようサービスリクエストを 出す (reportapp@microsoft.com)
  • 56. Microsoft ストアでの公開 • dev.microsoft.com で開発者アカウントを 開設 PWABuilder.com で Appx を生成する reportapp@microsoft.com UWP アプリの提出とおなじ
  • 57. PWA Builder での PWA の開始 https://www.pwabuilder.com/ ホストされている PWA をパッケージング
  • 58. Windows Store App の価値 • デベロッパーセンターの分析 • アプリ内課金 • プロモーションの機会 • データストレージの上限がない • Service Workers • WinRT API へのアクセス Progressive Web Apps をさらに Progressive
  • 59. WinRT API にアクセス可能 //Windows にインストールされているかどうか //セカンダリータイルをピン留めする //有効化される場所
  • 60.
  • 61. Progressive Web Apps の価値を高める API • CSS3 • WebAssembly • WebVR • Web Payments
  • 62. Progressive Web Apps の位置づけ Web と Native の間を埋める
  • 63. Progressive Web Apps の位置づけ Web と Native の間を埋める PWA
  • 64. まとめ = • Service Worker • Web Application Manifest • Other.. Web + Native Apps This is good one!
  • 65. 参考 • Progressive Web Apps on Windows • Sonarwhal • PWA BUILDER • Building Progressive Web Apps for Windows devices : Build 2018 • Cboard: A Progressive Web App for Everyone
  • 66. Ask the Speaker のご案内 ブレイクアウトセッション終了後の休憩時間に、 登壇したスピーカーに直接ご質問いただける コーナーを 「Ask The Speakers」 Room に 用意しております。セッション内容のより深い 理解のため、ぜひお役立てください。 「Ask The Speakers」
  • 68. © 2018 Microsoft Corporation. All rights reserved. 本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。