Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Webアプリのようにモバイルアプリを作りたい / Overview of Cordova & PWA

radiocat
August 20, 2018

Webアプリのようにモバイルアプリを作りたい / Overview of Cordova & PWA

2018.8.20 Mobile Act OSAKA #6

radiocat

August 20, 2018
Tweet

More Decks by radiocat

Other Decks in Technology

Transcript

  1. おしごと 現職:株式会社 ラクス 所属:楽楽精算 開発チーム リーダー/スクラムマスター About me radiocat Twitter

    : @radiocatz Android派/Vim派/野球派/ KIRINビール派 HTC DesireからAndroidユーザー Blog : http://radiocat.hatenablog.com/ Qiita : https://qiita.com/radiocat GitHub : https://github.com/radiocat TVCM放映中! https://youtu.be/8J-ZTQVKWMw
  2. モバイルアプリ • iOSアプリ • 領収書をカメラで撮影すると OCRで日付や 金額を自動入力して登録する • 経費精算に使う https://itunes.apple.com/jp/app/%E6%A5%BD

    %E6%A5%BD%E7%B2%BE%E7%AE%97/id 1352852886 https://play.google.com/store/apps/details?id=jp.c o.rakus.sazabi.nativeapp.ic&hl=ja • Androidアプリ • 交通系ICカードの乗車履歴を NFCで読み取 る • 交通費精算に使う
  3. Progressive Web Apps(PWA)とは • モバイルのUX向上を目的とした仕組み ◦ インストール不要 ◦ オフラインで動作 ◦

    プッシュ通知に対応 ◦ ネイティブアプリのような UI • 主な技術要素 ◦ WebManifest ◦ Service Workers ◦ PushNotification ※技術的にはモバイルに限定したものではない
  4. アプリの構成例 ├── favicon.ico ├── (省略) ├── images ├── index.html ├──

    js │ ├── main.js (Service Workerをインストールしているプログラム) │ └── offlinepage.js ├── manifest.json  (Web App Manifestファイル) ├── offline │ └── index.html └── service-worker.js (Service Workerファイル)
  5. Web App Manifest • アプリの情報を記述 ◦ ホーム画面に追加するアイコンの情報など ◦ マニフェストファイルの仕様 (

    https://developer.mozilla.org/ja/docs/Web/Manifest ) • htmlの<head>にリンクを追加する <link rel="manifest" href="/manifest.json">
  6. Service Worker • PWAの動作を担うJS • インストールされてバックグラウンドで動作 ◦ オフライン動作や通知が可能 // enable

    service worker if ('serviceWorker' in navigator) { // register service worker navigator.serviceWorker.register('/service-worker.js'); // 省略 } ※main.jsでServiceWorkerをインストールする実装例
  7. オフライン動作 1. Service Worker登録後、リソースを 要求 2. Service Workerがリクエストを乗っ 取る 3.

    カスタムしたレスポンスを返す https://developer.mozilla.org/ja/docs/Web/API/ServiceWorker_API/Using_Service_Workers
  8. JSフレームワークでのPWAサポート • React ◦ React PWA:PWA化されたテンプレート ▪ https://www.reactpwa.com/ • Vue

    ◦ vue-pwa-boilerplate:Google I/O 2017で公開されたPWAのテンプレート ▪ https://github.com/vuejs-templates/pwa ◦ @nuxtjs/pwa:Nuxt.js(Vue.jsのユニバーサルフレームワーク)の PWAモジュール ▪ https://www.npmjs.com/package/@nuxtjs/pwa • Angular ◦ @angular/pwa:Angular 6から追加されたPWAモジュール ▪ https://www.npmjs.com/package/@angular/pwa
  9. Chrome DevTools PWAとしてのデバッグに対応 参照:Service Worker のデバッグ | Web | Google

    Developers https://developers.google.com/web/fundamentals/codelabs/debugging-service-workers/?hl=ja
  10. Webアプリのようにモバイルアプリを作りたい人の選択肢 • Cordova ◦ モバイルアプリもHTML5/CSS/JSで作りたい人 ◦ WebのUI/UXを活かしつつモバイルアプリをリリースしたい人 ◦ ネイティブアプリの知識がある人 •

    PWA ◦ アプリとしてリリースしなくてもいい人 ◦ 一部のネイティブの機能が使えなくてもいい人 • PWA+Cordova ◦ Web技術のトレンドの変化に追従できる JavaScriptカウボーイな人 ◦ Webとモバイルの両方の技術を駆使して自分でなんとかできる人