読者です 読者をやめる 読者になる 読者になる

俺の記憶ストレージ (Part 1 & 2)

Stay Tuning 札幌 Friday Night

iTunes Matchが無音になる問題

iTunes

iTunes - iTunes Match - Apple(日本)

 

サービス名がよく分からなくなっているiTunes Match。Apple Musicが出てきてからiCloudミュージックライブラリと呼ばれたり、はたまたiTunes Matchという表記が残っていたり。

 
最近Appleから届いた「自動更新しますよ~」メールでは「iTunes Match」だったので、サービス名が「iTunes Match」で、iTunesのメニューには「iCloudミュージックライブラリ」って書いてあるから機能としては「iCloudミュージックライブラリ」なのかな?ややこしいですね。僕は純粋に「iTunes Match」のサービスだけ使用しています。Apple Musicの3ヶ月無料オペレーションをオプションとして保持したままにしてます。もったいなくて。
 
 
そこで本題ですが、アップロードしたはずの音楽データがなぜか無音になる、という問題が結構多発しています。原因はよく分からなかったのですが結構絞り込めてきました。
 
分かっていることは、
Apple側でマッチしたデータの場合は発生せず、自分でアップロードしたデータのみで発生
Mac/Windows版のiTunesでは発生しない(今のところ)
iOS(9.3.1)で発生、バージョンは覚えてないがこのバージョン以前でも発生
・同じアルバムでも発生する曲と発生しない曲がある
iOS端末を初期化しても変わらない、つまりサーバー側から落ちてくるデータの問題っぽい
 
当然ですが、アップロードに使用したローカル環境にある音楽データは再生できてます。
 
で、いろいろ試行錯誤してみました。
 
①一旦、iCloudミュージックライブラリにアップロードしたデータを削除して、再度アップロードしてみる。
  → ダメでした。相変わらず、MacWindowsでは問題なし(当然ですが、ローカルデータは削除した後にダウンロードして再生してます)で、iOSだと無音。これはつまり、曲を削除してもクラウドサーバー側でアップロードした実データは保持していて、それとマッチングしているということなんだろうか。MacWindowsは問題なくて、iOSだとダメってのはよく分からないけど、CDN的なものがあって、それがPC用とモバイル用で別CDNってことなんだろうか。
     
②アーティスト名を変えて、iCloudミュージックライブラリに再度アップロード
  → これもダメでした。
  
③アーティスト名とアルバム名を変えて、iCloudミュージックライブラリに再度アップロード
  → 成功。iOSでも再生されるようになりました。アルバム名を変えるとまったくの別物として認識されるってことなんだろうか。
  
  
 
 
・・・・なんとなくですが、どうもアップロードした時に、Apple側のサーバーが不調の時によく発生するような気がします。これが発生したのがついこの前の5/2辺り。つまり、日本でiTunes Matchのサービス開始してちょうど2周年のメモリアルデイです。この日、なかなかアップロードが終わらなかったり、エラーも出ずに止まっていたりしてました。1年契約なのでそのタイミングでユーザーが解約したりとか、継続購読のためのバッチが走ったりとか、Appleのサーバーが輻輳していたんでしょうかね?そういう時にアップロードしたものがおかしなデータになってしまうような気がします。
 
 
で、ここからは個人的に興味があり、データをどこからダウンロードしているのか気になったのでもう少し調べてみました。
 
まず、WindowsiTunes
 
・自分でアップロードしたデータ
接続先:    s3-ap-southeast-1.amazonaws.com 
AmazonAWS)のS3ですね。つまり自分でアップロードしたデータは結局Amazonクラウドに配置されると。さすがにWindows Azureじゃなかったか。ちなみにDropboxもS3を使ってるそうです。Amazon強し。リージョンはap-southeast、ということはシンガポールですね。ユーザー情報見て近いリージョンを選択してるようですが、ap-northeast(東京)ではない。高いのかな?
 
Apple側でマッチングしたデータ
接続先: audio.itunes.apple.com
※ 所在地を見るとワシントンDC。アップルが自己保有しているサーバーのようですね。プロトコルがhttpなのは、そもそもかつてDRM(*.m4p)がかかっていたからかな?で、httpsにしたところで個人がバラ撒けば関係なくなるからhttpという割り切りなんでしょうかね。
 
で、iOSでも基本的には同じです。ホスト名がちょっと違うだけ。
 
・自分でアップロードしたデータ
接続先:    s3-ap-southeast-1.amazonaws.com
※ PCと同じAWSですね。ただ、ドメインは同じでも取得しているデータは違うのかも。この辺は暗号化されているので、リクエストパラメータとかは見えません。どうなっているのかさっぱり分かりません。
 
Apple側でマッチングしたデータ
接続先:    streamingaudio.itunes.apple.com
※ 同じように見せかけて streamingaudio になってます。これもワシントンDCにあるアップル保有のサーバーっぽいです。
 
 
 
まとめ:
  ・アップロードしたデータはクラウドサーバーに置かれる(AWSのS3)
    で、問題の現象から察するにPC版iTunesiOSでは取得するデータが違うらしい
  ・マッチしたデータはAppleのサーバからダウンロードされる
 
ということになりました。