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サービスワーカーとIndexedDBによるオフライン動作可能Webなアプリを作った話
Search
Atotti
December 04, 2023
Programming
630
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PWAサービスワーカーとIndexedDBによるオフライン動作可能Webなアプリを作った話
PWA Builderについても少しだけ試してみた
Atotti
December 04, 2023
More Decks by Atotti
See All by Atotti
2023マンスリーハッカソンvol.10 knowFill
atotti
0
110
Other Decks in Programming
See All in Programming
Rでドレミ/Do-Re-Mi_with_R
florets1
0
110
wkhtmltopdfの次どうするか問題2026
willnet
2
1.8k
APNsからLive Activityを開始する話
yumnumm
0
150
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
330
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
470
Security issues being discussed on Web Platforms
petamoriken
0
1.4k
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
6.1k
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
440
Agents on Rails - Rails at Scale 2026
irinanazarova
0
320
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
110
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
860
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
310
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
97
6.8k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Building Applications with DynamoDB
mza
96
7.2k
A Soul's Torment
seathinner
8
3.7k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
430
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
380
Being A Developer After 40
akosma
91
590k
RailsConf 2023
tenderlove
30
1.6k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
550
Thoughts on Productivity
jonyablonski
76
5.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Transcript
Web技術のみで スマホアプリを作る話 東京都立大学システムデザイン学部 情報科学科2年 あゆ 𝕏 @aya172957 mail
[email protected]
自己紹介 名前:あゆ 戸籍ネーム:堤 歩斗 所属:TMU::SD::CS::B2 好きな言語:Python 好きなデータベース:SQLite AtCodee:茶~緑 つくったもの:石池、Qualtet、kibaco拡張機能、等
Web技術でスマホアプリが作れるの? • はい • 一般にスマホアプリを作るにはiOS向けならSwift、Android向けならkotlin等での開 発が必要 • クロスプラットフォーム対応技術である React Native
や Flutter も使いません • PWAという技術を使います
Progressive Web Appsを知っていますか?私は知ってい ます。 • PWA(Progressive Web Apps) ◦ サイト上で「アプリをインストールしますか?」と聞かれるアレ
• 通常のWebアプリとの違い ◦ インストールが可能 ◦ オフライン動作をサポート ◦ プッシュ通知が使える(今回は省略) • ネイティブアプリとの違い ◦ インストールしなくても利用できる ▪ (ブラウザから利用できる) ◦ 更新が容易 ▪ ストアの審査が不要 ◦ 完全クロスプラットフォーム対応
PWAの作り方 1. まずWebアプリを用意します 2. マニフェストを準備します 3. サービスワーカーを加えます 4. 完成
インストール可能を実現するWeb App Manifest Webアプリケーションをデバイスのホーム画面 に登録できるようにする技術 JSON形式でWebアプリケーションの情報を記 述したファイルを用意し、それをHTMLのhead 要素内に入れてあげるだけで、インストール可 能になる backgournd_color
背景色 display Webアプリの表示方 法 icons アイコン画像 name アプリ名 short_name 短いアプリ名 theme_color テーマカラー start_url 最初に表示される URL
オフライン動作を実現する Service Workers バックグラウンドでネットワークプロキシ処理を実 行する Service Workers はWebブラウザとWebサーバー の間に割り込み(右図)、プロキシのように動作する JavaScriptプログラムを実現する。
オフライン時にWebサーバーにアクセスせずにブ ラウザ内に保存されたリソースを Webアプリケー ションに返す処理を書けば良い。 https://knowledge.sakura.ad.jp/23201/#WebAndroidWeb_App_Manifest
完成したものがこちらです インストール方法 Android : [インストール] iOS : [共有] → [ホーム画面
に追加] https://timetable.ayutaso.com
技術スタック https://api.ayutaso.com/docs api/{day}/{period} 静的ホスティングServer バックエンドAPI 曜日・時限を指定して 授業情報をGET ユーザーの時間割情報 (ローカルストレージ) 新規登録時
閲覧時
IndexedDB ユーザーの登録した授業の情報はサーバー には保存していない ブラウザのローカルストレージに保存してい る IndexedDBはユーザーのブラウザ内にデー タを永続的に保存できる。 autoIncrementやトランザクション、簡単なク エリも実行出来て便利。
Service Workerが作るキャッシュ Service Worker内の実装でファイルをキャッシュ出来る。 今回は全部キャッシュした。
でもこれ、アプリじゃなくね? • アプリにもできます! ◦ PWA Builderというツールを使います(pwabuilder.com) • PWA製ウェブアプリをGoogle PlayやApp Storeなでへアップロード可能な形式へ変
換してくれる(すごい) • 中身はウェブビューなので、ネイティブアプリとは当然違う
PWA Builderを試す URLを入力するだけで、Windows、Android、 iOS、Meta Quest(!?)向けのアプリに変換できるみ たい ですが…
アプリをストアに出すのはめんどくさい • AppleのApp Storeでアプリを公開するには、年間99ドルの費用がかかります。 • iOS向けアプリをビルドするにはXCodeが必要です。これはMacでしか使えません。 • Google Playでは、一度のみ25ドルの登録料が必要です。 ちなみにChrome
Webストアは一度のみ5ドルです。(安い)
PWAで良くね? この程度のアプリケーションであれば、スマートフォン向けのアプリケーションとして提供し たい場合でも、PWAを活用することで開発者としては手軽に そしてより良いユーザー体験を提供出来るはずです。 PWAはいいぞ。
開発で困ったこと Offline動作のテストが難しい ただのキャッシュで上手くいってないのに上手く 言ってるように見える場合がある • 開発者ツールに便利な機能があった ServiceWorkerのInstallは上手くいってるけど実 はfetchでまだエラー吐いたりしてる
リポジトリとか フロント(React) https://github.com/Atotti/pwa-timetable-app バックエンドAPI(FastAPI) https://github.com/Atotti/pwa-timetable-app アプリケーション https://timetable.ayutaso.com Swagger https://api.ayutaso.com/docs