SlideShare a Scribd company logo
1 of 35
Download to read offline
2020年9月16日
初めてのPWA開発で学んだこと
PWA Night vol.20
バルテス・モバイルテクノロジー株式会社
バルテス・モバイルテクノロジーの紹介
2
バルテス・モバイルテクノロジー株式会社(略称:VMT)
VALTES MOBILE TECHNOLOGY CO.,LTD.
設立 2012年10月17日
代表取締役 田中 真史
株主 バルテス株式会社(100%)
資本金 5,000万円
拠点 大阪本社、東京本社
業務内容 ソフトウェア開発、セキュリティ診断
コンセプト 高品質でセキュアなアプリケーションの開発・提供
テスト専門会社である親会社と連携し、開発へテスト力を付加し、
「高品質」で「セキュア」をキーワードに、サービス提供を行う。
令和初の上場企業!!
親会社が!!
自己紹介
3
名前 山下大輔(やました だいすけ)
所属 開発部 マネージャー
出身 横浜市青葉区(たまプラーザ)
住まい 宝塚市(兵庫県)
趣味 競馬、陸上
得意分野 3D全般(OpenGL、DirectX、Unity)
SNS
Facebook:@longjumper.daisuke
Instagram:@deepimpact_daisuke
Twitter:@jumper_daisuke
資格 Android技術者Basic、JSTQB FL
4
自己紹介-終わり
実は「マンガでわかるMonacaUG」に出てます。
5
•はじめに
•各フェーズでの出来事
•めちゃ困ったこと
•最後に
アジェンダ
はじめに
6
Monacaでのハイブリッドアプリ開発での経験を基にPWAに
チャレンジしてきました。
本内容は、PWA開発を初めて行ったときの経験談です。
その経験したことを共有させて頂きます。
アプリ名、内容自体の詳細は「大人の事情」でお見せできま
せん。あらかじめご了承願います。
各フェーズでの出来事
7
設計フェーズ
各フェーズでの出来事-設計フェーズ
8
フレームワーク:Vue.js、Nuxt.js
まぁ、初心者の
定番ですね。
IDE:Visual Studio Code
各フェーズでの出来事-設計フェーズ
9
ユーザー認証:Azure
サーバー/データベース:AWS
対象デバイス:iOS/Android
いろんな事情が
ありました
各フェーズでの出来事-設計フェーズ
10
• システム概要
– ザックリいうと、検索システム
• 検索した物の状態を確認
• 検索内容を保存できる
• マップと連携
– ユーザー認証
• Azureの認証機能使ってログイン
– プロジェクト前提事項
• 既存のPC版があり、機能限定としてモバイル版を設計
各フェーズでの出来事-設計フェーズ
11
あれ?
キャッシュは?
各フェーズでの出来事-設計フェーズ
12
キャッシュはしてません!
各フェーズでの出来事-設計フェーズ
13
時代はキャッシュレスなので!!
各フェーズでの出来事-設計フェーズ
14
• 設計フェーズの出来事
– 基本的にWeb、モバイル開発と変わらない。
• ユーザーから見たら今回の要件でPWAだからはほぼなかった。
• 弊社としても特別なフローが入ったわけではない。
–画面設計書作成
–デザイン(Prottでプロトタイプレビュー)
• ハイブリッドアプリ開発同様のフローで行った。
何か起こったわけではない。
平和そのもの。
各フェーズでの出来事-製造フェーズ
15
製造フェーズ
各フェーズでの出来事-製造フェーズ
16
• Safariが大変
– とにかくクセが強い
• レイアウト崩れがおこりやすい
–マイナーバージョンでレイアウトが異なることがある
• Chromeに合わせるのではなく、Safari優先
• データの持ち方が大変
–リソースの持ち方など、考える必要がある
とにかくSafari
各フェーズでの出来事-テストフェーズ
17
テストフェーズ
各フェーズでの出来事-テストフェーズ
18
弊社のスローガン
PDCA
各フェーズでの出来事-テストフェーズ
19
PDCAとは?
Plan、Do、Check、Action
違います。
各フェーズでの出来事-テストフェーズ
20
P
D
C
A
ピンチになっても
どうにかなるさと
ちゃんとやったら
明るい未来が待っている
各フェーズでの出来事-テストフェーズ
21
弊社のスローガン
品質について
考え続ける集団
各フェーズでの出来事-テストフェーズ
22
• バルテスメソッドで品質向上
– 体系的なアプローチ
• テスト計画、設計、実施、分析を実施
–テストの抜け漏れを防ぐ
• 品質管理チームが基本設計から参画
–異常系や競合ケースでの考慮漏れに特化してレビュー
https://www.valtes.co.jp/software_test/method.html
QRコード:バルテスメソッド
各フェーズでの出来事-テストフェーズ
23
• テストで意識したこと
– ハイブリッドアプリと変わらない
• PWAといっても、テスト自体変わらなかった
–Monaca開発でモバイルになれていた
–こんなものかと思って、気にせずにテストを進めていた
– ホーム画面追加の挙動には注意
• ホーム画面系のテストは面倒くさかった
• マニフェストファイルを更新すると、データを消さないと更新されない
めちゃ困ったこと
24
サーバーとの連携
めちゃ困ったこと
25
• Azureとの連携でハマった
– 問題はログインできない
• サーバー環境が整う迄、別画面を作っていた
• いざ連携したがうまくいかない
• そこから先に進めない。困った。。。
– ログインはシングルサインオンを採用
• 問題はクロスドメインが発生
• ログイン認証はできたが、その結果がクライアントに帰ってこなかった。
めちゃ困ったこと
26
PWAアプリ
クライアント
Azure
SSO
サーバー
ログイン(トークン情報)
ユーザー認証
GateWay
クロスドメイン発生
クライアントに戻ってこなかった。。。
セッション情報
めちゃ困ったこと
27
• クロスドメインが発生した原因
– サーバーがシングルサインオンに向いていない
• シングルサインオンとはトークン情報でユーザー認証すること
• 元も子もないが、Webサーバーが古い仕組みだった。
• ドメインのセッション情報(URL)しか返ってこなかった。
• GateWayが邪魔してた。。
• PWAと他アプリやブラウザはドメインのセッション情報が共有できない
向いてないことを一生懸命
一週間ほど悩みました。
めちゃ困ったこと
28
• 悩んだ末解決
– クライアント側のenvファイルを編集
• リダイレクト設定を変更
–サーバーが返すURLを、クライアントと同じドメインのURLにする
ようやく解決!
めちゃ困ったこと
29
外部アプリとの連携
めちゃ困ったこと
30
• 外部アプリ連携でハマった
– うまく外部アプリを起動できない
• URLスキームでシンプルにできるだろうと思った
• 某チャットアプリを起動しようとしたが、うまくいかない
– HTTPSで指定
• PCのWebアプリだったら、うまくいったがPWAはうまくいかない
• 別のアプリだと、HTTPSでもうまくいった
–タグ指定でもうまくいった
• PWAだけうまくいかない。。。。謎。
めちゃ困ったこと
31
• URI指定方法が異なったことが原因
– アプリによっては指定方法を変えないといけない
• うまくいったアプリ
– HTTPSの指定でうまくいった
– タグしていてもうまくいった
• うまくいかなかったアプリ
– JavaScriptで呼び出した
– URLをコンポーネントを呼び出したらうまくいった
– 結論から言えば、呼び出したいアプリがHTTPSのに対応してなかっただけ
これも1週間ほど悩んで解決
実装例はこちら
めちゃ困ったこと
32
<template>
<div>
<img :src="img.LINE" @click="line()" />
<img :src="img.LINEWORK" @click="lineworks()" />
</div>
</template>
<script>
import { CommonConstants } from '~/constants/common.js'
export default {
props: ['copyText'],
computed: {
LINEURL() {
return CommonConstants.LineUrlSchema + encodeURIComponent(this.copyText)
},
LINEWORKSURL() {
return (
CommonConstants.LineWorksUrlSchema + encodeURIComponent(this.copyText)
)
}
}
}
</script>
components/xxxxx.vue
めちゃ困ったこと
33
export const CommonConstants = {
// LineURLスキーム
LineUrlSchema: 'https://line.me/R/msg/text/?',
// LineWorksURLスキーム
LineWorksUrlSchema: 'lineworks://message/send?version=11&message=',
}
constants/common.js
見えへんって。
小っちゃくてごめんなさい。
34
最後に
【最後に】
- Safariはクセが強い
- PWAのデザイン(レイアウト)は(弊社では)iOSに寄せる
- Monacaと同じと思っちゃダメ
- PWAはあくまでWebでサーバー上で動作(MonacaはOS上)
- サーバー構成を把握する必要があった
- Monacaでの開発経験を活かせたが、逆にそれもアダになった。
PWAはiOSが面倒くさい。
ご清聴ありがとうございました。
35

