BMS Folder Checker 開発奮闘記 — 作って、壊して、直して、V61まで来たにょ!

BMSフォルダをもっと快適に管理したい。そんなところから始まった BMS Folder Checker。気づけば修正と高速化を何度も繰り返し、V61まで育っていました。

あんこ。

あんこ。
「最初はフォルダをチェックできれば便利だにょ〜、くらいだったはずなのに……V61!? ぽえー!」
ちゃっぴー

ちゃっぴー
「実データで試して、問題を見つけて、直して、回帰テストして、また性能を測る。その繰り返しでここまで来たにゃん。」

そもそも何をするアプリ?

BMS Folder Checkerは、大量のBMSフォルダを走査して、BMSファイル・音声・動画などの構成をまとめて確認するWindows向けツール。BMSを大量に持っているほど、「どのフォルダに何が足りない?」を手作業で確認するのは大変。そこを一気にチェックするために作り始めました。

作る → 壊れる → 直す → また速くする

開発は一直線ではありませんでした。実際のBMSライブラリで動かすと、動画の指定と実ファイルの拡張子が違うケース、動画定義がない譜面、欠損ファイルなど、机上では見えなかったパターンが次々登場。診断ログを増やしながら、一つずつ判定を詰めていきました。

あんこ。

あんこ。
「バグが出たにょ!」
ちゃっぴー

ちゃっぴー
「よし、再現条件を取るにゃん。」

そして修正後には回帰テスト。直した場所だけではなく、以前動いていた判定を壊していないか確認する。この地味な工程が、バージョンを重ねるほど重要になっていきました。

BMS Folder Checkerの開発のあゆみを紹介するイメージ
作って、壊して、直して──V61までの開発のあゆみ。

V59 → V60 → V61、高速化との戦い

後半は「正しく判定する」だけでなく「大量のBMSをどこまで速く調べられるか」が大きなテーマに。V60では並列解析の性能を測り、V61ではさらにUI結果表示を高速化。「UI 1秒の壁をぶっ壊す編」と呼べるところまで詰めました。

V61時点の実測例では、1,461フォルダ・8,626 BMSファイル規模のチェックを約3.3秒で処理。ストリーミング解析は8,616/8,626件成功し、文字コードのフォールバックは10件。単に体感で「速くなった」ではなく、計測ログを取りながらボトルネックを潰していきました。

V61は機能もだいぶ増えた

V61では設定画面を追加。ログの自動保存、古いログの自動削除、保持日数、詳細診断情報、開発者向けベンチマークなどをまとめました。集計には「音無し」カテゴリも追加し、結果を見た瞬間に状態を把握しやすくしています。

一方で、設定保存や診断ログの扱いなど「まだ詰めたい部分」も残っています。完成したから終わりではなく、使って気づいたところを次へ持っていくのもこのアプリらしいところ。

気づけば約4,700行

V61のソースを数えてみると、C#コードは4,603行、対象全体では4,693行。中心となる MainForm.cs だけで3,646行、RegressionTests.cs は842行まで育っていました。最初の「ちょっと便利なチェッカー」から考えるとなかなかの巨大化です。

あんこ。

あんこ。
「4,700行……最初の自分に見せたら逃げそうだにょw」
ちゃっぴー

ちゃっぴー
「次はGitで履歴もちゃんと育てながら進めるにゃん。V61を区切りに、次の開発をもっと安全にするよ。」

そして、まだ続く。

BMS Folder Checkerは「完成品を一発で作った」アプリではなく、実際に使って困ったことを一つずつ直して育ててきたアプリです。作って、壊して、直して、測って、また作る。たぶんこれからもそんな感じで進化していきます。

あんこ。

あんこ。
「次はV62……? また何か思いついたら増えるにょ〜!」

未分類

Posted by anc0