アプリ起動時間を80%高速化した話 / Talk about 80% faster app startup time.
by
nekowen
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
STORES 株式会社 Ebisu.mobile #8 大忘年会 STORES kubell Kyash asken 2024年 12月 20日 @nekowen アプリ起動時間を80%高速化した話
Slide 2
Slide 2 text
自己紹介 小櫃 遼也 a.k.a nekowen STORES 株式会社 所属 iOSアプリエンジニア ねことポップコーンが好き X: @n3k0w3n 2
Slide 3
Slide 3 text
今日話すこと 3 レジアプリの起動時間を改善したよ!という話をします ※ここでいう起動時間とは「アプリを立ち上げてユーザーが利用可能な状態に なるまでの時間」を指します
Slide 4
Slide 4 text
レジアプリについて 4
Slide 5
Slide 5 text
始まりはCSからのご相談 5
Slide 6
Slide 6 text
まずはヒアリングを行う 6 ・アプリを起動して商品の読み込みが完了するまで数十分かかる ・途中でネットワークが切れてしまい度々リトライが発生している ・通信環境が原因ではなさそう
Slide 7
Slide 7 text
アイテムリストを全件取得し切るまでの流れ 7 アイテムリストを50件取得 数秒待機 次のPage Cursorを取得
Slide 8
Slide 8 text
リクエスト状況の確認 8 秒単位でリクエストに時間がかかっている
Slide 9
Slide 9 text
アイテムクエリの調査 9
Slide 10
Slide 10 text
アイテムクエリの調査 10
Slide 11
Slide 11 text
アイテムクエリの調査 11
Slide 12
Slide 12 text
アイテムクエリの調査 12 取得にかかるコスト = アイテム数xアイテムバリエーションx店舗数
Slide 13
Slide 13 text
検証 13 ・パターンA: 全く変更していないアイテムクエリの実行時間 ・パターンB: 在庫情報をログイン中店舗のみに絞ったときの実行時間
Slide 14
Slide 14 text
結果 14
Slide 15
Slide 15 text
その後… 15 他にも不必要な処理を見直した ・RemoteConfigによる待機時間の制御 ・アイテムリストのループ処理をSwift Concurrencyに置き換えてリファクタ リング
Slide 16
Slide 16 text
その後… 16 CSから起動時間が劇的に早くなったと連絡をもらった ・改善前と改善後の秒数としておよそ80%改善 ・副次的効果としてアイテム取得処理中のクラッシュが改善した
Slide 17
Slide 17 text
まとめ 17 ・GraphQLはクエリの書き方によってパフォーマンスが大きく変わる ・アプリの起動時間はユーザー体験に大きく関わってくる ・計測、大事