Slide 1

Slide 1 text

New Relic で始める アプリプラットフォームの オブザーバビリティ YapTech Playground #1 モバイルアプリ開発編 #YapTechPlayground

Slide 2

Slide 2 text

SPEAKER 株式会社ヤプリ プロダクト開発本部 開発1部 iOSグループ 菅 直之(Nao-RandD / ナオランド) ● 2022年に中途⼊社。iOSエンジニア歴 5年 ● ノーコードアプリプラットフォーム 「Yappli」の保守‧新規開発, R&D領域 @Nao_RandD

Slide 3

Slide 3 text

みなさん オブザーバビリティ してますか?

Slide 4

Slide 4 text

今回はヤプリで オブザーバビリティ を 整備した背景と流れをご紹介

Slide 5

Slide 5 text

1. オブザーバビリティ とは? 2. New Relic 導⼊までの流れ 3. 運⽤の「これまで」と「これから」 🗣 本⽇お話しすること

Slide 6

Slide 6 text

オブザーバビリティ とは?

Slide 7

Slide 7 text

可観測性のこと(Observe + Ability = 観測する能⼒) オブザーバビリティとは? オブザーバビリティ‧エンジニアリング: https://www.oreilly.co.jp/books/9784814400126/

Slide 8

Slide 8 text

可観測性のこと(Observe + Ability = 観測する能⼒) ● 監視とは異なることに注意 ○ 監視は「何が起きたかを⾒続けること」 ○ 対象としきい値を設定しておき、超えたところで アラートとして通知する仕組みは「結果」しか得られない オブザーバビリティとは? オブザーバビリティ‧エンジニアリング: https://www.oreilly.co.jp/books/9784814400126/

Slide 9

Slide 9 text

可観測性のこと(Observe + Ability = 観測する能⼒) ● 監視とは異なることに注意 ○ 監視は「何が起きたかを⾒続けること」 ○ 対象としきい値を設定しておき、超えたところで アラートとして通知する仕組みは「結果」しか得られない ● 何らかの異常発⽣時に 通知だけでなくどこで‧なぜ 起こったのか把握する能⼒ ‧仕組み オブザーバビリティとは? オブザーバビリティ‧エンジニアリング: https://www.oreilly.co.jp/books/9784814400126/

Slide 10

Slide 10 text

New Relic 導⼊までの流れ

Slide 11

Slide 11 text

New Relic 導⼊までの流れ 導⼊における⽬的と運⽤開始までのできごとを共有 □ ヤプリで実現したいオブザーバビリティ □ SDKの組み込み □ ビルド基盤での考慮

Slide 12

Slide 12 text

New Relic 導⼊までの流れ 導⼊における⽬的と運⽤開始までのできごとを共有 □ ヤプリで実現したいオブザーバビリティ □ SDKの組み込み □ ビルド基盤での考慮

Slide 13

Slide 13 text

ヤプリで実現したいオブザーバビリティ 前提:ノーコードアプリプラットフォーム「Yappli」を提供 New Relic 導⼊までの流れ

Slide 14

Slide 14 text

ヤプリで実現したいオブザーバビリティ 前提:ノーコードアプリプラットフォーム「Yappli」を提供 ひとつのコードベースで約900のアプリ(2025年2⽉時点)を⽣成している New Relic 導⼊までの流れ

Slide 15

Slide 15 text

ヤプリで実現したいオブザーバビリティ 前提:ノーコードアプリプラットフォーム「Yappli」を提供 ひとつのコードベースで約900(2025年2⽉時点)のアプリを⽣成している New Relic 導⼊までの流れ ビルド基盤の仕組み‧プラットフォームの開発に ご興味ある⽅はぜひ!💡

Slide 16

Slide 16 text

ヤプリで実現したいオブザーバビリティ 前提:ノーコードアプリプラットフォーム「Yappli」を提供 ひとつのコードベースで約900のアプリ(2025年2⽉時点)を⽣成している New Relic 導⼊までの流れ

Slide 17

Slide 17 text

ヤプリで実現したいオブザーバビリティ 前提:ノーコードアプリプラットフォーム「Yappli」を提供 ひとつのコードベースで約900のアプリ(2025年2⽉時点)を⽣成している → ひとつの不具合 が 複数のアプリ に影響する New Relic 導⼊までの流れ 不具合💥 💥 💥 💥

