コードを書くのをやめた。Claude Codeに月商300万のSaaSの全コードを書かせ、完全ソロ運用しているという話。
私は現在、B2B向けのニッチな自動化APIミドルウェアをSaaSとして完全な個人で運用し、広告費ゼロ・従業員ゼロで毎月およそ300万円ほどのMRR、定額の月次収益を生み出している。しかも実を言うと、この半年間、エディタを開いて人間が手入力する従来のコーディング作業など1秒たりともおこなっていない。ローカルのターミナルからClaude Codeを呼び出し、AIに要件と仕様を突っ込んでシステム全体を保守拡張させているだけだ。
コードを手書きする時代は終わった。ではエンジニアは何をすれば勝てるのか。本当に機能するAIネイティブ時代のSaaS個人開発と、B2Bマーケティングの泥臭い現実を、書き殴っておく。
エディタを捨てろ。Claude CodeとStripeの組み合わせで人間をシステムから排除しろ
自分が個人運用しているSaaSは、某有名な海外製巨大ERPパッケージが未だに吐き出し続けている狂気じみたXMLの非同期SOAPインターフェースを、クリーンでステートレスな現代のRESTful JSONに変換してキャッシングするただのプロキシサーバーである。
数年前、そのERPと社内システムを連携する案件で血を吐いた原体験から怒りに任せて作ったものだが、これを手作業でメンテし続けるモチベーションなど到底維持できない。そこで半年前にフロントをNext.jsのApp Router、バックエンドとDBをSupabaseというシンプルなスタックに統一し、コーディングを全てCCに引き継がせた。
やり方は至極簡単で野蛮だ。ターミナル上でclaudeコマンドを立ち上げ、あの最悪なERPの500ページあるクソ英語仕様書のPDFとSupabaseのスキーマをコンテキストとして読み込ませる。あとは人間ならミスしがちなStripeのWebhookによる非同期の決済ライフサイクル管理を実装しろと指示を出した。
インボイスの決済完了とセッション完了イベントが同時に飛んできた場合のDB更新の順序崩れや、API側の処理の冪等性の担保といった面倒な部分は全てAIにテストコードごと生成させる。ローカルでテストを回し、CC特有のAgentモードによる自律的な自己修正ループが回り切るのをターミナルのログを見ながらボーッと見つめるだけだ。たまに無限ループに陥る時だけ人間が手綱を引く。完成したコードがどれだけダサくても絶対に気にしない。SupabaseのRow Level Securityで深刻なデータ漏洩の脆弱性がないかだけ人間がコードレビューし、即日本番のVercelへデプロイさせる。クリーンアーキテクチャなんてユーザーは誰も評価してくれないのだ。
絶望的なエラースタックトレースにSEOの狙いを絞れ
QiitaやZennの自称ハスラーたちが絶対に触れない、初期の集客について種明かしをしよう。広告費も人脈もないぼっちの個人開発者がSNSで宣伝をバズらせようなどと色気付くと必ず死ぬ。エンタープライズのニッチなミドルウェアツールは、Product Huntで一位をとろうがバズろうが1円にもならない。
私が顧客一本釣りに使ったのは、徹底したエラーログ検索への張り込みだ。
ターゲットのERPを触る世界中の哀れな開発者たちは、ドキュメントのどこにも記載されていないXML解析エラーの謎の例外スタックトレースであるエラーコード番号304をターミナルに突きつけられ、真夜中に発狂しながらそのままGoogleにそのエラー文字列をコピペして検索する。
私はあえてDev.toや英語の個人ブログを立ち上げ、その意味不明なエラーメッセージとシステム特有の奇妙な挙動を一言一句そのままタイトルに据えた技術記事を大量に生成・投稿した。解決のためのシェルスクリプトをGithub Gistにも貼り付けたうえで、最後にこう添えるのだ。
「一時しのぎのキャッシュ制御とこの再起動スクリプトの管理を自社インフラでこれ以上背負い込みたくないなら、こっちのエラーハンドリング済みのマネージドなプロキシAPIへ月額30ドルで流し込んだほうが早いぞ。」
これが検索意図の完全なジャックだ。月間にたった20回しか検索されない絶望的なロングテールキーワードだが、コンバージョン率は異常な高さを誇る。納期とクソ仕様に挟まれ、明日の朝までに外部連携バッチを動かさなければクビが飛ぶアメリカ西海岸の担当者にとって、Googleのトップに光り輝く月額30ドルの課金リンクはもはやオアシスに見えるのだ。マーケティングなどと言いながら無意味にTwitterのフォロワーを増やしている暇があったら、インターネット上の墓場みたいなフォーラムから世界中の死に物狂いな悲鳴を一つでも多く拾い集めろ。
運用で最も憎むべきは問い合わせである。CS窓口は全廃しろ
毎月定額でお金をもらっているから手厚くサポートをしようという思想は、個人開発を一瞬で破綻させる諸悪の根源だ。精神力はクレーム対応から順番に削られていく。
このSaaSには一般的な意味での問い合わせフォームを設置していない。ユーザーのアカウント設定ページにはStripeのカスタマーポータルのURLがデカデカと貼られているだけだ。プラン変更やクレジットカードの更新から解約処理に至るまで、全自動で顧客に自己完結させるUIを徹底している。
退会率の低下を防ぐために解約ページを階層の奥深くに隠すようなダークパターンは狂気の沙汰だ。退会したい顧客を引き留めたところで、彼らは数日後に鬱憤を溜めてクレジットカード会社にチャージバックという一番重いペナルティ処理を申請してくる。去る者は最速のワンクリックでDB上のトークンやキャッシュデータ諸共完全に吹き飛ばして帰らせろ。それで浮いた余暇の時間とメンタルの平穏で新しいエラースタックトレースの記事をもう1本執筆した方が遥かに効率的だ。
仮にどうしてもプロダクト起因のエラーで障害ログが飛んできたとしても、今では自動監視ボットがログを丸抱えしてCCのエージェントへ送信し、自動でエラー原因の分析からソース修正のプルリクエスト作成までをおこなわせるフローを回している。自分の業務といえば翌朝に手元のスマホからGitでマージを承認するだけだ。人間が手入力で回答文を作り始めた瞬間にアーキテクチャの負けだと思え。
プログラミングで金を稼ぐという事は、テスト用の綺麗なコードをなぞることではない。他人が直視したくない汚水のようなレガシー仕様を浴びて、誰かが泣き叫びながら書き込んだニッチな痛みを回収し続けることだ。そこへ向けて自動コード生成エージェントを弾丸として撃ち込み続けろ。全てをAIにやらせ、泥水の中から砂金を見つける泥臭い思考の側だけに全神経を振り向け。
Discussion
情報共有ありがとうございます🙏
最高の記事でした⭐️⭐️⭐️⭐️⭐️💯
まさにニッチ。
「SaaSは死んだ」のド真ん中ですね。