現在JavaScriptの設定が無効になっています。このページを利用するにはJavaScriptの設定を有効にしてください。TVアプリでのOSホーム画面に対する取り組みはじめにこんにちは。メディアカンパニーGYAO本部の渡邊です。TVアプリや動画プレーヤーの開発を担当しています。TVのホーム画面が大きく変わりました。今回はGYAO!のTVアプリがおこなっているホーム画面への対応についてご紹介させていただきたいと思います。Playerが3年前の2015年2月に発売されました。TV利用ユーザー数はそれほど多くありませんでした。その後、比較的安価なスティックタイプの端末が発売され、また、ソニー、シャープなどの大手メーカーが家庭用テレビのOSとして採用したことで、利用者は大きく増え続けています。デバイスがテレビであることから特に映像アプリとは相性が良く、GYAO!も2015年の端末販売開始とほぼ同時期にTVアプリをリリースしました。ホーム画面の変更リリース当時のOSバージョンは5.0でしたが、TVのOSも毎年更新されており、間もなくP(9.0)がリリースされる予定です。TVリリース以来最大とも言える変更がなされました。下の画像は「7.0以前のホーム画面」と「8.0のホーム画面」を比べたものです。アプリのアイコンが並ぶこれまでのホーム画面が一新され、画面の多くの表示領域をコンテンツが占めています。7.0以前のホーム画面8.0のホーム画面Googleはこの変更について「コンテンツファースト」という言葉をしばしば使っています。「どのアプリを使うのか」ではなく「(どのアプリかは意識せず)興味のあるコンテンツに出会う」ことにユーザーの最大の関心があるという考え方です。Playerだけに限られていますが、6月末に発売されたシャープのAQUOSではこちらのホーム画面が採用されています。8.0にOSアップデートされることが予想され、ホーム画面がガラっと変わるデバイスがこれから続々と増えていくと思われます。7.0以前のホーム画面にも、各アプリがおすすめするコンテンツを表示する仕組みはありました。それがホーム画面一番上の「レコメンド行」と呼ばれる領域(白枠で囲った部分)です。各アプリはプッシュ通知の仕組みを使ってレコメンド行におすすめのコンテンツを表示します。TV用のSupportLibraryにヘルパークラスが用意されており、こちらを利用することで容易にこの機能を実現できます。recommendation.getNotificationObject(context))SupportLibraryの各APIについて詳細を知りたい方は以下のドキュメントを参照ください。https://developer.android.com/reference/android/support/app/recommendation/package-summaryまた、実装例を確認したい方はGoogleが公開しているサンプルの以下のクラスを参照ください。TVの特徴の1つですが、実際にはレコメンド行には以下のような問題がありました。多くのアプリがインストールされている状況では各アプリで場所の取り合いになる端末メーカーの特集など、ビジネス的に優先されるカードが表示されることがあるそれらはコンテンツでない場合もある表示順に関するロジックがブラックボックスであり、いつどこに表示されるか分からない結果として興味のないコンテンツが羅列されてしまったり、例えインストールしているアプリに探していたコンテンツがあったとしても、気付くことができない状況が多々ありました。8.0でのUIの変更は、レコメンド行での問題を解決することで、ホーム画面のユーザー価値を高めるという目的があったと考えられます。それを実現するための技術的な仕様も変わりました。新しいホーム画面では、各行を「チャンネル」と呼び、チャンネルに含まれる各カードを「プログラム」と呼びます。アプリがインストールされたタイミングで、各アプリは1つだけ自動でチャンネルをホーム画面に表示させることができます。このチャンネルを「デフォルトチャンネル」と呼びます。一方で、これまでとは異なり、アプリをインストールした際にホーム画面のアプリ一覧にアイコンが自動で登録されません。アプリインストール直後ユーザーが「+」からアプリを選択して初めてホーム画面にアプリアイコンが表示されるそのため、自動で登録されるデフォルトチャンネルは、ユーザーとの接点としてとても重要です。Providerと呼ばれるAndroidのデータ管理の仕組みを用いて実現します。https://developer.android.com/guide/topics/providers/content-providersお手持ちのAndroidスマートフォンで撮影した画像ファイルや、端末に登録してある電話帳などをアプリで表示する際にもこの仕組みが用いられています。Providerのチャンネル用領域にデータを保存することで、そのチャンネルがホーム画面に表示されます。こちらについてもTvContractCompatなどの専用のヘルパークラスが用意されています。Providerで扱うUriとの関係が記述されているため、チャンネルのIdを用いた単純なメソッド呼び出しで各操作が完了します。null);但し、チャンネルを削除してしまうと、それまでホーム画面に表示されていたチャンネルがいきなり消えてしまうので、実際に使う機会はなさそうです。おすすめコンテンツの定期更新GYAO!ではおすすめの映像を毎日更新しているため、表示されているプログラムを1日に1回更新するようJobSchedulerを設定しています。テレビの電源を入れると前日とは別の映像がホーム画面で紹介されるので、興味のあるコンテンツにより出会いやすくなっています。定期更新のためのJobSchedulerの記述はモバイルアプリでのJobServiceの実装方法と同じです。}}JobServiceについてはデベロッパーガイドを参照ください。Providerを介したプログラムの更新方法につきましては、以下のデベロッパーガイドを参照ください。https://developer.android.com/training/tv/discovery/recommendations-channel#programsチャンネル表示/非表示での更新チャンネルロゴで左を押すと表示される「-」アイコンを選択すると、チャンネルそのものを非表示にすることができます。非表示になっているにもかかわらずコンテンツを定期的に更新し続けることは、システムに不要な負荷を与えます。逆に、設定画面から再度チャンネルを表示させた際には、最新のおすすめをユーザーに紹介する必要があります。そのため、チャンネルの表示状態を監視し、変更があった場合にはその変更に応じた処理を行うようにスケジュールしておきます。JobSchedulerにはこれを簡単に実現する仕組みがあるので、それを利用しています。}}複数チャンネル各アプリは、デフォルトチャンネル以外にも任意のチャンネルを作成できます。YouTubeであれば以下のようにテーマごとのチャンネルが用意されています。GYAO!アプリではコンテンツを映画、アニメ、韓流、などの「ジャンル」に分類しています。GYAO!のユーザーにはいろいろなジャンルの映像に興味を持たれている方ももちろんいらっしゃいますが、特定ジャンルの映像を毎日視聴されている方もたくさんいらっしゃいます。いったユーザーがより少ない操作で好きなコンテンツを視聴できるように、各ジャンルに対応したチャンネルを用意しています。チャンネルを用いることで以下の要件を満たすことができるからです。アプリのジャンルトップ画面をホーム画面から直接開くことができる好きなジャンルのおすすめコンテンツを、ホーム画面から直接視聴開始できるチャンネルのロゴを選択するとアプリのジャンルトップ画面が開き、プログラムを選択するとそのコンテンツの再生がすぐに始まります。デフォルトチャンネル以外のチャンネルをホーム画面に表示するためには、ユーザーの操作や同意が必要です。そのための操作として以下の2つのパターンがあります。(1)「チャンネルをカスタマイズ」から選択ホーム画面の一番下にある「チャンネルをカスタマイズ」から各チャンネルの表示非表示を切り替えることができます。Providerにチャンネルを登録しておくと、この画面にチャンネル名が表示されます。この画面についてはOSが全てハンドリングしてくれるので、先に書いた「チャンネル表示/非表示での更新」が正しく実装されていれば、アプリ側では他にすることはありません。(2)アプリ内から追加(1)の設定画面だけではほとんどのユーザーに気付いてもらえないため、GYAO!アプリでは、ジャンルトップ画面からそれぞれのジャンルのチャンネル追加できるようになっています。この場合にはアプリ内で、ダイアログを表示するためのIntentの作成と、ユーザー操作のコールバックを受けるコードを記述する必要があります。TV端末をお持ちの方は、OSが8.0に更新されましたら新しいホーム画面をぜひ体験してみてください。実は新しいホーム画面ではチャンネル以外にももう一つ大きな変更点がありました。こちらについては次の機会にご紹介させていただけたらと思っています。JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。JAPANのサービス開発を支える技術やデザイン、文化を発信しています。Reserved.このページの先頭へ。