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
170
アプリ起動時間を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.9k
5分で理解するAccessorySetupKit / Understanding AccessorySetupKit in 5 minutes
nekowen
0
410
MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit
nekowen
1
1k
SwiftUI/Jetpack Composeを採用してよかったこと悪かったこと
nekowen
2
1.5k
iOS13向けに位置情報周りを対応しようとしたら苦労した話
nekowen
1
500
Other Decks in Technology
See All in Technology
JAWS AI/ML #30 AI コーディング IDE "Kiro" を触ってみよう
inariku
3
380
Amazon Qで2Dゲームを作成してみた
siromi
0
150
Foundation Model × VisionKit で実現するローカル OCR
sansantech
PRO
1
380
2025新卒研修・HTML/CSS #弁護士ドットコム
bengo4com
3
13k
Claude Codeは仕様駆動の夢を見ない
gotalab555
23
6.7k
Lambda management with ecspresso and Terraform
ijin
2
170
Bet "Bet AI" - Accelerating Our AI Journey #BetAIDay
layerx
PRO
4
1.8k
生成AI導入の効果を最大化する データ活用戦略
ham0215
0
160
Claude Codeから我々が学ぶべきこと
oikon48
10
2.8k
LLMで構造化出力の成功率をグンと上げる方法
keisuketakiguchi
0
880
バクラクによるコーポレート業務の自動運転 #BetAIDay
layerx
PRO
1
960
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
6.3k
Featured
See All Featured
The Invisible Side of Design
smashingmag
301
51k
Making Projects Easy
brettharned
117
6.3k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Music & Morning Musume
bryan
46
6.7k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
GitHub's CSS Performance
jonrohan
1031
460k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
GraphQLとの向き合い方2022年版
quramy
49
14k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Bash Introduction
62gerente
614
210k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
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はクエリの書き方によってパフォーマンスが大きく変わる ・アプリの起動時間はユーザー体験に大きく関わってくる ・計測、大事