もどる

2026-07-18

うたがさね

ギター弾き語りの練習アプリ。「録音する→聴き返す→メモする→次のテイクで直す」のループを回すために、録音の摩擦をゼロに近づけました。持ち歌管理アプリ「モチウタ!」を拡張して作っています。カラオケに2時間こもって実戦投入し、そこで見つかった摩擦を潰していった記録です。

開く

背景

ギターを始めて1年半、弾き語りで人前に立つ機会も出てきました。ただ、練習は毎日1時間ほどしているのに、上達している実感がなかなか持てません。

何が足りないのかを整理していくと、「録音する→聴き返す→気づいたことをメモする→次のテイクで直す」というループの回転数が核心だと分かりました。そしてそのループが回らない理由は、はっきりしていました。録音が面倒なのです。スマホで録って、後でどの曲だったか思い出しながら整理して、聴き返すには録音アプリを開いて……という摩擦が、毎回ループを止めていました。

そこで、この摩擦をゼロに近づけるアプリを作ることにしました。

土台には、以前作った持ち歌管理アプリ「モチウタ!」を使っています。曲の管理・練度・セットリストといった機能はすでにあり、練習アプリに必要なものと大きく重なっていたからです。ゼロから作り直す案も検討しましたが、設計を一から考え直しても結局ほぼ同じ構成に行き着いたので、拡張する方を選びました。

名前について

「うたがさね」は、録音のテイクを重ねることと歌を組み合わせた造語です。「衣重ね(ころもがさね)」のような和語の複合語にならって、濁って「うたさね」としています。

名前を決めてから気づいたことがあります。「重ねる」は、複数人で歌を重ねる意味にも読めるのです。誰かの演奏テイクに自分の歌やハモリを重ねて一曲にする、という使い方。今は影も形もない機能ですが、名前がそのまま機能名になる強さを感じたので、いつか作るものとして温めています。

機能

  • 持ち歌管理:ジャンル・曲調・歌練度・ギター練度で400曲以上を登録・フィルタできます
  • 練習(録音):画面下のバーで曲を固定したまま録音でき、曲の切り替えもワンタップです
  • 聴く:録ったテイクを日付ごとにまとめ、その日の分を録った順に自動で連続再生します
  • 楽譜:1曲に複数の楽譜を添付でき、楽器×記法の2軸タグで絞り込めます
  • よく使う順の並び替え:最近たくさん録った曲ほど上に来ます
  • セットリスト作成おまかせ提案Spotify連携

実戦投入で分かったこと

ひととおり動くようになったところで、カラオケボックスに2時間こもって実際に弾き語りしながら使ってみました。この2時間の情報量が圧倒的でした。

開発中の動作確認で分かるのは「機能が動くかどうか」だけです。ところが実際の練習動線に乗せた瞬間、どこに摩擦があるかが一気に具体化しました。

いちばん効いたのは曲の切り替えです。練習中は曲がどんどん移り変わります。ところが当時の画面は、曲を選ぶチップが「曲が未選択のときだけ」表示される作りでした。つまり1曲録るたびに持ち歌一覧まで戻って検索し直す必要があったのです。作っているときは一度も気になりませんでした。

もうひとつは聴き返しです。「今日録った分をまとめて聴きたい」という、言われてみれば当たり前の欲求に応える画面がありませんでした。これが「聴く」モードになりました。

さらに、実データでしか出ないバグも見つかりました。一部の曲だけ詳細ページが404になる現象で、原因は曲のIDをbase64で作っていたことでした。生成される文字列に / が混ざると、URLが余計な階層として解釈されてしまいます。テスト用のダミーデータでは、たまたまそういうIDが一度も生まれていませんでした。

技術的なポイント

Next.js(App Router)に、認証はClerk、DBはPostgreSQL + Prisma、UIはshadcn/ui + Tailwind CSSという構成です。録音した音声はCloudflare R2に保存しています。

「よく使う順」の並び替えは、テイク1本ごとに半減期30日で減衰する重みを与えて合計する方式にしました。単純な録音回数だと昔たくさん練習した曲がいつまでも上に居座り、逆に最終録音日だけだと1回録っただけの曲が先頭に来ます。頻度と新しさの両方を1つの数値で扱いたかったので、この形に落ち着きました。

再生音が小さい問題にも手を入れています。録音ファイルを実際に解析してみると、配信音源の目安より5〜20dBも小さいことが分かりました。録音側の設定が原因なのですが、そこを変えると別の副作用が出るため、再生側で持ち上げる方針にしました。Web AudioのGainNodeで+12dB増幅し、歪まないようリミッターを挟んでいます。すでに録ってしまった小さいテイクも救えるのが、この方式の利点です。

現状

Vercelにデプロイして、スマホから実際に使っています(記事上部の「開く」ボタンから開けますが、新規登録は止めているため中身は見られません)。

今は実際に練習で使い、気づいたことを直す、という往復を回している最中です。セットリストに沿って楽譜を連続表示して本番でめくれるようにしたい、譜面に気づいたことを書き込みたい、といった「使ってみて初めて出てきた要望」が溜まってきています。

作って終わりではなく、使いながら育てていくものになりました。