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
アプリ起動時間を80%高速化した話 / Talk about 80% faster app s...
Search
nekowen
December 20, 2024
Technology
0
140
アプリ起動時間を80%高速化した話 / Talk about 80% faster app startup time.
Ebisu.mobile #8 大忘年会 STORES kubell Kyash asken での発表資料です
https://hey.connpass.com/event/335971/
nekowen
December 20, 2024
Tweet
Share
More Decks by nekowen
See All by nekowen
健康第一!MetricKitで始めるアプリの健康診断 / App Health Checkups Starting with MetricKit
nekowen
5
5.3k
5分で理解するAccessorySetupKit / Understanding AccessorySetupKit in 5 minutes
nekowen
0
320
MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit
nekowen
1
870
SwiftUI/Jetpack Composeを採用してよかったこと悪かったこと
nekowen
2
1.4k
iOS13向けに位置情報周りを対応しようとしたら苦労した話
nekowen
1
470
Other Decks in Technology
See All in Technology
小さく始めるDevOps 内製化支援から見えたDevOpsの始め方 / 20250317 Ken Takayanagi
shift_evolve
1
100
AWS CDK コントリビュート はじめの一歩
yendoooo
1
120
SaaSプロダクト開発におけるバグの早期検出のためのAcceptance testの取り組み
kworkdev
PRO
0
460
Redefine_Possible
upsider_tech
0
280
Javaの新しめの機能を知ったかぶれるようになる話 #kanjava
irof
3
4.9k
大規模アジャイル開発のリアル!コミュニケーション×進捗管理×高品質
findy_eventslides
0
560
大規模サービスにおける カスケード障害
takumiogawa
2
260
Proxmox VE超入門 〜 無料で作れるご自宅仮想化プラットフォームブックマークする
devops_vtj
0
160
30代エンジニアが考える、エンジニア生存戦略~~セキュリティを添えて~~
masakiokuda
4
2k
Medmain FACTBOOK
akinaootani
0
110
Symfony in 2025: Scaling to 0
fabpot
2
200
Restarting_SRE_Road_to_SRENext_.pdf
_awache
0
170
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
52
11k
Designing for humans not robots
tammielis
251
25k
Unsuck your backbone
ammeep
670
57k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.5k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.3k
Producing Creativity
orderedlist
PRO
344
40k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
The Cost Of JavaScript in 2023
addyosmani
48
7.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Transcript
STORES 株式会社 Ebisu.mobile #8 大忘年会 STORES kubell Kyash asken 2024年
12月 20日 @nekowen アプリ起動時間を80%高速化した話
自己紹介 小櫃 遼也 a.k.a nekowen STORES 株式会社 所属 iOSアプリエンジニア ねことポップコーンが好き
X: @n3k0w3n 2
今日話すこと 3 レジアプリの起動時間を改善したよ!という話をします ※ここでいう起動時間とは「アプリを立ち上げてユーザーが利用可能な状態に なるまでの時間」を指します
レジアプリについて 4
始まりはCSからのご相談 5
まずはヒアリングを行う 6 ・アプリを起動して商品の読み込みが完了するまで数十分かかる ・途中でネットワークが切れてしまい度々リトライが発生している ・通信環境が原因ではなさそう
アイテムリストを全件取得し切るまでの流れ 7 アイテムリストを50件取得 数秒待機 次のPage Cursorを取得
リクエスト状況の確認 8 秒単位でリクエストに時間がかかっている
アイテムクエリの調査 9
アイテムクエリの調査 10
アイテムクエリの調査 11
アイテムクエリの調査 12 取得にかかるコスト = アイテム数xアイテムバリエーションx店舗数
検証 13 ・パターンA: 全く変更していないアイテムクエリの実行時間 ・パターンB: 在庫情報をログイン中店舗のみに絞ったときの実行時間
結果 14
その後… 15 他にも不必要な処理を見直した ・RemoteConfigによる待機時間の制御 ・アイテムリストのループ処理をSwift Concurrencyに置き換えてリファクタ リング
その後… 16 CSから起動時間が劇的に早くなったと連絡をもらった ・改善前と改善後の秒数としておよそ80%改善 ・副次的効果としてアイテム取得処理中のクラッシュが改善した
まとめ 17 ・GraphQLはクエリの書き方によってパフォーマンスが大きく変わる ・アプリの起動時間はユーザー体験に大きく関わってくる ・計測、大事