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
Atotti
December 04, 2023
Programming
580
0
Share
PWAサービスワーカーとIndexedDBによるオフライン動作可能Webなアプリを作った話
PWA Builderについても少しだけ試してみた
Atotti
December 04, 2023
More Decks by Atotti
See All by Atotti
2023マンスリーハッカソンvol.10 knowFill
atotti
0
98
Other Decks in Programming
See All in Programming
KagglerがMixSeekを触ってみた
morim
0
370
それはエンジニアリングの糧である:AI開発のためにAIのOSSを開発する現場より / It serves as fuel for engineering: insights from the field of developing open-source AI for AI development.
nrslib
1
830
LM Linkで(非力な!)ノートPCでローカルLLM
seosoft
0
450
3分でわかるatama plusのQA/about atama plus QA
atamaplus
0
130
CursorとClaudeCodeとCodexとOpenCodeを実際に比較してみた
terisuke
1
340
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
330
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
630
iOS機能開発のAI環境と起きた変化
ryunakayama
0
170
Reactive ❤️ Loom: A Forbidden Love Story
franz1981
2
230
Feature Toggle は捨てやすく使おう
gennei
0
510
의존성 주입과 모듈화
fornewid
0
120
「速くなった気がする」をデータで疑う
senleaf24
0
150
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
130
Marketing to machines
jonoalderson
1
5.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
350
Ruling the World: When Life Gets Gamed
codingconduct
0
190
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
220
Google's AI Overviews - The New Search
badams
0
960
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1k
The Curious Case for Waylosing
cassininazir
0
290
Testing 201, or: Great Expectations
jmmastey
46
8.1k
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