sss-music-player 制作ノート

2026-11-01

目次

Note

日用品のようなソフトウェアを作ることが簡単になりました。私は自分のちょっとした作業を助けてくれる道具を必要なときに必要なだけ作っていますが、このときエージェントをどのように使ってゆくべきかについて、まだ自分のなかに混乱があります。

この混乱に取り組むため、ノートが必要です。開発しながら自分がなにを考えていたかについて、エージェントとの関わりを念頭に置きながら #制作ノート として書いてゆこうと思います。

制作したアプリ

sss-music-playerは、PC上に散らばった古い音楽ファイルを整理するアプリです。

自分用です。

整理画面。左が整理すべき曲の候補。選択すると、同じ曲が異なる場所に別の方法でいくつも保存されていることを確認できる。

動機

アプリを作ろうと思ったきっかけは、Spotifyを解約したことです。新規アーティストの開拓をあまりしなくなって、ほとんど同じ曲をリピートしていましたし、しかもそれらはCDとして持っている曲でした。とはいえ、解約してみて気づいたのは、手元にあるのはしばらくリッピングしてなかったCDの山と、古くてぐちゃぐちゃになったたくさんの音楽ファイルだということでした。

私の手元のPCには大量の音楽ファイルがあります。最初にCDからリッピングしたファイルはもう20年以上前のもので、PCを買い替えるたびに渡り歩いて今に至ります。この過程ではいろんな問題が発生しました。

  • 仕事柄、複数のPCやモバイルデバイスを使ってきて、ゲーム機もいろいろありました。特定のデバイス上で聴く音楽だけを株分けした結果、ファイルセットの断片化が起こりがちでした。
  • SonyやAppleなど複数のオンラインストアからもデジタルデータを購入して、専用のアプリで再生してきました。その結果、それぞれ保存場所や保存形式が異なってしまいました。
  • 古いツールで入力したID3タグには文字コードがShift_JISのものがあって、現在では文字化けしてしまいます。

こうして20数年のうちに、私の音楽ファイルは同じものが別のフォルダに重複して存在したり、同じ曲が異なるエンコードやbpsで複数通り保存されていたり、タグで曲名を確認できなかったり・・という理由でこんがらがってしまいました。

重複した音楽ファイルを人間の手で整理するのは不可能に思えましたが、自動で要不要を判断するのも難しそうでした。であれば、整理を助けてくれるツールを、よく慣れた開発方法でさっと作ってしまえばよいと考えました。デスクトップアプリ作成においてよく慣れた開発方法は、JavaFXでMVVMパターンを採用することです。リスト表示や入力フォームを中心とするアプリは、このやり方で定型的に作れる資産を持っています。JavaFXは音楽再生もできるため、メディア処理で悩む点も一つ少なくなります。

経過

2026年8月9日に開発開始。

エージェント(Claude Code)とテスト駆動開発(TDD)で進めました。開発のワークフロー、コードやテストの書き方は、JavaFX+MVVM開発専用の自作スキルで制御しました。

テスト駆動開発では、私がテスト項目を作って、エージェントが書いたテストコードから始めるRGRサイクルを回しました。私はテストコードと本体コードをレビューするだけでした。このころはまだエージェントを用いたTDDに対して無批判のまま採用しています。のちに考えたコーディングのギア比に当てはめると #3速 に該当します。

技術的な気づきのうち、大きなことは1つです。.mp3と.m4aを処理対象にしたところ、メタデータの扱いが違うことに気づきました。.mp3はメタデータをID3タグとして持つことを理解していましたが、.m4aについては深く考えたことがありませんでした。

ATRAC3のファイルは数が少なかったので、別途ffmpegでmp3に変換してしまいました。

技術的な脱線が1つです。自分でプログラミングを進めている間には、こういうことを試してみよう、という脱線があるものです。Javaでのnull安全について、試しにJSpecifyを採用してみることを思いついたため、調査と実装を進めました。結果はADR(Architectural Decision Record)として残しました。

音楽ファイルの整理機能と試聴機能を付けたところで、このまま音楽プレイヤーとして利用できたほうが都合がいいと思いました。既存のプレイヤーにちょうどいいシンプルなものがなかったためです。このため、日常的に必要なプレイヤー機能も追加して、いまではSpotifyの代わりにこちらのプレイヤーで自分の音楽アーカイブを聴いています。

プレイヤー画面。自分が使う機能だけ。

機能面では8月中にだいたい完成していますが、その後もときどき手を入れています。他を5速でたくさん回しているような合間にこちらを3速で進めると、のんびり散歩をしているような気持ちになれますね。

ストーリーマップ

開発時にはストーリーマップを使っていません。下記は開発がひと段落ついた状態で、練習のために描いたストーリーマップです。

sss-music-playerのストーリーマップ