Mirrativ Tech Blog

株式会社ミラティブの開発者(バックエンド,iOS,Android,Unity,機械学習,インフラ, etc.)によるブログです

【WWDC2019】ReplayKitラボで聞いてきたこととAppleへのフィードバック

こんにちは、Mirrativ iOSエンジニアの千吉良(ちぎら)です! 先日サンノゼで開催されたWWDC2019に参加してきました。Mirrativ iOSアプリは ReplayKit を利用して配信を行っていて、ReplayKitラボで質問したい項目を事前にまとめてWWDCに臨みました。

今回はReplayKitを軽く紹介し、ReplayKitラボでしてきた質問とその後Appleへ送ったフィードバックについて、公開できると思われる範囲で一部ご紹介します。

ReplayKitの概要

ReplayKitは端末の画面や音声を保存、配信する際に使用するフレームワークです。

iOS10までは、配信を行いたいアプリの中に配信を開始するためのボタンを設置しなければならず、配信できる内容もそのアプリ内にとどまっていました。

iOS11で ReplayKit 2 が登場し、どの画面にいても簡単に好きなアプリをライブストリーミングできるようになりました。

developer.apple.com

f:id:naru-jpn:20190614142505p:plain:w600
iOS11から配信用のアプリを通して端末の画面をそのまま配信できるようになりました

ReplayKitラボでしてきた質問と回答

1. broadcastAnnotated(withApplicationInfo:) で配信時に使用しているアプリの情報が一度しか取得できないのは正常か

broadcastAnnotated(withApplicationInfo:) - RPBroadcastSampleHandler | Apple Developer Documentation

ReplayKitからデータを受け取るためのクラス RPBroadcastSampleHandler にある関数 broadcastAnnotated(withApplicationInfo:) では、端末が配信を行っている時に使用しているアプリに関する情報を取得することができます。

