2015年5月にサービスの提供を開始し、配信楽曲数は4,000万曲を超える定額制音楽ストリーミングサービス「AWA」
先日「AWA」では、気になる音楽に向けてスマートフォンをかざすだけで音楽の波形を認識し、数秒でアーティストと楽曲を特定することができる新機能「音楽認識機能」をリリースしました。
(参考:「音楽認識機能」説明動画)
Developers Blogでは、この「音楽認識機能」発案者であり「AWA」担当Androidエンジニアの沖本と、iOSエンジニアの小梛にインタビュー。
AWAならではの「音楽認識機能」の特長や開発上の工夫、苦労した点など詳しく話を聞きました。
沖本 友一 (右) 「AWA」 Androidエンジニア。2014年サイバーエージェント中途入社。 入社後はグループ会社のサムザップでゲーム開発に携わった後、2015年2月にAWA株式会社に出向し、現職。
小梛 直人 (左) 「AWA」 iOSエンジニア。2016年サイバーエージェント新卒入社。入社と同時にAWA株式会社に出向し、現職。
1年前の「AWA」では実現できなかった
ーーご自身の担当を教えてください
沖本:「AWA」でAndroid開発を担当しています。
2015年2月にAWAにジョインしてから、これまでNex PlayerからExoPlayerへの移行、Android Auto、再生キュー機能やAndroid Wear用アプリの開発を担当してきました。
小梛:iOSエンジニアとして、これまでiOSのウィジェット機能や認証基盤の入れ替えなどに携わらせてもらっています。
AWAの開発メンバーは現在約25名。サイバーエージェント側でiOSが4名、Androidが5名、Webフロントエンドが4名、サーバーサイドが4名、リコメンドが3名という構成で、avex側で配信バックエンドを開発してくださっているエンジニアが5名いらっしゃいます。
ーーどのような経緯で開発に至ったのでしょうか?
沖本:1年前にデパートで買い物をしていたときに、そこで流れていた曲名を知りたくて、音楽認識アプリを使ってみたんです。曲名は分かったものの、そのアプリ内では音楽再生まではできなくて、「AWAで音楽認識もできれば良いな」と思ったことがきっかけでした。
そこでメンバーに提案してみたのですが、当時の配信曲数(2016年8月時点で3,000万曲)で音楽認識機能をリリースすると、思うように曲が再生できずユーザーがストレスを感じてしまうのではという懸念が上がりました。なのでそのタイミングでは一度断念したんです。
今年に入って配信曲数が4,000万曲を突破したこともあり再度メンバーに提案し、2017年2月からモック開発に着手。Androidで先行して開発をスタートさせました。
リリース後、SNSでユーザーの反応を日々チェックしていますが、ありがたいことに好評な声が多く、すごく嬉しいです。
ーー「AWA」ならではの音楽認識機能の特長はありますか?
沖本:インターネット回線のないオフラインモードでも、録音だけはできる点は「AWA」ならではの強みだと思います。録音後インターネットにつながった際に、録音してあった音楽を認識させるようにしています。
また、認識した音楽がAWAで配信していなかったとしても、リクエストボタンを用意しているのでリクエストすることが可能です。その後、その音楽が配信された際にユーザーに通知するようにしています。
開発当初は、AWAで配信されていなかった場合には「曲がありませんでした」という文言を用意していたのですが、ユーザーにとってもっとポジティブな伝え方ができれば、とリクエストボタンを設けることになりました。
クオリティが不十分であればリリースしない
ーー音楽認識機能リリースにあたって、開発面でどういった点を工夫しましたか?
小梛:リッチなアニメーションやトランジションを実現させるために様々な工夫を行いました。たとえば音楽認識中の画面であれば、音やタッチに反応する水面エフェクトやアニメーションによって認識中であることがわかりやすく、かつユーザーが認識結果を待っている間飽きないようにしています。その他にも検索結果の表示アニメーションについてもユーザーが気持ちよく使えるようにこだわりましたし、画面間のトランジションについては画面間のつながりをわかりやすくするように心がけました。音楽を認識させるときにタップするボタンも、ページが戻る際にはボタンを元の位置に戻らせるなど、一貫性を大切にしています。
まずはデザイナーが画像ベースでイメージを出してくれ、それをもとにアニメーションに落とし込んでいきました。動きのスピードやイージングについては特に指定がなかったので、各プラットフォームごとに最適化した上で気持ちよいアニメーションになるよう心がけました。既存のライブラリなどは使わず、OpenGLを活用しながら全て自分たちで作っています。
沖本:音楽が流れている間に瞬時にアプリを起動させられるようにしたいので、ウィジェットでもワンタップで音楽認識を始められるようにしています。もちろんアプリのショートカット機能にも対応しました。
AndroidもOpenGLを活用しています。ただ、性能が低い端末もあるため、メモリ不足でないかどうか一度チェックします。メモリが不足している場合は、水面エフェクトを表示させないことで、画面が固まったり、OutOfMemoryErrorが発生することを防ぐようにしています。
小梛:また、リリース前に認識機能の精度を向上させるための取り組みとして、AWAチーム内でβ版を配布しました。β版アプリで各メンバーにフィールドテストを行ってもらったところ、データの取得方法が原因で、ハミングで音楽認識するとカラオケバージョンの楽曲ばかりが表示されてしまうといった例もあったんです。それらフィールドテストの例をもとに、最適な認識結果がでるよう閾値などの調整を行いました。
あとはバックエンドの話になってしまいますが「AWA」では日々新しく配信される楽曲データを音楽認識機能とほぼリアルタイムで同期しています。曲名が分からずに検索したい音楽というのは最新のものであることが多いと思うので、最新楽曲の認識率向上は特に大事だと考えています。
ーー逆に苦労した点はありますか?
小梛:一度UI通りに実装して触ってみたところ、iOSチームのメンバーから音楽認識のボタンが主張しすぎなのでは、という意見が出てきました。元々はボタンが真ん中に大きく設置されていたんです。ユーザーは音楽認識による検索をするとは限らないですし、これではテキスト検索に気付けない可能性すらあるため、もう少し控えめにした方が良いのではという話になりました。
(Before)音楽認識のボタンが中央に大きく設置されていた
そこでデザイナーやプロダクトマネージャーに提案し、一部の画面をまるごと再実装する形にしたのですが、使いやすさは大きく向上したように思います。
(After)音楽認識のボタンを小さくし、上部に移動させた
再実装したことでリリーススケジュールは少し延びてしまったのですが、「AWA」ではクオリティが不十分であればリリースはしない方針です。ユーザーの満足度につながる大切なポイントだと思うので、最後までこだわって開発して良かったと思っています。
沖本:私は音楽認識機能におけるプロジェクトマネジメントを担当したのですが、並行して開発を行うのは大変でしたね。各グループのスケジュールや指示を取りまとめたり、何かトラブルがあったときには早急に情報を共有したりということもしました。
また、音楽認識機能のページは、「AWA」の中で最もリッチなUIとアニメーションでできています。ここまでアニメーションを作り込むのは個人的に初めてだったので、その点は苦労しましたが、周りのメンバーにアドバイスをもらいながらサポートしてもらいました。
より使いやすい機能にするために
ーー今後音楽認識機能でもっと改善していきたい点はありますか?
小梛:シンプルですが、認識精度をもっと向上させたいですね。認識をするときにAPIをたたいているのですが、このAPIを改善できると思っています。サーバーサイドのメンバーにも協力してもらい、より高い精度の結果が得られるAPIにブラッシュアップしていきたいです。
さらに、より精度の高いAPIをもとに認識できるようになれば、結果が出るまでの時間を短縮できるようになります。現在、ハミングで認識させる際だけ、裏側で複雑なリクエストを送っているので少し時間がかかってしまうんです。一回のリクエストで精度の高いものが送れるように、速度を向上させていきたいと思っています。
沖本:次のフェーズで改善できればと思っている点は大きく三つあります。
まず一つは、録音した音楽の再生。現在オフラインのときに録音した曲は日付しか記載されていないので、何を録音したかが分かりにくいんです。今後は、録音したものを再生できるようにしたいと思っています。
次に、自動認識機能を追加したいと考えています。たとえばライブ会場などで自動認識機能の設定をONにしておくと、そこで流れた曲が自動で登録されるので、見つかった曲はそのままお気に入りに登録したり、プレイリストに入れたりとすごく便利ですよね。音楽を見つけて、そのまま再生までできる「AWA」ならではの特長がより強化できると思うので、ぜひ実現させたいと考えています。
最後に、まだ配信されていない曲では現在アイコンがない状態なのですが、そういった場合でもアルバムのアートワークを表示できるようにしたいです。
ーーさいごに、今後「AWA」をどう成長させていきたいと考えていますか?
沖本:「AWA」はリリースして今年で3年目ですが、やはりいずれは海外に展開していきたいですね。楽曲の権利関係など難しい面は多いとは思うのですが、世界で挑戦できるプロダクトを目指して日々改善を重ねているので、近い将来「AWA」で世界に進出したいなという思いは強くあります。
直近の話ですと、iOSにはすでにあるのですが、Androidでもギャップレスプレイヤーを作りたいですね。また、曲をスキップした時に次の曲がすぐ再生できるようプレイバックキャッシュ機能を作りたいです。例えば、再生キューに入っている曲の最初の10秒間をバックグラウンドでキャッシュすることによって、ローディングの必要なくオフラインモードのように曲が瞬時に再生されるようになります。
小梛:これからも、機能を拡充していくことはもちろん、ユーザーが深く考えずとも利用できるUI・UXを目指して改善を進めていく予定です。
また開発面では、iOSのトレンドをキャッチアップしつつAWAに適したもの積極的に導入することで、開発効率や安定性の向上を引き続き行っていければと思っています。