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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
nekowen
December 20, 2024
Technology
0
190
アプリ起動時間を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
AccessorySetupKitで実現するシームレスなペアリング体験 / Seamless pairing with AccessorySetupKit
nekowen
0
430
健康第一!MetricKitで始めるアプリの健康診断 / App Health Checkups Starting with MetricKit
nekowen
5
6.5k
5分で理解するAccessorySetupKit / Understanding AccessorySetupKit in 5 minutes
nekowen
0
530
MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit
nekowen
1
1.2k
SwiftUI/Jetpack Composeを採用してよかったこと悪かったこと
nekowen
2
1.5k
iOS13向けに位置情報周りを対応しようとしたら苦労した話
nekowen
1
530
Other Decks in Technology
See All in Technology
ランサムウェア対策としてのpnpm導入のススメ
ishikawa_satoru
0
220
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
110
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
130
20260204_Midosuji_Tech
takuyay0ne
1
160
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
490
Red Hat OpenStack Services on OpenShift
tamemiya
0
130
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
760
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
240
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
4
460
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
240
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
330
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
260
Featured
See All Featured
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
58
50k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
52
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
The Curse of the Amulet
leimatthew05
1
8.7k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
68
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
79
Visualization
eitanlees
150
17k
My Coaching Mixtape
mlcsv
0
49
The Spectacular Lies of Maps
axbom
PRO
1
530
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はクエリの書き方によってパフォーマンスが大きく変わる ・アプリの起動時間はユーザー体験に大きく関わってくる ・計測、大事