Mirrativでは配信者が現在配信しているアプリを設定できるのですが、ユーザー自ら設定するのではなく、こちらで自動的に設定をしてあげられれば便利そうです。(配信アプリの自動設定についての取り組みは、こちらの記事でも紹介されています! 機械学習で配信中の映像からゲームを推定する機能をリリースしました - Mirrativ tech blog

この関数から取得できる情報をうまく利用したかったのですが、1度の配信につき1回しか情報が取得できないという事象に遭遇したので、その挙動が期待されているものなのかどうかを確認しました。

回答

ユーザーのプライバシー保護の為、一度しか取得できないようになっているのでその挙動は正常。ただ、関数のドキュメントページに説明がないのはイケていないので、フィードバックを送ってほしい。

2. 配信中に音声のデータが取得できなくなることが稀にあるが ReplayKit のドキュメントにある記述と関係があるか

ドキュメントにある記述とは、

ReplayKit | Apple Developer Documentation

にある、

ReplayKit is incompatible with AVPlayer content.

の部分です。配信中に音声のデータが取得できなくなることが稀にあるのですが、状況としてどういうことが考えられるか、ドキュメント内の記述に関係しているかどうかを質問しました。

回答

コンテンツの著作権保護のために、DRMで保護されているようなコンテンツを再生している時は、収録を行わないようになっているはず。もし異なる挙動が見られる場合には、フィードバックを送ってほしい。

3. 音声の出力先を「スピーカー」にしないと配信の音が小さくなってしまう場合がある

f:id:naru-jpn:20190614192753p:plain:w700
ユーザーに設定を促している画面と音声の出力先を設定する画面

音声の出力先を「スピーカー」にしないと配信の音が小さくなってしまう場合があり、ユーザーにスピーカー設定を促しているのですが、設定の手間や難しさもあるのでなにか対処方法はないか質問しました。

回答

最新のOSで試してみてほしい。もし結果が変わっていなかったら、フィードバックを送ってほしい。

4. 稀に理由 (null) と共に配信が止まってしまうことがある

f:id:naru-jpn:20190613164301p:plain:w600
理由 (null) で配信が止まった様子

配信用の App Extension 側で何か問題があり明示的に配信を停止する場合(ユーザーがログインしていない場合など)、適当な理由と共に停止のアラートを表示しているようにしているのですが、稀にシステムによって上のアラートが表示されて配信が止まってしまうケースがありました。

ユーザーにとって (null) が見えてしまった場合、アプリのバグに見えてしまい良くない体験になってしまうので、何かしらエラーの理由を付与してもらうなどできないかどうかを質問しました。

回答

App Extension側のプロセスが異常終了した場合、このようなアラートが表示されるかもしれない。プロセスのpidを監視などすれば異常終了は検知できると思うが、開発者にはそれはできない。エラーの理由を付与することはできるかも知れないので、エラーの内容を表示して欲しいというフィードバックを送ってほしい。

5. 配信中にオーバーレイでコンテンツを表示できるようにして欲しい

f:id:naru-jpn:20190614145626p:plain:w600
アプリ外などコメントを表示できない場所ではプッシュ通知を通じてコメントを表示している

Mirrativでは視聴者が配信者にコメントを送ることができるのですが、配信者がゲームをプレイしているなどコメントを直接表示できない場所では、プッシュ通知を通じてコメントの表示を行なっています。プッシュ通知だと配信者が見逃してしまうかも知れないので、配信中の画面にオーバーレイで独自のコンテンツを見せられるようにしたい、という要望です。

回答

これはたぶん難しいと思うが、要望の内容が伝わるように画像を添付するなどしてフィードバックを送ってほしい。

Appleにフィードバックを送る

上の回答を見て分かるように、解決して欲しい問題や要望がある場合にはAppleにフィードバックを送りましょう。

フィードバックは以下のページから送ることができます。

https://feedbackassistant.apple.com/welcome

f:id:naru-jpn:20190613172435p:plain
Feedback Assistant

ログイン後の画面を貼ることができないので言葉での説明になってしまうのですが、フィードバックは領域ごとに送ることができて、例えばドキュメントに関するフィードバックは Developer ToolsDocumentation という領域があるので、そこに要望として送るのがよいでしょう。フレームワークはそのままカテゴリが用意されているので、 iOSReplayKit を選択して送りましょう。

フィードバックを送る際には、

  • ここで話したことも含めて、できるだけ詳細に状況を書く
  • 端末のログを添付できる場合は添付する
  • 画面上の要素について触れる場合は、関係する画面のスクリーンショットを添付する

など、内容がより伝わるようにしてもらえると嬉しい、とのことでした。

普段からフィードバックを送ろう!

特に ReplayKit のように利用者の少ないフレームワークはフィードバックの数も少ないと思いますので、普段からフィードバックを送っていこうと思いました。この時期だとbetaソフトウェアをインストールしている人も多いと思いますので、不具合を見つけたら積極的に送るようにしたいですね。

おまけ

WWDC2019のようす

f:id:naru-jpn:20190613183331p:plain:w400
WWDCの朝食 / 朝9:00前に会場に行くとパンとフルーツがたくさんあります

f:id:naru-jpn:20190613184032p:plain:w400
今年も大量に配布されたOdwalla / チョコレートにはプロテインが含まれています

f:id:naru-jpn:20190613183859p:plain:w400
木曜夜にあるBash / ビールと食事、ライブが行われます(今年はWeezerでした)

f:id:naru-jpn:20190613184216p:plain:w400
会場にある有線ネットワーク / beta版のソフトウェアが超高速で落とせます

try! Swift San Jose

WWDCの最終日に隣の会場で行われる try! Swift San Jose では、メンターをしてきました。

www.tryswift.co

このイベントは SwiftコンパイラやSwift nio, Tensorflow for Swift などにコントリビュートしようという趣旨のワークショップなのですが、Chris LattnerやAppleのエンジニアも顔を出すので、毎年刺激的な場になっています。

We are hiring!

Mirrativ では一緒に開発してくれるエンジニアを募集しています!

体験入社や副業も大歓迎なのでお気軽にどうぞ!

www.mirrativ.co.jp