Slide 18

Slide 18 text

ヤプリで実現したいオブザーバビリティ 前提:ノーコードアプリプラットフォーム「Yappli」を提供 ひとつのコードベースで約900のアプリ(2025年2⽉時点)を⽣成している New Relic 導⼊までの流れ 特定の1アプリだけでなく ヤプリで運⽤しているアプリ全体について 利⽤状況が観測できること

Slide 19

Slide 19 text

ヤプリで実現したいオブザーバビリティ 導⼊する選択肢としては2つ New Relic 導⼊までの流れ

Slide 20

Slide 20 text

ヤプリで実現したいオブザーバビリティ 導⼊する選択肢としては2つ Firebase Crashlytics + Firebase Performance New Relic New Relic 導⼊までの流れ

Slide 21

Slide 21 text

ヤプリで実現したいオブザーバビリティ 導⼊する選択肢としては2つ Firebase Crashlytics + Firebase Performance ○ アプリごとにプロジェクト管理が必要になる ○ Big Queryに出⼒することで全体の分析が可能になる New Relic New Relic 導⼊までの流れ Export Firebase Crashlytics data to BigQuery: https://firebase.google.com/docs/crashlytics/bigquery-export

Slide 22

Slide 22 text

ヤプリで実現したいオブザーバビリティ 導⼊する選択肢としては2つ Firebase Crashlytics + Firebase Performance New Relic ○ ひとつの管理画⾯で全体の観測とアプリ単位の情報を取得できる ○ ユースケースに応じてダッシュボードの雛形が存在する ○ 他チームで採⽤されておりベンダーとの関係値が築けている New Relic 導⼊までの流れ

Slide 23

Slide 23 text

ヤプリで実現したいオブザーバビリティ 導⼊する選択肢としては2つ Firebase Crashlytics + Firebase Performance New Relic New Relic 導⼊までの流れ ⭕ ヤプリでは New Relic を採⽤

Slide 24

Slide 24 text

New Relic 導⼊までの流れ 導⼊における⽬的と運⽤開始までのできごとを共有 ✅ ヤプリで実現したいオブザーバビリティ □ SDKの組み込み □ ビルド基盤での考慮

Slide 25

Slide 25 text

New Relic 導⼊までの流れ 導⼊における⽬的と運⽤開始までのできごとを共有 ☑ ヤプリで実現したいオブザーバビリティ □ SDKの組み込み □ ビルド基盤での考慮

Slide 26

Slide 26 text

New Relic 導⼊までの流れ 導⼊における⽬的と運⽤開始までのできごとを共有 ☑ ヤプリで実現したいオブザーバビリティ □ SDKの組み込み □ ビルド基盤での考慮 🍎 iOSで New Relic に実装した 内容をご紹介

Slide 27

Slide 27 text

SDKの組み込み New Relic 導⼊までの流れ 対応したこと ● iOS向けに提供されたSDKを利⽤する ● 初期化処理や、必要に応じて計測情報を設定する実装を追加する newrelic-ios-agent: https://github.com/newrelic/newrelic-ios-agent

Slide 28

Slide 28 text

SDKの組み込み New Relic 導⼊までの流れ 初期化: ● トークンを渡して start メソッドを呼ぶだけで計測が⾏える newrelic-document: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-ios/ios-sdk-api/ios-sdk-api-guide/

Slide 29

Slide 29 text

SDKの組み込み New Relic 導⼊までの流れ 初期化: ● トークンを渡して start メソッドを呼ぶだけで計測が⾏える import NewRelic // トークンを渡して計測開始 NewRelic.start(withApplicationToken: "[New Relic Token]") newrelic-document: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-ios/ios-sdk-api/ios-sdk-api-guide/

Slide 30

Slide 30 text

SDKの組み込み New Relic 導⼊までの流れ import NewRelic NewRelic.start(withApplicationToken: "[New Relic Token]") New Relic モバイル: グループクラッシュタブ: https://docs.newrelic.com/jp/docs/errors-inbox/mobile-tab/ 初期化: ● トークンを渡して start メソッドを呼ぶだけで計測が⾏える

Slide 31

Slide 31 text