More Related Content

Similar to Pwa night vol.20~初めてのPWA開発で学んだ事~

フィードテイラー紹介(2014.11.15版)
フィードテイラー紹介(2014.11.15版)フィードテイラー紹介(2014.11.15版)
フィードテイラー紹介(2014.11.15版)feedtailor
 
Feedtailor portfolio 20141115
Feedtailor portfolio 20141115Feedtailor portfolio 20141115
Feedtailor portfolio 20141115feedtailor
 
Dec cafe 20201105_vfin
Dec cafe 20201105_vfinDec cafe 20201105_vfin
Dec cafe 20201105_vfinDaichi Fujii
 
20180215 devsumi-base
20180215 devsumi-base20180215 devsumi-base
20180215 devsumi-base真一 藤川
 
DVP決済実現に向けた挑戦 | 世取山 進二(株式会社NTTデータ 金融事業推進部 デジタル戦略推進部 部長)
DVP決済実現に向けた挑戦 | 世取山 進二(株式会社NTTデータ 金融事業推進部 デジタル戦略推進部 部長)DVP決済実現に向けた挑戦 | 世取山 進二(株式会社NTTデータ 金融事業推進部 デジタル戦略推進部 部長)
DVP決済実現に向けた挑戦 | 世取山 進二(株式会社NTTデータ 金融事業推進部 デジタル戦略推進部 部長)blockchainexe
 
