前回の記事はこちらから

土台となるシステム基盤は、企画編で決めた通り、ScriptSpeakのコピーを活用する方針で進めていきます。
Tomoyaということで今回は、機能を「削る」作業が中心の内容になります。
以前自分自身で作り上げたWebアプリ(SaaS)なので、正直そこまで大変ではないだろうと思っていました。ところが、実際に向き合ってみると、想像していたよりずっと複雑さがあり、そこにしっかり向き合うことになりました。
もちろん自分の手を動かしてコードを書く場面はほとんどありませんが、何をVPSに残し、何を削除するのかという方針を決めるのは自分自身です。
ここは、よく考えながら選択していく必要がありました。
まず調査だけをCursorに依頼した理由
最初に行ったのは、今のコピーの中身がどうなっているかを、Cursorに調査・報告してもらうことでした。
Tomoyaこれは自分の中でも、かなり有効な進め方だったと感じています!!
なぜなら、最初に現状をきちんと把握しておくことで、後から前後を比較できたり、何が不要かを早い段階で大まかに見極められたりして、無駄な手間や混乱を防げるからです。
調査結果を見て驚いたこと

Tomoya調査結果を見て、想像していた以上にFirebase/GCPに大きく依存した作りになっていたことに驚きました。
同時に、それだけFirebaseという仕組みが便利で、扱いやすいサービスなのだということも実感しました。課金処理についても、FirebaseのExtensionsという仕組みを使ってStripeと連携させることで、大幅に手間を減らせるようになっていて、この点にもFirebaseのすごさを感じました。
そのすごさを感じつつも、今回のテーマにはそこまで高度な機能は必要ないと判断し、思い切って削除していく方針を決めました。
ここは少し悩ましいポイントでしたが、「今回のテーマに照らして本当に必要かどうか」を基準に、1つずつ判断していくことにしました。
[PR]以下のリンクから月額プランを契約すると、初月は半額で利用できます。コストが心配な方でも、最初の1か月は最低10ドルから試せるので、気軽に始めやすいと思います(解約も簡単にできます)。
決めなければならなかったこと

Tomoya大きく3つ、決断が必要な場面がありました。
基本的に自分しか使わないツールなので、思い切って削除することにしました。
もし将来的に製品として世に出すタイミングが来たら、その時にあらためて機能を足せばいいと考えています。
Tomoya次に「作成した音声データやチャット履歴」をどう扱うかは、少し迷いました。
履歴を残さないとなると、一度きりのやり取りになり、同じ出力を後から振り返ることはほぼできなくなります。かといって履歴を残すとなると、データベースを用意する必要が出てきて、コストや手間も増えていきます。
悩んだ末、「必要であれば残せる仕組み」があれば十分で、すべてを自動的に残しておきたいわけではない、という結論に至りました。
そこで、生成した音声はその場でダウンロードできるようにし、それ以外はその場限りで使う形にすることにしました。これによって、履歴管理用のデータベースが不要になり、保守・運用の手間も減らせます。
Tomoya最後に「UI/UX」については、画面をゼロから作り直すか、既存のものを流用するかで悩みました。
結果的には、「デザインは活かしつつ、機能だけを削ぎ落とす」という方針で進めることにしました。
せっかく土台としてコピーを使っているのに、根本から作り直してしまっては意味がありません。VPSでやりたいテーマにフォーカスして、不要な部分だけを削る方が、手間が少なくて済むと考えたからです。もしゼロから作るのであれば、そもそもコピーを使う必要はありませんし、逆に既存のものをそのまま使おうとすると複雑さが残ってしまいます。
既存を改良し、自分のテーマに寄せていくのが、今回は一番バランスの良いやり方だと判断しました。
7ステップに分けて、段階的に消していく
実際の作業自体はComposer 2.5に任せますが、指示を出すのは自分です。なので、一気に進めるのではなく、段階的に1つずつ機能を削除し、その都度確認する、というルールで指示を出していきました。

| ステップ | ビルド | 備考 |
|---|---|---|
| Step 1 | ✅ | 課金削除 |
| Step 2 | ✅ | 認証削除 |
| Step 3 | ✅ | Firestore 削除 |
| Step 4 | ✅ | VOICEVOX 一本化 |
| Step 5 | ✅ | エディタ簡略化 |
| Step 6 | ✅ | Firebase 設定削除 |
| Step 7 | ✅ | パッケージ整理 + 単体テスト 32/32 |
こうすることで、もしエラーが出たとしても、どこで詰まったのかが明確になり、原因を探す手間やトークンの消費も抑えられると考えています。
これはどんな仕事や研究にも通じることだと思いますが、各ステップでその都度確認することで、エラーや失敗が起きても、原因を調べる範囲が狭くなり、集中して考えやすく、仮説も立てやすくなります。
AI駆動の開発であっても、この基本は変わらないと思っています。ユーザー側からすれば、ただ見守っているだけなので、トークンの消費量までは意識しづらいかもしれませんが、長く・多く使い続けるためには、地味に重要なポイントだと感じています。
数字で見る「軽くなった」実感
最終的に、エディタは約1,900行から約280行になりました。npmのパッケージも215個減り、単体テストは32件すべて成功しています。
Tomoyaこれだけ削減できたことで、メモリの消費量も抑えられるはずなので、素直に良かったと感じています。
こうして目に見える数字として「そぎ落とせた」ことが確認できたのは、軽くなった証拠でもあり、大きなリファクタリングをやり遂げられたことに、自分でも少し驚きました。

感じたこと・気づき
今回、AIを使って調査からそぎ落としの作業までを一通り行ってみて、改めてAIのすごさを実感しました。
正直、コピーを改良するために費やした作業量を振り返ると、下手をすると最初から作り直した方が速かったのでは、とすら思う場面もありました。それでも、今回「既存を改良する」という選択肢を取れたのは、AIがあったからこそだと思っています。
今後、コピーを土台にして既存システムを改良していく機会があれば、同じやり方が再現できるという手応えも得られました。
「調査をして、選択をして、段階的に任せていく」
このプロセスは、いろんな場面で応用できると強く感じています。ただ真似をするのではなく、自分がやりたいテーマや方向性に向けて既存のシステムを活用することで、時間を短縮しつつ、より多くのプロダクトを作り、より集中すべきところに力を注げるのだと思います。
Tomoyaこれが元になっているサービスです!
※自分が運営しているサービスです
まとめ・次回予告
Tomoyaこうしてそぎ落とされたシステムを、次はいよいよ自分のテーマに沿って改良していきます。
前回の記事にあった通り、「入力→頭(AI)→音声生成→出力」という流れに沿って組み込んでいく予定です。

GeminiというAIをVPSに実装するのは初めての経験なので、とても楽しみにしています。VOICEVOXがVPS上でどう動くのかも、実際に見てみるのが楽しみです。
以下のリンクから月額プランを契約すると、初月は半額で利用できます。コストが心配な方でも、最初の1か月は最低10ドルから試せるので、気軽に始めやすいと思います(解約も簡単にできます)。
他のVPSは「さくらインターネットから!」

前回のおすすめ記事はこちらから



VPSを使った24時間稼働システムを作成した記事はこちら



コメント
コメント一覧 (1件)
[…] 【非エンジニアが挑む】本番SaaSのコピーからFirebase依存を剥がしてみた […]