Microsoftストアに公開中
YMC OperatorをMicrosoftストアに公開しました。ユーザー募集中です。アプリの概要についてはこちら。
製作の経緯
PC用のMusicCastアプリが無い
ヤマハのネットワークスピーカーであるMusicCast製品を購入しましたが、純正の対応アプリがAndroid向けとiOS向けしか用意されていませんでした。PCを操作している時にわざわざスマホを取り出して曲の変更等を行うのは面倒です。ヤマハに問い合わせましたがPC向けアプリを出す予定は無いとのこと。
Windowsストアでサードパーティ製品を探してみる
探してみたけど国産と思われる物は無く、海外製もあまり種類がありませんでした。しかも無料のものや¥300程度で入手出来るものは音量調整とかしか出来ない・・・
自作してみることに
純正アプリの通信内容を解析して曲の変更が出来るアプリを自作することにしました。はじめはデスクトップアプリで作ろうとしていましたが、販売したかったのでUWPアプリに方向転換しました。UWPアプリは初めてだったのでUI設計にかなり苦労しました。おまけにネット上の情報が少ない、Microsoftの資料は分かりづらい、日本語の情報少ないで苦労しました。
MusicCast仕様解説
アプリを製作する中で調べたMusicCastの仕様について、解説します。少しマニアックな内容になります。一部推測の部分もあります。
メーカー公式情報はこちら。
インターネットとMusicCastの接続
基本的にDHCPサーバーからIPアドレスを付与して貰って接続します。メーカーはこの動作しか保証していないようですがMusicCastにあるWebサーバー機能にブラウザでアクセスすると、DHCP機能を停止出来そうです(通信出来なくなったら困るので試してはいません)。ストリーミングサービスは製品にアカウント情報を保存して、起動時にサインインするようです。そのため、スタンバイから復帰後、ストリーミングサービスにアクセスまでに10秒程度かかります。
純正アプリの通信解析方法
仮想PC上に建てたプロキシサーバーに通信を経由させる方法で行いました。俗にいう中間者攻撃と同じ手法ですね。プロキシサーバーでHTTPS通信も解析出来るようにサーバー証明書を発行して純正アプリを入れたスマホにインポートしました。
MusicCastと純正アプリの通信
MusicCastデバイスにはUPnP機能が組み込まれているため、初期設定を行えば同一ネットワーク内の端末(スマホ、PC等)から発見可能です。通信はUDPプロトコルを使用して行います。MusicCastデバイスはWebAPIを実装しており基本的にはGETメソッドでクエリを送信して操作を行います。しかしAmazonPrimeの検索機能はPOSTメソッドで秘匿されて送信されており、残念ながら解析出来ませんでした。
MusicCastの接続不良
ECサイトのレビューなどでアプリから操作出来なくなる症状の報告がありますが、IPアドレスのリースが終了し、変更となった場合に数分間クエリを受けなくなる症状を確認しています。詳しく解析していませんが装置情報等、GETメソッドを使用しない通信は出来るのにクエリは受け付けてくれなくなるように思います。