Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PWAサービスワーカーとIndexedDBによるオフライン動作可能Webなアプリを作った話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Atotti
December 04, 2023
Programming
600
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
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
170
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
260
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
220
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
610
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
110
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
100
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
110
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
120
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
180
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
150
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.4k
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
230
Featured
See All Featured
The Language of Interfaces
destraynor
162
27k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
390
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
KATA
mclloyd
PRO
35
15k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
A designer walks into a library…
pauljervisheath
211
24k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
A Soul's Torment
seathinner
6
3.1k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
270
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
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