リモ録 は、ソニー製テレビ BRAVIA と nasne の録画予約・録画済み番組の管理・リモコン操作を iPhone から行う iOS アプリです。
目次
- SideView が 2027年3月30日で終わる
- 引き継げる機能と引き継げない機能
- 視聴だけはどうにもならない理由
- どうやってテレビとつないでいるか
- 番組表を自前で持たない
- nasne にも予約できるようにした
- 審査で手こずった話
SideView が 2027年3月30日で終わる
2025年9月2日、ソニーが「Video & TV SideView」アプリのサービス終了を発表しました。終了日は 2027年3月30日 です。翌日以降はアプリを開いてもお知らせが表示されるだけになり、すべての機能が使えなくなります。
我が家では BRAVIA の録画予約をこのアプリでやっていました。テレビのリモコンで番組表を操作するのは文字が小さくて遅く、手元のスマホで済むのが当たり前になっていたので、これが使えなくなるのは地味に困ります。
発表からしばらく代替を探しましたが、BRAVIA の録画予約をスマホからやる手段が見つかりませんでした。それなら作るしかない、ということで手をつけたのが リモ録 です。
引き継げる機能と引き継げない機能
最初に整理したのは、SideView のどの機能を引き継げるのかという点です。結論から書くと、操作系は引き継げますが、視聴系は引き継げません。
| SideView の機能 | リモ録 |
|---|---|
| リモコン | 対応 |
| 録画予約(家のネットワーク内から) | 対応 |
| 録画済み番組の一覧・削除 | 対応 |
| 外から録画予約 | 自分で用意した手段で自宅のネットワークにつなげば可能 |
| 外からどこでも視聴 | 非対応 |
| 家じゅうどこでも視聴 | 非対応 |
リモ録は録画番組や放送を再生する機能を持っていません。ここは最初から諦めて、操作に専念する方針にしました。理由は次に書きます。
視聴だけはどうにもならない理由
録画番組の配信には DTCP-IP という著作権保護の仕組みが使われています。映像は暗号化されて流れてくるので、再生するには復号する必要があります。
この復号に必要な鍵とライセンスは、DTLA というライセンス管理団体から受ける必要があります。法人向けの仕組みで、個人開発者が取得できるものではありません。暗号化を回避して再生するという選択肢もありません。日本の著作権法では、技術的保護手段を回避して行う複製は私的複製の例外から外されていますし、不正競争防止法が回避手段の提供を禁じています。
つまり、個人が作るアプリで録画番組を再生することは制度的に不可能です。ここは技術の問題ではなく仕組みの問題なので、工夫のしようがありません。
視聴したい場合は、ライセンスを取得している正規のアプリを使うことになります。調べた範囲では次のような選択肢があります。
| 方法 | iPhone 単体 | 備考 |
|---|---|---|
| DiXiM Play | 可 | デジオンのプレーヤー。試聴で動作確認してからライセンス購入 |
| torne mobile | 可 | nasne 公式。視聴機能は有料 |
| PC TV Plus | 不可 | Windows PC が必要。外出先視聴は Advanced Pack が必要 |
リモ録で予約して、見るのは上記のアプリで、という分担になります。
どうやってテレビとつないでいるか
BRAVIA には Scalar Web API と呼ばれる操作用のインターフェースがあります。テレビのローカル IP アドレスに対して JSON-RPC を投げると、録画予約の一覧取得や追加・削除ができます。リモ録はこれを使っています。
最初につまずいたのはペアリングでした。テレビに PIN を表示させて入力する仕組みなのですが、PIN が一瞬で消えてしまい、入力する間がありません。
Mac 上に記録用のプロキシを立てて通信を覗いたところ、原因がわかりました。iOS の URLSession は、サーバーから 401 と WWW-Authenticate: Basic が返ってくると、同じリクエストを自動的に送り直します。 テレビ側はこの2回目のリクエストを受け取った時点で PIN ダイアログを閉じていました。アプリは1回しか送っていないつもりなのに、実際には2回届いていたわけです。
対処は、URLSessionTaskDelegate で Basic 認証のチャレンジを打ち切り、自動再送をさせないようにすることでした。原因が分かるまでは完全にテレビ側の気まぐれだと思っていたので、通信を記録してみるまで手も足も出ませんでした。
リモコンのほうは IRCC-IP という別の仕組みを使っています。テレビから操作コードの一覧を取得でき、我が家の機種では146個のコードが返ってきました。テレビにインストールされている動画アプリの起動にも対応しています。
番組表を自前で持たない
番組表をどう用意するかは悩みました。テレビから取得する方法もありますが、取れる範囲が限られます。
結局、公開されている番組表サイトの HTML を読み取る方式にしました。番組表のデータを自分で持たずに済み、地上波・BS・CS を7日先まで表示できます。地上波の地域は設定で選べて、位置情報から自動で選ぶこともできます。
表示は、横に放送局・縦に時間を並べたグリッドにしました。局名の行は上に、時刻の列は左に固定されるので、スクロールしても何の番組か見失いません。当日は現在時刻の1時間前から描画して、終わった番組で画面が埋まらないようにしています。赤い線が現在時刻です。
この方式の弱点は、サイトの構造が変わると読み取れなくなることです。そうなったらアプリを更新するしかないので、個人利用の範囲で使うものと割り切っています。
nasne にも予約できるようにした
途中で nasne にも対応させました。テレビと nasne の両方を持っていると、どちらに録画するかを選べたほうが便利だからです。
nasne は同じネットワークを探して自動で見つけます。番組表から予約するとき、録画先をテレビか nasne かで選べて、予約一覧と録画済み一覧は両方をまとめて表示するか機器ごとに分けるかを切り替えられます。
最新版では、番組表と各一覧にインクリメンタル検索を入れました。入力に合わせてその場で絞り込みます。録画済みが数十件を超えてくると一覧をスクロールして探すのが現実的ではなくなるので、自分で使っていて一番ほしかった機能です。
審査で手こずった話
公開までに、少し珍しい差し戻しを2回受けました。同じことで悩む方がいるかもしれないので書いておきます。
1回目は「このアプリは VPN 機能を含んでいる」という自動判定でした。まったく心当たりがありません。バイナリを調べても NetworkExtension フレームワークはリンクしていませんし、VPN 関連の権限も持っていません。
原因は説明文に書いた「VPN」という単語でした。リモ録はテレビと直接やりとりするので自宅のネットワークでしか動きません。外出先から使いたい場合は自分で VPN を用意してくださいね、という案内をアプリ内のガイドと App Store の説明文に書いていたのですが、これが引っかかっていました。該当箇所を消して再提出したら通りました。
2回目は「説明文から Android への言及を削除せよ」という指摘でした。対応機種を説明するために「Android TV / Google TV を搭載した BRAVIA」と書いていたのですが、App Store の掲載情報に他プラットフォームの名前を出してはいけないというルールがあります。こちらは「ネットワーク経由の操作に対応した BRAVIA」という書き方に変えて解決しました。
どちらも機能ではなく文言の問題だったのが印象的でした。アプリの中身は一切変えていません。そして文言を直すためだけにビルドを作り直す羽目になったので、次のバージョンではアプリ内のガイドを Web ページへのリンクに変える予定です。そうすれば文章の修正に審査が要らなくなります。
SideView の終了まではまだ時間がありますが、使えなくなってから慌てるより先に移行先を確かめておくほうが気楽だと思います。同じように困っている方の役に立てばうれしいです。