SDKの組み込み カスタム属性をセット: ● デフォルトの属性(OSバージョンやアプリバージョンなど) 以外に計測で必要なカスタム属性を追加できる New Relic 導⼊までの流れ Create a custom attribute: https://docs.newrelic.com/jp/docs/mobile-monitoring/new-relic-mobile/mobile-sdk/create-attribute/#ios

Slide 32

Slide 32 text

SDKの組み込み カスタム属性をセット: ● デフォルトの属性(OSバージョンやアプリバージョンなど) 以外に計測で必要なカスタム属性を追加できる New Relic 導⼊までの流れ // アプリを識別する情報をセット NewRelic.setAttribute( "SKU", value: "XXXXXXXXX" // アプリの識別子 ) Create a custom attribute: https://docs.newrelic.com/jp/docs/mobile-monitoring/new-relic-mobile/mobile-sdk/create-attribute/#ios

Slide 33

Slide 33 text

カスタム属性をセット: ● デフォルトの属性(OSバージョンやアプリバージョンなど) 以外に計測で必要なカスタム属性を追加できる SDKの組み込み New Relic 導⼊までの流れ // アプリを識別する情報をセット NewRelic.setAttribute( "SKU", value: "XXXXXXXXX" // アプリの識別子 )

Slide 34

Slide 34 text

パンくずリストによる⾏動分析: ● ユーザーがどういった⾏動をしたかを計測できる SDKの組み込み New Relic 導⼊までの流れ Record breadcrumbs: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile/mobile-sdk/record-breadcrumb/

Slide 35

Slide 35 text

パンくずリストによる⾏動分析: ● ユーザーがどういった⾏動をしたかを計測できる SDKの組み込み // 処理A NewRelic.recordBreadcrumb( "処理A", // パンくずに記録する名称 attributes: attributes // 必要な属性追加 ) ・・・ // 処理B NewRelic.recordBreadcrumb( "処理B", // パンくずに記録する名称 attributes: attributes // 必要な属性追加 ) ・・・ // ここでクラッシュ 💥 (処理 A→ 処理B を踏んでクラッシュしたことがわかる ) New Relic 導⼊までの流れ

Slide 36

Slide 36 text

パンくずリストによる⾏動分析: ● ユーザーがどういった⾏動をしたかを計測できる SDKの組み込み New Relic 導⼊までの流れ

Slide 37

Slide 37 text

パンくずリストによる⾏動分析: ● ユーザーがどういった⾏動をしたかを計測できる SDKの組み込み New Relic 導⼊までの流れ クラッシュまでの ⾏動が追える ✨ どのユーザーが、どんな⾏動をして クラッシュしたかわかるため とても便利

Slide 38

Slide 38 text

New Relic 導⼊までの流れ 導⼊における⽬的と運⽤開始までのできごとを共有 ☑ ヤプリで実現したいオブザーバビリティ ✅ SDKの組み込み □ ビルド基盤での考慮

Slide 39

Slide 39 text

New Relic 導⼊までの流れ 導⼊における⽬的と運⽤開始までのできごとを共有 ☑ ヤプリで実現したいオブザーバビリティ ☑ SDKの組み込み □ ビルド基盤での考慮

Slide 40

Slide 40 text

ビルド基盤への組み込み 組み込み後、無事にクラッシュを検知 ✨ New Relic 導⼊までの流れ

Slide 41

Slide 41 text

組み込み後、無事にクラッシュを検知 ✨ ビルド基盤への組み込み New Relic 導⼊までの流れ

Slide 42

Slide 42 text

組み込み後、無事にクラッシュを検知 ✨ ビルド基盤への組み込み New Relic 導⼊までの流れ ⾮常に⾒やすいスタックトレースですね😊

Slide 43

Slide 43 text

組み込み後、無事にクラッシュを検知 ✨ ビルド基盤への組み込み New Relic 導⼊までの流れ ⾮常に⾒やすいスタックトレースですね シンボリケーション されてない 😇

Slide 44

Slide 44 text

組み込み後、無事にクラッシュを検知 ✨ ビルド基盤への組み込み New Relic 導⼊までの流れ ✅ ビルド時にdSYMファイルを   New Relicにアップロードする

Slide 45

Slide 45 text

New Relic 導⼊までの流れ 導⼊における⽬的と運⽤開始までのできごとを共有 ☑ ヤプリで実現したいオブザーバビリティ ☑ SDKの組み込み ✅ ビルド基盤での考慮

