Slide 1

Slide 1 text

気づいて!アプリからのSOS 〜App Store Connect APIで始めるパフォーマンス健康診断〜 Rikkuma 2025年9月20日

Slide 2

Slide 2 text

プロフィール Rikkuma @Rikkuma_W 株式会社kubell (旧 Chatwork株式会社) マイブーム: 四股踏み

Slide 3

Slide 3 text

みなさんは 健康診断受けてますか?

Slide 4

Slide 4 text

健康診断は体の問題の 早期発見のため 問題を見つけて、早めに対処する

Slide 5

Slide 5 text

実はアプリでも健康診断は 行われている!

Slide 6

Slide 6 text

Xcode Organizerで確認 📊 確認方法 Xcode → Window → Organizer コードに手を加えずとも、アプリのパフォー マンス状況が見える!

Slide 7

Slide 7 text

Organizerで使用されるデータについて 解析共有設定をONにし ているユーザーが、 アプリを使用した際の データが収集される

Slide 8

Slide 8 text

Organizer - Metrics

Slide 9

Slide 9 text

Organizer - Reports

Slide 10

Slide 10 text

Organizer - Insights

Slide 11

Slide 11 text

Insightsとは? アプリからの「助けて!」というSOS 📊 リリース後に起きた不調をキャッチ

Slide 12

Slide 12 text

でも... 毎回手動で見に行くの、 大変…

Slide 13

Slide 13 text

気づかれないまま…放置される

Slide 14

Slide 14 text

なんか最近この アプリ固まるな... スクロール カクカクだ バッテリー消費やば... ユーザーさんの不満が溜まる

Slide 15

Slide 15 text

最終的には…削除されてしまう このアプリ重いからもういいわ

Slide 16

Slide 16 text

自動監視体制を作ろう GitHubActions × perfPowerMetrics

Slide 17

Slide 17 text

perfPowerMetrics ✅ App Store Connect APIの一つ ✅ 最新バージョンのパフォーマンスの値を取 得

Slide 18

Slide 18 text

{ "version": "1.0.0", // アプリバージョン "insights": { "regressions": [], // パフォーマンス悪化を検知 "trendingUp": [] // 悪化傾向を検知 }, "productData": [] // 詳細なメトリクスデータ } Response

Slide 19

Slide 19 text

{ "version": "1.0.0", // アプリバージョン "insights": { "regressions": [], // パフォーマンス悪化を検知 "trendingUp": [] // 悪化傾向を検知 }, "productData": [] // 詳細なメトリクスデータ } Response

Slide 20

Slide 20 text

"insights": { "regressions": [ { "metricCategory": "BATTERY", "latestVersion": "8.14.0", "metric": "onScreen", "summaryString": "Top (90th percentile) ScreenOn ...", "referenceVersions": [ "8.10.0", "8.11.0", "8.12.0", "8.13.0" ], "maxLatestVersionValue": 0.48, "subSystemLabel": "Networking", "populations": [ { "deltaPercentage": 55, "percentile": "percentile.ninety", "summaryString": "Increased 55% across iPhone (All)", "referenceAverageValue": 0.31, "latestVersionValue": 0.48, "device": "all_iphones" } ] }, … ], "trendingUp": [] }

Slide 21

Slide 21 text

name: Performance Check on: schedule: - 毎日10時 jobs: check: steps: - perfPowerMetrics APIを実行 - insightsの中身(悪化)を検知 - チャットへ通知 (自動でIssue作成) GitHub Actionsで自動化

Slide 22

Slide 22 text

実際の通知サンプル ⚠ダミーデータを使用

Slide 23

Slide 23 text

検知したら 💬 通知受信 📊 Organizer 確認 🛠 修正

Slide 24

Slide 24 text

検知 修正 確認 リリース 健康診断ループを回す

Slide 25

Slide 25 text

皆さんのアプリは健康に 人もアプリも、“気づいてもらえる仕組み”があるだけで救われます

Slide 26

Slide 26 text

まとめ 🎯 Organizerでパフォーマンス問題を特定 🎯 perfPowerMetricsで最新バージョンの  パフォーマンスの値を取得 🎯 GitHub Actionsで気づける体制の自動化 @Rikkuma_W

Slide 27

Slide 27 text

参考情報 ● XcodeOrganizerについて ● https://developer.apple.com/documentation/xcode/analyzing-responsiveness-issues-in-your-shipping-app ● https://developer.apple.com/documentation/Xcode/analyzing-the-performance-of-your-shipping-app ● https://developer.apple.com/jp/videos/play/wwdc2020/10076/ ● perfPowerMetrics ○ https://developer.apple.com/documentation/appstoreconnectapi/get-v1-apps-_id_-perfpowermetrics

Slide 28

Slide 28 text

働くをもっと楽しく、創造的に

Slide 29

Slide 29 text

おまけ

Slide 30

Slide 30 text

Organizerを使えば ✅ユーザーの端末で実際に起きたパフォーマンス問題を見れる ✅ リリース後の不調にすばやく気づく ✅ アプリパフォーマンス悪化の"原因"を確認できる ⚠ 一定のデータ量が必要 (解析と改善をONにしたユーザーからのデータ)

Slide 31

Slide 31 text

Xcode26でのOrganizerの進化 Xcode 26 では、アプリの起動時間に対してメトリック推奨事 項が利用できる。 →どの程度を目指せばいいかが分かるようになる (順次他のメトリックにも適応予定とのこと)