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
150
アプリ起動時間を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.5k
5分で理解するAccessorySetupKit / Understanding AccessorySetupKit in 5 minutes
nekowen
0
350
MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit
nekowen
1
930
SwiftUI/Jetpack Composeを採用してよかったこと悪かったこと
nekowen
2
1.4k
iOS13向けに位置情報周りを対応しようとしたら苦労した話
nekowen
1
470
Other Decks in Technology
See All in Technology
Cursorをチョッパヤインタビューライターにチューニングする方法 / how to tuning cursor for interview write
shuzon
1
100
AIによるコードレビューで開発体験を向上させよう!
moongift
PRO
0
420
さくらのクラウド開発の裏側
metakoma
PRO
0
440
TanStack Start 技術選定の裏側 / Findy-Lunch-LT-TanStack-Start
iktakahiro
0
110
Next.jsと状態管理のプラクティス
uhyo
3
1.2k
DynamoDB のデータを QuickSight で可視化する際につまづいたこと/stumbling-blocks-when-visualising-dynamodb-with-quicksight
emiki
0
140
時間がないなら、つくればいい 〜数十人規模のチームが自律性を発揮するために試しているいくつかのこと〜
kakehashi
PRO
22
5.2k
AIとSREで「今」できること
honmarkhunt
3
720
Serverlessだからこそコードと設計にはこだわろう
kenichirokimura
2
940
大規模サーバーレスプロジェクトのリアルな零れ話
maimyyym
3
210
Previewでもここまで追える! Azure AI Foundryで始めるLLMトレース
tomodo_ysys
2
630
Coding Agentに値札を付けろ
watany
3
410
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
42
7.5k
The Pragmatic Product Professional
lauravandoore
33
6.6k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.7k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.6k
The Language of Interfaces
destraynor
158
25k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Into the Great Unknown - MozCon
thekraken
38
1.8k
We Have a Design System, Now What?
morganepeng
52
7.6k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
700
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Practical Orchestrator
shlominoach
187
11k
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はクエリの書き方によってパフォーマンスが大きく変わる ・アプリの起動時間はユーザー体験に大きく関わってくる ・計測、大事