バンドのレパートリーのbpm一覧管理とセトリ作成をdiscord経由でclaudeにやらせる

モチベーション

うちのバンドでは、ライブごとにセットリストをbpm prompterで作り、練習中に参照したり、本番でも足元などで表示している。

nekogata.hatenablog.com

これがけっこう便利で(デザインがダサかったりするんだけど視認性のためにあえてだったりする)、まだ体にBPMが入っていないときにこれを見ながらリハスタで練習するのもかなり効率が良いし、リズム隊などカウントを出す側は本番でも足元などにこれをおいて「へんなBPMでカウントを出してしまわないようにする」ということを実現している。ぼくはバンドじゃなくてアコースティックユニット的な編成でライブすることもあって、そういうときもこれでセトリを表示しながらやるとBPMがその日の体調や気分に影響されずらくて良い。

で、これ便利なんだけど、問題がふたつあって:

  • セトリをぽちぽちと入力するのがだるい
  • セトリを組むとき、「あれ、この曲BPMはいくつだっけ」となり、毎回曲を聴いたり調べたりしている

後者はレパートリーとそのBPMをちゃんと一元管理していないのが問題で、「ちゃんとやれ」という話だし、セトリ入力するのなんか5分もあれば終わるんだからこれも「ちゃんとやれ」なのだけれど、バンドマンに「ちゃんとやる」ことを求めるのは、鶏に「飛べ」というようなもんである。

まあこういうめんどうなのは、人間がやるんじゃなくてAIくんにやらせようぜ、というのが令和最新版のトレンドであろう。幸いわれわれのバンドはコミュニケーションをバンド用discordサーバーで取っている。というわけで、じゃあdiscordでbotに指示を出したらレパートリーを管理、更新してくれたり、BPM prompterでセトリ作ったりしてくれるようにすれば、スタジオに入っているときだとか寝転びながらバンドの打ち合わせをdiscordでしているときとかにパッと指示出してシュッじゃんね、ということである。

手法

  • discord にbotを常駐させる
    • こいつはrailwayで動かす
  • botの内容
    • claude のapi keyをわたしておく
    • レパートリー用のシートへの書き込み/読み込み権限渡しておく
    • toolsは以下のように汎用的なものを用意しておく
      • レパートリーのスプシを全部読むというツール
      • 任意のセルを書き換えるというツール
        • ここはかなり強めの権限をLLMに委譲することになるので、データ破壊が怖いところではある。が、べつにバンドのレパートリーが破壊されたからってなんぼのもんじゃい。と思っている
      • セトリをBPM prompterで作成する

肝は、BPM prompterの作りで、こいつは実はサーバー的にはステートレスで、曲順、曲名、bpmなどはすべてURLに保持するようになっている。つまりBPM prompterでセトリを作成する = URLを作成する、なのである。だからこういう使い方と相性がいいのだわね。

demo

こういうことが可能となった

さいごに

なお、この仕組みを作るにあたってコードは自分で一行も書いていない(ぜんぶClaude Codeにやらせた)。レビューはざっとしている。すごい時代になったもんである。