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

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

Avatar for TVer Inc. TVer Inc.
August 30, 2023

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

Avatar for TVer Inc.

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を導入

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