Slide 46

Slide 46 text

運⽤の「 これまで 」と「 これから 」

Slide 47

Slide 47 text

現在の運⽤体制 以下を元に体制を整備している 1. Slack でのクラッシュ通知 2. 未対応のクラッシュをチケット化 運⽤の「 これまで 」と「 これから 」

Slide 48

Slide 48 text

現在の運⽤体制 以下を元に体制を整備している 1. Slack でのクラッシュ通知 ○ 2種類の通知 i. 1時間で発⽣したクラッシュの通知 ii. 24時間以内で発⽣件数が200件以上のクラッシュの通知 運⽤の「 これまで 」と「 これから 」

Slide 49

Slide 49 text

現在の運⽤体制 以下を元に体制を整備している 1. Slack でのクラッシュ通知 2. 未対応のクラッシュをチケット化 ○ 定例でメンバーにアサインして緊急度など⼀次調査まで⾏う ○ 緊急度に応じてインシデント対応や各所への連携を進める 運⽤の「 これまで 」と「 これから 」

Slide 50

Slide 50 text

現在の運⽤体制 以下を元に体制を整備している 1. Slack でのクラッシュ通知 2. 未対応のクラッシュをチケット化 運⽤の「 これまで 」と「 これから 」 ✅ 定点観測: ● 異常事態を早めに検知して対応できる ● 問い合わせで初めて問題に気づく状態をなくす ✅ チケット管理 ● 緊急度に応じてメンバーにアサインして進められる

Slide 51

Slide 51 text

今後の運⽤体制 導⼊の有効性を⽰す具体的な⽬標 ● オブザーバビリティもタダじゃない ● 「オブザーバビリティは必要」という抽象的なものでは不⼗分 ● 費⽤をかけてでもやる意義があることを⽰す指標を定める 運⽤の「 これまで 」と「 これから 」

Slide 52

Slide 52 text

今後の運⽤体制 導⼊の有効性を⽰す具体的な⽬標 1. 事前検知によって問題解決できること 2. アプリ全体の集計情報から復旧が判断できること 運⽤の「 これまで 」と「 これから 」

Slide 53

Slide 53 text

今後の運⽤体制 導⼊の有効性を⽰す具体的な⽬標 1. 事前検知によって問題解決できること 2. アプリ全体の集計情報から復旧が判断できること 運⽤の「 これまで 」と「 これから 」

Slide 54

Slide 54 text

今後の運⽤体制 導⼊の有効性を⽰す具体的な⽬標 1. 事前検知によって問題解決できること ○ クライアントの問い合わせ前に問題を検知して解決を⽬指す 運⽤の「 これまで 」と「 これから 」

Slide 55

Slide 55 text

今後の運⽤体制 導⼊の有効性を⽰す具体的な⽬標 1. 事前検知によって問題解決できること a. クライアントの問い合わせ前に問題を検知して解決を⽬指す 運⽤の「 これまで 」と「 これから 」 事前検知で解決した件数の 積み上げから有効性を提⽰する

Slide 56

Slide 56 text

今後の運⽤体制 導⼊の有効性を⽰す具体的な⽬標 1. 事前検知によって問題解決できること 2. アプリ全体の集計情報から復旧が判断できること 運⽤の「 これまで 」と「 これから 」

Slide 57

Slide 57 text

今後の運⽤体制 導⼊の有効性を⽰す具体的な⽬標 2. アプリ全体の集計情報から復旧が判断できること ○ 修正バージョンリリース後のアップデート判断は クライアント依存 になる 運⽤の「 これまで 」と「 これから 」

Slide 58

Slide 58 text

今後の運⽤体制 導⼊の有効性を⽰す具体的な⽬標 2. アプリ全体の集計情報から復旧が判断できること ○ 修正バージョンリリース後のアップデート判断はクライアント依存になる 運⽤の「 これまで 」と「 これから 」 💥 💥 💥 不具合💥

Slide 59

Slide 59 text

今後の運⽤体制 導⼊の有効性を⽰す具体的な⽬標 2. アプリ全体の集計情報から復旧が判断できること ○ 修正バージョンリリース後のアップデート判断はクライアント依存になる 運⽤の「 これまで 」と「 これから 」 アップデート済み 💥 解消 ✅ ✅ ✅ 未アップデート😢 (まだ問題がある状態) アップデート済み

