Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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はクエリの書き方によってパフォーマンスが大きく変わる ・アプリの起動時間はユーザー体験に大きく関わってくる ・計測、大事