Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iOSエンジニア不在でもサービスを改善したい!配信サービスのiOSアプリにおける オブザーバビ...

TVer Inc.
August 30, 2023

iOSエンジニア不在でもサービスを改善したい!配信サービスのiOSアプリにおける オブザーバビリティの導入と改善

TVer Inc.

August 30, 2023
Tweet

More Decks by TVer Inc.

Other Decks in Technology

Transcript

  1. 自己紹介 ・加我 貴志 (@TAKA_0411) ・株式会社TVer   サービス事業本部 SRE ・趣味はカメラとサウナとVTuber ・iOSDC

    Japan 2023 への参加   コアスタッフ, スピーカー,   企業スポンサー, 個人スポンサー
  2. TVerのiOSアプリ開発の課題 iOS アプリ開発の課題 (リニューアル時) 2. 個人的な課題 ◦ フロントエンドの知見が少ない ▪ バックエンド

    ( インフラ + α) まで ◦ New Relic (後述) に触れるのが初めて ▪ 他社のモニタリングSaaSの利用経験はあり
  3. iOSアプリ開発の課題と今回のゴール • 課題 ◦ アプリの品質を計測できていない ◦ ユーザーに発生している問題を認識できない • ゴール ◦

    アプリの品質をデータとして計測する ◦ ユーザーに発生した問題をデータで解決する iOSアプリへのオブザーバビリティ導入 読み込み が速い 再生が 途切れない クラッシュ しない
  4. iOSアプリ開発の課題と今回のゴール • 課題 ◦ アプリの品質を計測できていない ◦ ユーザーに発生している問題を認識できない • ゴール ◦

    アプリの品質をデータとして計測する ◦ ユーザーに発生した問題をデータで解決する iOSアプリへのオブザーバビリティ導入 読み込み が速い 再生が 途切れない クラッシュ しない
  5. iOSアプリへのオブザーバビリティ導入 オブザーバビリティとは (2) • 予期せぬ問題に対処するために必要 ◦ “ ” 未知の未知 への対応

    ◦ “ ” モニタリングは 既知の未知 への対応 • アプリのデータを収集・分析すれば ユーザーの問題も認識できるのでは? 【三石誠司・グローバルとローカル:世界は今】(146)「既知」と「未知」 https://www.jacom.or.jp/column/2019/09/190906-39038.php
  6. 問題を認識できていないケース iOSアプリへのオブザーバビリティ導入 サービスのユーザー サービスの開発者 アプリの クラッシュ 無限 ローディング 外部サービスと の通信エラー

    デバイスの発熱 でアプリが強制 終了 サービスが使えないん だけど!!! システムに問題は 出てないですね メモリリークで スローダウン
  7. 視聴体験の可視化 当初の課題とゴール • 課題 ◦ アプリの品質を計測できていない ◦ ユーザーに発生している問題を認識できない • ゴール

    ◦ アプリの品質をデータとして計測するした ◦ データからアプリの問題を解決するした アプリに問題がない = 快適に番組を視聴できている?
  8. 視聴体験の可視化 “ ” 視聴体験 の可視化 • ユーザーが快適に番組を視聴できているか ◦ アプリの動作状況 ◦

    バックエンドの動作状況 ◦ ユーザーの番組視聴状況 ※個人を特定できないようになっています ずっとバッファリング してるなぁ・・・
  9. 視聴体験の可視化 New Relic Video Agent • 動画プレイヤーのイベントを検知, 取得 ◦ iOSだとAVPlayer,

    AndroidだとMedia3 ◦ 動画広告のイベントにも対応 • iOS, Android, JavaScriptに対応 ◦ https://github.com/newrelic/video-agent-iOS ◦ https://github.com/newrelic/video-agent-android ◦ https://github.com/newrelic/video-videojs-js
  10. 視聴体験の可視化 # CocoaPodsによる導入 pod 'NewRelicVideoCore', :git => 'https://github.com/newrelic/video-agent-iOS' pod 'NRAVPlayerTracker',

    :git => 'https://github.com/newrelic/video-agent-iOS' pod 'NRIMATracker', :git => 'https://github.com/newrelic/video-agent-iOS' # AVPlayerのイベントをトラッキング let trackerId = NewRelicVideoAgent.sharedInstance().start( withContentTracker:NRTrackerAVPlayer.init(avPlayer: player) ) # AVPlayerとIMA3 trackerのイベントをトラッキング let trackerId = NewRelicVideoAgent.sharedInstance().start( withContentTracker:NRTrackerAVPlayer.init(avPlayer: player), adTracker: NRTrackerIMA.init() ) New Relic Video Agent の導入 (Swift) i
  11. まとめ iOSエンジニア不在でも品質の改善は可能 • 品質を可視化するための3ステップ ◦ データの収集、集約、分析 ◦ TVerではNew Relic Mobileを導入

    • 実際の改善 ◦ 収集したテレメトリーデータを可視化・分析 ◦ データを見て効率的にクラッシュ改善 • 想定外に対応するためのオブザーバビリティ