Slide 60

Slide 60 text

今後の運⽤体制 導⼊の有効性を⽰す具体的な⽬標 2. アプリ全体の集計情報から復旧が判断できること ○ 修正バージョンリリース後のアップデート判断はクライアント依存になる ○ クラッシュ件数から現在のアプリ状態を把握して提案できる数値を得る (たとえば、クラッシュの減少率が50%未満なら強制アップデートなどをクライアント提案など) 運⽤の「 これまで 」と「 これから 」

Slide 61

Slide 61 text

今後の運⽤体制 導⼊の有効性を⽰す具体的な⽬標 2. アプリ全体の集計情報から復旧が判断できること a. 修正バージョンリリース後のアップデート判断はクライアント依存になる b. クラッシュ件数から現在のアプリ状態を把握して提案する数値を得る より多くのエンドユーザーの体験向上のために 集計からアップデート施策を提案できることを⽬指す 運⽤の「 これまで 」と「 これから 」

Slide 62

Slide 62 text

まとめ 本⽇お話ししたこと ● オブザーバビリティの導⼊背景: ○ どのような効果や要件を求めて導⼊したか ● New Relic SDK の組み込み‧考慮点: ○ 実装に組み込んだ機能や、ビルド基盤で必要だった考慮点について ● 運⽤体制の「これまで」と「これから」: ○ 現在の運⽤体制と、今後の⽬標について New Relic で始めるアプリプラットフォームのオブザーバビリティ

Slide 63

Slide 63 text

まとめ 本⽇お話ししたこと ● オブザーバビリティの導⼊背景 ● New Relic SDK の組み込み‧考慮点 ● 運⽤体制の「これまで」と「これから」 New Relic で始めるアプリプラットフォームのオブザーバビリティ 💡 ポイント オブザーバビリティはすぐに課題解決できる銀の弾丸ではないが、 より良いサービスにつなげる基盤となるもの

Slide 64

Slide 64 text

オブザーバビリティ で より良いアプリ体験を 実現していきましょう!

Slide 65

Slide 65 text

最後に iOSDC Japan 2025 のスポンサーセッションで登壇します! New Relic で始めるアプリプラットフォームのオブザーバビリティ

Slide 66

Slide 66 text

ご清聴ありがとうございました!

Slide 67

Slide 67 text

補助資料

Slide 68

Slide 68 text

可観測性成熟度シリーズの紹介 Introduction to our observability maturity series: https://docs.newrelic.com/jp/docs/new-relic-solutions/observability-maturity/introduction/

Slide 69

Slide 69 text

QA中に突然のクラッシュ報告 💥 ● ⼀部のOS端末、かつ、リリースビルドでのみクラッシュする SDKの組み込み New Relic 導⼊までの流れ

Slide 70

Slide 70 text

QA中に突然のクラッシュ報告 💥 ● ⼀部のOS端末、かつ、リリースビルドでのみクラッシュする → 調査の結果、New Relic 起因で発⽣していることが判明 🤔 SDKの組み込み New Relic 導⼊までの流れ

Slide 71

Slide 71 text

QA中に突然のクラッシュ報告 💥 ● ⼀部のOS端末、かつ、リリースビルドでのみクラッシュする → New Relic ではNRMAFeatureFlags  というフラグで観測設定を変更できる SDKの組み込み New Relic 導⼊までの流れ Configure mobile monitoring settings: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile/mobile-sdk/configure-settings/#ios

Slide 72

Slide 72 text

QA中に突然のクラッシュ報告 💥 ● ⼀部のOS端末、かつ、リリースビルドでのみクラッシュする → New Relic ではNRMAFeatureFlags  というフラグで観測設定を変更できる SDKの組み込み New Relic 導⼊までの流れ ホワイトリスト形式での導⼊を推奨 デフォルトでONの設定も⼀旦OFFにして、 必要な設定を検証して導⼊すると良い

Slide 73

Slide 73 text

FOLLOW ME!! Yappli Tech Blog Yappli Developers カジュアル⾯談 @yappli_dev https://tech.yappli.io/ https://open.talentio.com/r/1/c/yappli/pages/59642