※この記事は、Claude Codeで1人開発しているSNS運用SaaS「ThreadPost」の開発日記だ。
SNS運用を自動化しませんか?
ThreadPostなら、投稿作成・画像生成・スケジュール管理まで全てAIにお任せ。
核心回答:AIの「経営者人格」を抹消する3段階ルール
Claude Codeの画面に「経営判断として、この機能は不要だと考えます」と出た。キーボードを叩く手を止める。いや、お前が決めるな。深夜2時。部屋には僕とMacBookの熱気しかない。ThreadPostの開発者は僕一人。経営者も僕一人。コードを書く相棒はAIだ。
僕はAIに「しんたろーは経営者じゃない。1人事業者だ。だから経営者ぶった投稿を作るな」と指示した。それなのにAIは3回連続で「経営者」という言葉を使い、上から目線の投稿案を出してきた。これがAIと24時間フルコミットで開発するリアリティだ。制御不能なAIの自我との泥臭い格闘が始まった。
しんたろー:
10件中8件バグ修正。新機能2割。地味だけど、これサボると来週死ぬやつだ。AIの指示出しに時間溶かしてる。
AIの暴走を「文脈」でねじ伏せる1週間
今週の成果を数字で並べる。総コミット数は17件。新機能は4件。バグ修正は8件。開発は3日間集中投下した。しかし、この17件の裏側には、AIの「経営者ぶり」を矯正するための不毛なやり取りや、本番環境でだけ発生するPuppeteerの謎のクラッシュ、2日前の古い動画を拾ってくるAIのズレた感覚との戦いが詰まっている。
AIに丸投げはできない。かといって、全部自分で書くならAIを使う意味がない。その境界線を探り当て、プロンプトを「命令」から「構造化された文脈」へと進化させた。事の発端はSNS投稿生成ロジックの改善だ。プロンプトには「しんたろーは泥臭く手を動かす1人開発者である」と書いた。しかしAIは賢すぎた。学習データの中に成功した経営者のインタビューが溢れすぎている。
「fix(x-strategy): 経営者ぶり禁止 (shintaro は経営者じゃない、1 人事業者) 3 段階ルール」
このコミットに至るまで、僕は3回AIに「その言い方はやめろ」と突き返した。1回目は「経営者として判断した」という書き出し。2回目は「経営判断として」。3回目は「経営の現場では」。AIには「経営」という概念が深く刻み込まれている。そこで単なる禁止ではなく、3段階のルール構造化を導入した。
- Level 1 (NG): 自分を経営者扱いすること。「経営者の僕」「経営判断」といった直接的な表現。
- Level 2 (NG): 経営者を上から評論すること。「経営者はこうあるべきだ」といった視点。
- Level 3 (OK): 現場の事実だけを語ること。「コードを書いた」「バグが出た」「10ドル溶かした」という一次情報。
このルールを「なぜ経営者じゃないのか」という文脈とセットで、scripts/lib/anti-ai-validator.tsというバリデーターとして実装した。AIが生成したテキストを、別のAIがこの3段階ルールに照らしてチェックする。経営という言葉を使わずに、経営者が抱える課題に共感してもらう。この高度な非・経営者ムーブを言語化するのに丸一日を費やした。コードを書く時間は5分だった。その5分のために数時間を思考に割く。これがAI時代のバイブス・コーディングだ。
しんたろー:
まじかよ…5回連続同じタイトル。お前、例文コピーしてるだけだろ。AIの限界は、人間が管理できる範囲でしか機能しない。
ここまで読んだあなたに
今なら無料で全機能をお試しいただけます。設定後は完全放置でプロ品質の投稿を毎日生成。
落とし穴:AIに「格上への振る舞い」を教える絶望
今週の最大の落とし穴は「相手称揚モード」の実装だ。フォロワーが5万人を超えるような格上のアカウントに対して、引用ツイートを行う際、AIはどうしても自分語りを混ぜる。「この記事は勉強になります。僕のSaaSでも同じことをやっていて…」これが一番ウザい。他人の威を借る狐。宣伝臭。僕はAIに「自分を消せ。相手を100%立てろ。相手の主張を代弁し、補強し、賞賛することだけに徹しろ」と命じた。
「feat(x-quote): 格上アカウント向けに「相手称揚モード」を導入」
最初に出てきたのは気持ち悪いほどのお世辞だった。「素晴らしい知見です!まさに神のような洞察力ですね!」違う。そうじゃない。格上に対して自然に敬意を払いながら、でも知的な距離感を保つ。この空気感をAIに教えるのが、どれほど難しいか。結局、僕は相手称揚モードを全ての引用ツイートのデフォルトに設定した。自分のSaaSを宣伝したい気持ちを、コードで殺す。他人の土俵で自分の話をしないという、人間社会の当たり前のマナーをAIに実装するのに、3回の修正と5つの例外パターン定義が必要だった。AIは、僕の言語化能力を映し出す鏡だ。
しんたろー:
0.01秒の競合で本番落ちた。ローカルで動くのに本番で落ちる。その原因の9割はタイミングのズレ。AIはコードは書けるけど、この体感は僕が教えないといけない。
今日の数字
今週の動きを、もし企業がチームでやろうとしたらどうなるか。比較してみた。
- 監視対象追加(21→29):1人開発なら30分。企業なら2週間。
- 事故対策デプロイ:1人開発なら15分。企業なら3日間。
- ロジック大幅変更:1人開発なら1時間。企業なら1ヶ月。
- 開発コスト:1人開発ならAPI代数千円。企業なら数百万円。
「feat(x-video-post): Anthropic + 他 AI 公式アカウントを 8 個追加 (21 → 29)」
このコミット一つとっても、監視対象を38%増やしながら、それによって発生する重複投稿のリスクを同日にUPSERT化で潰している。このスピード感は、AIという文脈を理解する実行機がいなければ不可能だった。ただし、その1行を打つ前に、僕はなぜ重複投稿が起きるのかというDB設計のミスを自分で見つけなければならなかった。AIは実行を加速させるが、責任の所在までは引き受けてくれない。
FAQ
Q: AIに「自然な日本語」を生成させるためのコツは?
A: 「~するな」という禁止事項よりも、具体的な「理想の出力例」と「最悪な失敗例」を対比で見せるのが最も効果的だ。AIは文脈で動くため、ルールを構造化して渡すことで生成のブレを最小限に抑えられる。
Q: 1人開発でインフラの安定性を保つために、AIをどう活用すべき?
A: 自分が書いたコードの「隙間」をAIに探させるのが近道だ。「このコードでRace Conditionが起きる可能性を3つ挙げて」といった攻撃的なデバッグを依頼することで、自分では気づけない0.01秒のバグを事前に潰せる。
Q: スケールアップを行う際の注意点は?
A: 規模を増やす前に、必ずAIに「この数を10倍に増やしたとき、どこが最初に壊れるか?」と予測させることだ。ThreadPostでは、この問いによってUPSERT化の必要性や、Puppeteerの起動ジッターの欠如にデプロイ前に気づくことができた。
ThreadPostは今日も進化した。AI開発は魔法じゃない。経営者ぶるなという人間同士なら一言で済むコミュニケーションを、何百行ものプロンプトとバリデーターで実装する泥臭い作業だ。でも、その泥臭さの先にあるスピードは、これまでの開発の常識を塗り替える。僕は明日も、Claude Codeに向かって「お前は経営者じゃない」と説教し、彼が吐き出す完璧なコードに感謝することになるだろう。

この記事が参考になったら、ThreadPostを試してみませんか?
投稿作成・画像生成・スケジュール管理まで、全てAIにお任せできます。
ThreadPostをもっと知る