Watsonと一緒 VR編
Watsonと一緒 VR編Watsonと一緒 VR編
Watsonと一緒 VR編Miho Ezawa
 
Joug(Oktaユーザーグループ)登壇資料
Joug(Oktaユーザーグループ)登壇資料Joug(Oktaユーザーグループ)登壇資料
Joug(Oktaユーザーグループ)登壇資料ssuserdf544a
 
Red Hat on Azure が選ばれる理由
Red Hat on Azure が選ばれる理由Red Hat on Azure が選ばれる理由
Red Hat on Azure が選ばれる理由MPN Japan
 
Inventit recruiting paper 202009
Inventit recruiting paper 202009Inventit recruiting paper 202009
Inventit recruiting paper 202009ssuserb1a46f
 
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践Amazon Web Services Japan
 
CloudGate UNOで安全便利なパスワードレスリモートワーク
CloudGate UNOで安全便利なパスワードレスリモートワークCloudGate UNOで安全便利なパスワードレスリモートワーク
CloudGate UNOで安全便利なパスワードレスリモートワークFIDO Alliance
 
HMS事業紹介2021
HMS事業紹介2021HMS事業紹介2021
HMS事業紹介2021JamesHU52
 
数々の実績:迅速なFIDO認証の展開をサポート
数々の実績:迅速なFIDO認証の展開をサポート数々の実績:迅速なFIDO認証の展開をサポート
数々の実績:迅速なFIDO認証の展開をサポートFIDO Alliance
 
reinvent2019_standby_kitahara_20191029
reinvent2019_standby_kitahara_20191029reinvent2019_standby_kitahara_20191029
reinvent2019_standby_kitahara_20191029Masato Kitahara
 
スマートデバイスを意識したECサイト構築 等
スマートデバイスを意識したECサイト構築 等スマートデバイスを意識したECサイト構築 等
スマートデバイスを意識したECサイト構築 等Kamo Souichi
 
IoT 導入を簡単に実現する“つなぐ”技術 ​~デンソーウェーブの IoT製品と Microsoft Azure 連携~
IoT 導入を簡単に実現する“つなぐ”技術 ​~デンソーウェーブの IoT製品と Microsoft Azure 連携~IoT 導入を簡単に実現する“つなぐ”技術 ​~デンソーウェーブの IoT製品と Microsoft Azure 連携~
IoT 導入を簡単に実現する“つなぐ”技術 ​~デンソーウェーブの IoT製品と Microsoft Azure 連携~IoTビジネス共創ラボ
 
たかがAPI,されどAPI、シナジーで広がるビジネスチャンス
たかがAPI,されどAPI、シナジーで広がるビジネスチャンスたかがAPI,されどAPI、シナジーで広がるビジネスチャンス
たかがAPI,されどAPI、シナジーで広がるビジネスチャンスOsaka University
 
G's Academy メンター資料 / 20180216
G's Academy メンター資料 / 20180216G's Academy メンター資料 / 20180216
G's Academy メンター資料 / 20180216真一 藤川
 
