先週はじめてAIエディタCursorに触れて、「なにもコードを書かないでもそこそこ動くものができる」その能力に驚きました。
sakaik.hateblo.jp
次は他のジャンルのものを作ってみようと思っていたのだけど、もう少しデスクトップアプリの作成能力を試してみたいと、mp3プレイヤーを作ってみました。
なぜmp3プレイヤー
語学のお勉強をしようとすると、いつも雑誌や書籍についてくる(というか最近はダウンロード)mp3の扱いに困ります。
Windowsでのmp3プレイヤーはどれも機能が多すぎるか、逆に欲しい機能がないかのどちらか。 しばらくfoobarを使って見たけど私には高機能すぎて。
例えば CNN English Express という雑誌を買ったとするじゃないですか。mp3をダウンロードできるわけですよ。60トラックくらいあるやつ。
特定のトラックを何度も聞いたり、パラパラと本をめくりながら、気になったページのトラックを聞いたりというのをさくっとやりたい。何ならプレイリストの扱いとかを自分好みで操作できるようなものがほしい。
そんな背景があり、今回mp3プレイヤーを題材としてみることにしました。
格闘すること数時間
再生デバイスを選択できるようにして、プレイリストをドラッグ&ドロップで作って、再生したり巻き戻ししたりする、という最低限の機能は、Cursorさんと何度かやりとりして、数十分でできました。これなら2時間で全機能完成だ!とも思ったのですが、さすがにそこまでは甘くなかった。
再生位置を表示するためのプログレスバーの処理と、曲が変わったときの処理との関係や、ファイル一覧をD&Dしたら勝手に再生が始まってしまうのを抑止できず(これを抑止すると1曲が終わったときに次の曲に行く処理が動かなくなる、、、というのを5往復くらいやりとりして解決せず)といった問題に悩まされたりして、結構時間がかかってしまいました。結局自分でコードを読んで、再生処理の開始のトリガがどこにあるかを突き止めて、手作業でステータス管理の部分の処理を修正しました。前回のように「完全にソースコードも見ずに」完成にたどり着くことはできませんでした。
その後数時間かけて、設定情報のファイルへの保存やボタンのアイコン化、使いやすくなるようなキー操作等のアサインなどをして、一旦の完成となりました。
総時間10時間くらい操作していたかな。何度もやり直したり、細かいところに拘ったりしたところで時間を浪費した部分もあるので、自分でちょっと使いたいんだという程度ならば割り切り度合いにより「あっという間」に完成できると思う。やっぱりCursorすごい。ベテランが丹精込めて作り込んだものとは比べるまでもないですが、わずか1日足らずでこんな機能が実現できてしまうことに驚きです。だって私、Pythonでのmp3再生方法とかID3情報取得方法とか全然知らないですよ。
完成品の画面例:

使って見てください
上で書いたようなきっかけで作ったものなので、同じようなツールが欲しいなと思っていた人には、そこそこ響くのではないかと思います(音楽プレイヤーだけに)。
次回起動時にもプレイリストとか再生デバイスとか画面サイズとかが前回終了時の状態になっているなど、細かいところ結構作り込んでいます(作ったのはCursorさんだけど指示したのは私)。あとカーソルキーでの再生操作も便利。左右キーで5秒戻し行き。ctrl-左右キーで10秒とか移動できます。
制限事項としては、ボタン制御まわりがまだ甘いです。再生リストが存在しないのに再生ボタンが押せたりとか、ですね。ボタンアイコンも分かりにくいのですが、ツールチップ表示がうまく作れない(作ってもらえない)ので難航しています。ちなみに一番右のボタンは1曲リピート再生です。気が向いたらこの辺りもしっかり調整していきたいところです(割り切るのかしっかり作り込むのか、方針がまだ定まっていないのですが)。
GitHubで公開しています。Windowsでただ動かしてみたいだけの人は release/ にあるexeファイルを使ってください。
github.com