AppleMusicAPIで遊んでみる

概要

本当は「最近発表されたSwiftUIのコンポーネントを使ってサンプルアプリつくってみた」みたいな物を書きたかったのですが秘密保持契約(Non-disclosure agreement)に引っかかる可能性があるので今回は今作っているアプリで使用を検討しているAppleMusicAPIを使っていろいろ試してみようと思います。

AppleMusicAPIを実際に使用するまで

AppleMusicAPIを使用するにはDeveloperサイトであらかじめMusicAPI用のIDを作成したりする必要がありますが他の方などで取り上げられていると思うのでprivate keyを作成する工程はスキップしようと思います。

AppleMusicAPIでリソースにアクセスする際に必要になってくるものが主に2つあります

  • Developer token
  • User token

カタログ情報にアクセスする際にDeveloper token、ミュージックライブラリ情報にアクセスする際にはDeveloper tokenとUser tokenが必要です。なのでAppleMusicAPIはカタログ情報を使用するだけならユーザーがAppleMusicに加入しなくてもアクセスすることができます。 これは https://music.apple.com/ の提供されているコンテンツを確認してみるとイメージしやすいです。

Developer tokenを生成する

Developer tokenを生成するには今回スキップしたkey iddeveloper idprivate keyを使用して生成します。 実際にDeveloper tokenを生成するためのモジュールをSwift packageで実装してみました。

https://github.com/g4zeru/AppleMusicJwtManager

このモジュールを使用してtokenをリクエストごとに生成します。

User tokenを生成する

User tokenの方は非常に簡単で、Appleが提供しているStoreKitのSKCloudServiceControllerのUser token用のメソッドから取得できます

遊んでみる

アルバム情報の取得

curl -v -H 'Authorization: Bearer (developer token)' "https://api.music.apple.com/v1/catalog/jp/albums/1490256978"

上記で自分が最近頻繁に聴くYOASOBIの「夜に駆ける - Single」の情報を取得することができました。

アルバムの情報にはアートワークを取得するためのURL情報や、楽曲のプレビューリンクなどが添付されています。

楽曲をユーザーライブラリに追加してみる

curl -v -X POST -H 'Music-User-Token: (user token)' -H 'Authorization: Bearer (developer token)' "https://api.music.apple.com/v1/me/library?ids[albums]=1490256978"

先ほど取得したアルバムをユーザーのライブラリに追加します。curlで試した際は409が帰ってきてしまい上手く動作確認することができませんでしたが、URLRequestでPostした場合は正常に動作することが確認できました。リクエストに成功すると、デフォルトのミュージックアプリでも追加されていることが確認できます。

まとめ

今回は非常に簡単にAppleMusicAPIを使ってAppleMusicにアクセスしてみました。ネイティブアプリケーションだけでなくブラウザアプリケーションでも動作するのでいろいろ試してみる価値がありそうです。

プロフィール

てらにゃん

19歳学生。よく書くプログラミング言語はSwift, Typescript。業務委託のお仕事はお断りさせていただいています。インターン、アルバイトのお誘いは大歓迎です!

Contact me

Twitter: @tera_ny
Github: @g4zeru