Enterpriseでもモバイル開発
Enterpriseでもモバイル開発Enterpriseでもモバイル開発
Enterpriseでもモバイル開発Mitch Okamoto
 

Similar to Pwa night vol.20~初めてのPWA開発で学んだ事~ (20)

Jaws days 2021
Jaws days 2021Jaws days 2021
Jaws days 2021
 
フィードテイラー紹介(2014.11.15版)
フィードテイラー紹介(2014.11.15版)フィードテイラー紹介(2014.11.15版)
フィードテイラー紹介(2014.11.15版)
 
Feedtailor portfolio 20141115
Feedtailor portfolio 20141115Feedtailor portfolio 20141115
Feedtailor portfolio 20141115
 
Dec cafe 20201105_vfin
Dec cafe 20201105_vfinDec cafe 20201105_vfin
Dec cafe 20201105_vfin
 
20180215 devsumi-base
20180215 devsumi-base20180215 devsumi-base
20180215 devsumi-base
 
DVP決済実現に向けた挑戦 | 世取山 進二(株式会社NTTデータ 金融事業推進部 デジタル戦略推進部 部長)
DVP決済実現に向けた挑戦 | 世取山 進二(株式会社NTTデータ 金融事業推進部 デジタル戦略推進部 部長)DVP決済実現に向けた挑戦 | 世取山 進二(株式会社NTTデータ 金融事業推進部 デジタル戦略推進部 部長)
DVP決済実現に向けた挑戦 | 世取山 進二(株式会社NTTデータ 金融事業推進部 デジタル戦略推進部 部長)
 
Watsonと一緒 VR編
Watsonと一緒 VR編Watsonと一緒 VR編
Watsonと一緒 VR編
 
Joug(Oktaユーザーグループ)登壇資料
Joug(Oktaユーザーグループ)登壇資料Joug(Oktaユーザーグループ)登壇資料
Joug(Oktaユーザーグループ)登壇資料
 
Red Hat on Azure が選ばれる理由
Red Hat on Azure が選ばれる理由Red Hat on Azure が選ばれる理由
Red Hat on Azure が選ばれる理由
 
Inventit recruiting paper 202009
Inventit recruiting paper 202009Inventit recruiting paper 202009
Inventit recruiting paper 202009
 
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践
 
CloudGate UNOで安全便利なパスワードレスリモートワーク
CloudGate UNOで安全便利なパスワードレスリモートワークCloudGate UNOで安全便利なパスワードレスリモートワーク
CloudGate UNOで安全便利なパスワードレスリモートワーク
 
HMS事業紹介2021
HMS事業紹介2021HMS事業紹介2021
HMS事業紹介2021
 
数々の実績:迅速なFIDO認証の展開をサポート
数々の実績:迅速なFIDO認証の展開をサポート数々の実績:迅速なFIDO認証の展開をサポート
数々の実績:迅速なFIDO認証の展開をサポート
 
reinvent2019_standby_kitahara_20191029
reinvent2019_standby_kitahara_20191029reinvent2019_standby_kitahara_20191029
reinvent2019_standby_kitahara_20191029
 
スマートデバイスを意識したECサイト構築 等
スマートデバイスを意識したECサイト構築 等スマートデバイスを意識したECサイト構築 等
スマートデバイスを意識したECサイト構築 等
 
IoT 導入を簡単に実現する“つなぐ”技術 ​~デンソーウェーブの IoT製品と Microsoft Azure 連携~
IoT 導入を簡単に実現する“つなぐ”技術 ​~デンソーウェーブの IoT製品と Microsoft Azure 連携~IoT 導入を簡単に実現する“つなぐ”技術 ​~デンソーウェーブの IoT製品と Microsoft Azure 連携~
IoT 導入を簡単に実現する“つなぐ”技術 ​~デンソーウェーブの IoT製品と Microsoft Azure 連携~
 
たかがAPI,されどAPI、シナジーで広がるビジネスチャンス
たかがAPI,されどAPI、シナジーで広がるビジネスチャンスたかがAPI,されどAPI、シナジーで広がるビジネスチャンス
たかがAPI,されどAPI、シナジーで広がるビジネスチャンス
 
G's Academy メンター資料 / 20180216
G's Academy メンター資料 / 20180216G's Academy メンター資料 / 20180216
G's Academy メンター資料 / 20180216
 
Enterpriseでもモバイル開発
Enterpriseでもモバイル開発Enterpriseでもモバイル開発
Enterpriseでもモバイル開発
 

Pwa night vol.20~初めてのPWA開発で学んだ事~