← 記事一覧に戻る

音楽再生アプリを作っています

📁 Swift, 開発swift📅 2026年07月05日 04:57

みなさんこんばんは、寝付けないかんぬきです。
久々の更新ですね。みなさんいかがお過ごしでしょうか?

僕はここ最近、アプリやらターミナルエミュレーターを作っています。
作っているといっても、Claude とあれこれやり取りしながらやっているので、作っているというよりは指示を出しているに近いです。(実際僕はコードを書いていないので……)

で、今回は徐々に形になってきた音楽再生アプリについて書いてみようかなと思います。 画像 画像がデカいっすね。


皆さんは、“Daycore” と呼ばれる音楽ジャンルがあるのをご存知でしょうか?
いわゆる Nightcore と呼ばれるジャンルの対となる、音楽のテンポを落とし、ピッチを下げた(要は再生速度を遅くした)楽曲などを言います。Anti-Nightcore とも言うそうです。

このアプリは、普段スマホで再生している音楽を簡単に Daycore に変えてしまおうという発想から生まれたアプリです。
(そんで皆さんにも Daycore の良さが伝わるといいな〜〜などと考えています)

というのも、僕は普段音楽を聴くときに変なクセがあり、音楽の再生速度をわざと遅くして、チルいゆったりとした雰囲気に変えて聴いています。
なぜそうしているかと聞かれると、なぜかは自分でも分からないのでうまく説明できないのですが、なんかメロくてエモーショナルな感じがしたり、落ち着く感じがするからやっています。

そんなアプリの中身をさっそく見ていただきましょう: 画像

下に並んでいるボタンで再生速度をプリセットから選べるほか、自分で再生速度とピッチをスライダーで調整してお好みの具合に調整できます。心地いい再生速度って個人差があるのでね。

画面が気見れてますが、それぞれ:

  • Original

  • Daycore soft

  • Daycore

  • Daycore Deep

  • Nightcore

と並べています。
これらのプリセットは、普段僕が聞いてる再生速度を算出して適当に決めました。
僕にとって都合のいい作りになっています。最後の Nightcore はおまけです。

画像 ↑ Dynamic Island でのアートワークの表示の様子

画像 ↑ロック画面、通知センターでのアートワークの表示の様子

今回の画像は iOS 版ですが、Android 版も同時並行で作っています。
画像 ↑ 左: Android端末 右: iPhone


このアプリを作成する上で特に大変だったのが、アートワーク、いわゆるジャケット画像をメディアコントロールに渡す処理に手こずりました(主に Claude が)。

メディアコントロールに画像を渡す処理に何度か挑戦してみたのですが、画像を渡す瞬間にアプリがクラッシュする現象が続き、一時は実装を諦めたほどです。
そんなメディアコントロール周りの実装を、今何かと話題な Anthropic の Fable 5 という最新モデルに担当してもらったところ、これまで Opus 4.8 でどうやっても実装できなかった処理をあっさりとやってのけてくれました。すごいぞ Fable!

Android 版の開発言語の Kotlin は読めないので、そっちは Claude に全部任せっきりなのをどうにかしないといけない……
Android 版は音楽周りを Media3 と呼ばれるもので管理しているらしいのですが、それ特有の不具合にも何度か遭遇しました。
これもログを見て、実際に動きを検証して、Claude に指示を出すなどして形にしていきました。

結構かかったな、長かった。

アプリストアで公開できればいいんですけど、どうやら Apple の App Store では、アプリ名が全世界で一意でないといけないというような制約(?)もあるので、公開時には名前が変わっているかもしれません。Daycore とか特に名前を取りたがる人が多そうだもんな。困った。

そんなこんな、公開できるかどうか分からないアプリを主に自分のために作っています。
冒頭でもちょっと名前を出したターミナルエミュレーターのために Apple の Apple Developer Program に課金してしまったし、Google の同じような、Play Store で配布するための権利も課金する予定でいるので、それを取り戻せるだけのアプリは作らなきゃ。

それでは、眠気が出てきたので今回はこの辺で。


【追記】
Android 版 Daycore の配布ページを公開しました。
ベータ版の扱いのため、動作が不安定です。