$30 off During Our Annual Pro Sale. View Details »

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

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

TVer Inc.
PRO

August 30, 2023
Tweet

More Decks by TVer Inc.

Other Decks in Technology

Transcript

  1. iOSエンジニアがいなくても泣かない!
    配信サービスのiOSアプリにおける
    オブザーバビリティの実装と改善
    株式会社 TVer / 加我 貴志
    2023/09/02 iOSDC Japan 2023

    View Slide

  2. iOSエンジニアがいなくても泣かない!
    配信サービスのiOSアプリにおける
    オブザーバビリティの実装と改善
    株式会社 TVer / 加我 貴志
    2023/09/02 iOSDC Japan 2023

    View Slide

  3. iOSエンジニア不在でもサービスを改善したい!
    配信サービスのiOSアプリにおける
    オブザーバビリティの導入と改善
    株式会社 TVer / 加我 貴志
    2023/09/02 iOSDC Japan 2023

    View Slide

  4. 本セッションでお話すること
    ● TVerにおけるiOSアプリ開発の課題
    ● iOSアプリへのオブザーバビリティ導入
    ● 視聴体験の可視化
    お話しないこと
    ● TVerにおけるiOSアプリの具体的な設計や実装
    まえがき

    View Slide

  5. 自己紹介
    ・加我 貴志 (@TAKA_0411)
    ・株式会社TVer
      サービス事業本部 SRE
    ・趣味はカメラとサウナとVTuber
    ・iOSDC Japan 2023 への参加
      コアスタッフ, スピーカー,
      企業スポンサー, 個人スポンサー

    View Slide

  6. 自己紹介

    View Slide

  7. アジェンダ
    ● TVerについて
    ● TVerのiOSアプリ開発の課題
    ● iOSアプリへのオブザーバビリティ導入
    ● 視聴体験の可視化
    ● まとめ

    View Slide

  8. アジェンダ
    ● TVerについて
    ● TVerのiOSアプリ開発の課題
    ● iOSアプリへのオブザーバビリティ導入
    ● 視聴体験の可視化
    ● まとめ

    View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. View Slide

  16. アジェンダ
    ● TVerについて
    ● TVerのiOSアプリ開発の課題
    ● iOSアプリへのオブザーバビリティ導入
    ● 視聴体験の可視化
    ● まとめ

    View Slide

  17. TVerのiOSアプリ開発の課題
    iOS アプリ開発の課題 (リニューアル時)
    1. 組織的な課題
    2. 個人的な課題

    View Slide

  18. TVerのiOSアプリ開発の課題
    iOS アプリ開発の課題 (リニューアル時)
    1. 組織的な課題
    ○ アプリは協力会社との共同開発
    ○ iOSの専任エンジニアが不在
    ○ アプリの品質を計測するノウハウがなく、
    ユーザーに発生している問題を認識できない

    View Slide

  19. クライアントは全て
    協力会社との共同開発

    View Slide

  20. TVerのiOSアプリ開発の課題
    iOS アプリ開発の課題 (リニューアル時)
    2. 個人的な課題
    ○ フロントエンドの知見が少ない
    ■ バックエンド ( インフラ + α) まで
    ○ New Relic (後述) に触れるのが初めて
    ■ 他社のモニタリングSaaSの利用経験はあり

    View Slide

  21. TVerのiOSアプリ開発の課題
    開発体制がどうであれ
    事業者がサービスの品質に
    責任を持つ必要がある

    View Slide

  22. アジェンダ
    ● TVerについて
    ● TVerのiOSアプリ開発の課題
    ● iOSアプリへのオブザーバビリティ導入
    ● 視聴体験の可視化
    ● まとめ

    View Slide

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

    View Slide

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

    View Slide

  25. iOSアプリへのオブザーバビリティ導入
    💡 オブザーバビリティ 💡

    View Slide

  26. iOSアプリへのオブザーバビリティ導入
    オブザーバビリティとは (1)
    ● システムの内部状態を把握するための尺度
    ○ 普段得られているデータからシステムで
    起きていることをどれだけ把握できるか
    ○ 把握するためにはテレメトリーデータが必要
    ■ イベント
    ■ トレース
    ■ メトリクス
    ■ ログ
    ■ プロファイル

    View Slide

  27. iOSアプリへのオブザーバビリティ導入
    オブザーバビリティとは (2)
    ● 予期せぬ問題に対処するために必要
    ○ “ ”
    未知の未知 への対応
    ○ “ ”
    モニタリングは 既知の未知 への対応
    ● アプリのデータを収集・分析すれば
    ユーザーの問題も認識できるのでは?
    【三石誠司・グローバルとローカル:世界は今】(146)「既知」と「未知」
    https://www.jacom.or.jp/column/2019/09/190906-39038.php

    View Slide

  28. 問題を認識できていないケース
    iOSアプリへのオブザーバビリティ導入
    サービスのユーザー サービスの開発者
    アプリの
    クラッシュ
    無限
    ローディング
    外部サービスと
    の通信エラー
    デバイスの発熱
    でアプリが強制
    終了
    サービスが使えないん
    だけど!!!
    システムに問題は
    出てないですね
    メモリリークで
    スローダウン

    View Slide

  29. iOSアプリへのオブザーバビリティ導入
    アプリの品質可視化に向けた3ステップ
    サービスの利用者 サービスの開発者
    1.アプリで発生している
        データの収集
    2.収集したデータを
      サーバーに集約
    3.集約されたデータを
      分析・可視化

    View Slide

  30. iOSアプリへのオブザーバビリティ導入
    アプリのデータを収集・分析するサービス
    ● Firebase
    ○ Crashlytics
    ○ Performance Monitoring
    ● Sentry
    ○ Error Monitoring
    ○ Performance Monitoring
    ● Datadog
    ○ Mobile Real User Monitoring

    View Slide

  31. iOSアプリへのオブザーバビリティ導入
    TVerではリニューアル時にNew Relic Mobileを導入
    ● データの収集
    ○ アプリのテレメトリーデータ
    ○ メモリ使用量やアプリの起動時間
    ○ 独自のカスタムイベント
    ● データの分析
    ○ ビルトインのダッシュボード
    ○ カスタムダッシュボード

    View Slide

  32. iOSアプリへのオブザーバビリティ導入
    Q. なぜNew Relic Mobileを導入したのか
    ● サービスを横断的に同一UIで観測できる
    ○ フロントエンドもバックエンドも
    ○ 少人数組織なのでツールのサイロ化を避けたい
    ● 動画プレイヤーも観測できる (後述)

    View Slide

  33. iOSアプリへのオブザーバビリティ導入

    View Slide

  34. iOSアプリへのオブザーバビリティ導入
    New Relic Mobile Agentの導入
    ● パッケージマネージャーで導入可能
    ○ CocoaPods
    https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-ios/installation/
    cocoapods-installation/
    ○ Swift Package Manager
    https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-ios/installation/
    spm-installation/

    View Slide

  35. iOSアプリへのオブザーバビリティ導入
    アプリの観測が
    可能となった👏

    View Slide

  36. 改善👏
    iOSアプリへのオブザーバビリティ導入
    サービスのユーザー サービスの開発者
    アプリの
    クラッシュ
    番組を見てるとアプリ
    が落ちるんだけど!!
    ライブ配信の視聴中に◯◯
    の処理が原因でアプリがク
    ラッシュしていますね。

    View Slide

  37. アジェンダ
    ● TVerについて
    ● TVerのiOSアプリ開発の課題
    ● iOSアプリへのオブザーバビリティ導入
    ● 視聴体験の可視化
    ● まとめ

    View Slide

  38. 視聴体験の可視化
    当初の課題とゴール
    ● 課題
    ○ アプリの品質を計測できていない
    ○ ユーザーに発生している問題を認識できない
    ● ゴール
    ○ アプリの品質をデータとして計測するした
    ○ データからアプリの問題を解決するした
    アプリに問題がない = 快適に番組を視聴できている?

    View Slide

  39. 視聴体験の可視化
    “ ”
    視聴体験 の可視化
    ● ユーザーが快適に番組を視聴できているか
    ○ アプリの動作状況
    ○ バックエンドの動作状況
    ○ ユーザーの番組視聴状況
    ※個人を特定できないようになっています
    ずっとバッファリング
    してるなぁ・・・

    View Slide

  40. 視聴体験の可視化
    Q. なぜ視聴体験を可視化する
    必要があるのか

    View Slide

  41. 視聴体験の可視化
    A. 視聴体験を阻害する要因を
    速やかに取り除きたい

    View Slide

  42. 視聴体験の可視化
    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

    View Slide

  43. 視聴体験の可視化
    # 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

    View Slide

  44. 視聴体験の可視化
    取得できるイベントと属性

    View Slide

  45. 動画再生時はデバイス
    に起因するエラーが
    発生していそう
    動画再生後は純粋な
    アプリ起因のエラーが
    多そう

    View Slide

  46. 視聴体験の可視化
    動画プレイヤーを観測してわかったこと
    ● デバイス起因の問題と傾向
    ● ネットワーク起因の問題と傾向
    ● 配信サーバーやコンテンツの問題

    View Slide

  47. アジェンダ
    ● TVerについて
    ● TVerのiOSアプリ開発の課題
    ● iOSアプリへのオブザーバビリティ導入
    ● 視聴体験の可視化
    ● まとめ

    View Slide

  48. まとめ
    iOSエンジニア不在でも品質の改善は可能
    ● 品質を可視化するための3ステップ
    ○ データの収集、集約、分析
    ○ TVerではNew Relic Mobileを導入
    ● 実際の改善
    ○ 収集したテレメトリーデータを可視化・分析
    ○ データを見て効率的にクラッシュ改善
    ● 想定外に対応するためのオブザーバビリティ

    View Slide

  49. まとめ
    将来の展望
    ● ユーザー体験のさらなる改善
    ○ メモリ使用量の最適化
    ○ MetricKitの導入・活用
    ● オブザーバビリティの成熟度向上
    ○ テレメトリーデータの拡充
    ○ SLI / SLOの導入

    View Slide

  50. iOSエンジニアと一緒に
    TVerをもっと改善したい

    View Slide

  51. 謝辞

    View Slide

  52. モバイルアプリのオブザーバビリティを向上させるプラクティス
    https://fortee.jp/iosdc-japan-2022/proposal/6bafac07-06f1-4846-964e-78dccfb29185

    View Slide

  53. View Slide

  54. おまけ:
    New Relic Mobile
    で見れるもの

    View Slide

  55. サマリー

    View Slide

  56. クラッシュ分析

    View Slide

  57. バージョン毎のトレンドとバージョンの詳細

    View Slide