Vibe Codingはプロダクトビジョンがすべて
最近自分用のアプリを作ろうと、せこせことClaudeCodeを動かしてアプリを開発している。
プランはProなので正直そこまで動かせない。プロンプトなんて3回くらい大きめの依頼をしたらセッション上限に達してしまう。でもそれでも十分な未熟な使い方をしてしまっている気がする。
変遷
ClaudeCode Desktop
最初はClaude Code Desktopからゆるく指示をしていた。作りたいアプリ像のヒアリングもしてもらったし、アプリの微妙な所かあれば逐一指摘して修整を走らせていた。
ClaudeCode in Terminal
しかしある時Skillsを使ってみたいと思い、/pluginsで使う方法しか分からなかったのでClaudeCodeをターミナルで使う用になった。
ただ指示の仕方は変わっていなかった。逐一お願いしたいことがあればPlanを立てて、実装後UIや動作を確認し、意図と外れていることがあれば改善点として伝えた。大きな手戻りになる時もあり、フラストレーションが溜まった。
Linear
ClaudeCodeがコードを書いている時間に自分は暇だった。この間にゲームやYouTubeを見ていることが多かったが、ある日「先にissueとして作っておいて、受け入れ条件を言語学しておけばClaudeCodeがタスク終わったらすぐ次のを渡せるのでは」と考えた。
実際これは正しく、ClaudeCodeがせっせこと動いている間に自分がアプリの改善点や追加機能を考え、Issueを作り、受け入れ条件を埋めていった。実装完了後に受け入れ条件の項目をひとつずつ確認していき、まだ実現できていないところは、そこを実現するように依頼をした。これで遊休時間が大きく減った。
(しかもLinearはワンクリックでIssueな内容をプロンプトとしてClaudeCode等に投げて実行することができる)
本題に戻る
このLinearで受け入れ条件を書くようになってから強く感じたことがある。それはプロダクトビジョンの有無だ。
プロダクトの思想といってもよい。つまり、どのような人物のどのようなペインを解決するために開発しているのか、を明確にイメージ出来ていないと、生まれるのはただの魚に足が生えた木偶の坊であるということだ。
プロダクトビジョンという芯がないと機能は思いつきの継ぎ接ぎになり、不気味感が拭えなくなる。
更にいえば、適当に指示をしてもAIは作ってくれる。逆にそれがたちが悪い。人間は先入観にどうしても引っ張られる。
それはUIモックでも同じであり、「良くも悪くも、見せられたものをベースに考える」のが思考の起点になる。これが非常に厄介である。
プロダクトビジョンやプロダクト思想がない場合はこれが顕著に悪さをする。意味がありげなダッシュボードに、意味がありそうなタグ機能、意味がありそうなメタデータ…意味がありそうで、そこに意味が込められていない機能が爆誕する。
そして人間はそれを見て、強引に意味づけようとする。この行いによって意味付けられた機能は……無意味だ。
そんなことを考えながら、自分のプロダクトのプロダクトビジョンは何だろうか?と自問する。
何だっだろうか、何を解決しようとしたのだろうか、ただ既存アプリにサブスク費用を払いたくなかっただけなんじゃないだろうか…。
ちょうどClaudeProの1週間リミットが来たタイミングだったので、考えてみることにする。