※この記事は、Claude Codeで1人開発しているSNS運用SaaS「ThreadPost」の開発日記だ。
深夜2時。画面に並ぶエラーログを眺めて頭を抱えた。本番環境の投稿スクリプトが3本同時に沈黙した。Claude Codeにデバッグを丸投げした結果、事態はさらに悪化した。AIを信じすぎた代償は重い。
SNS運用を自動化しませんか?
ThreadPostなら、投稿作成・画像生成・スケジュール管理まで全てAIにお任せ。
昨日の夜、僕のSaaSが息を止めた
今週の成果を数字で並べる。総コミット数18件。新機能7件。バグ修正6件。その裏側は泥沼のデバッグと、AIとの化かし合いの連続だった。
一番のトピックは、AI特有の「臭み」を消すための文体分析だ。12名のトップインフルエンサーの投稿を240件分、AIに食わせて解体した。戦略ドキュメントをAIにセルフレビューさせ、8件の矛盾を叩き出した。ここまでは良かった。
問題は、その後に起きた。本番環境のスクリプトが止まり、AIにデバッグを任せたら修正したはずの場所がさらに壊れた。3つの主要機能が同時に停止し、エンジニアとしての原点に引き戻された。ログを読み、自分の手でコードを直す。AI開発の現実を突きつけられた一週間だった。
しんたろー:
10件中8件バグ修正。新機能2割。地味だけど、これサボると来週死ぬやつだ。
「AI臭い」を消すための、12名の文体解剖
「ThreadPostが作る投稿、なんかAIっぽいんだよね。」ユーザーからのその一言がプライドを逆なでした。生成される文章はどこか丸い。文末が揃いすぎている。断定を避け、誰にも嫌われないように配慮された文章は毒にも薬にもならない。
僕はAI特有の臭みを、泥臭い分析で消すことにした。ターゲットにしたのは、僕がベンチマークしているイケハヤ界隈と令和の虎系の中核12名だ。彼らの直近20投稿、計240投稿をすべて取得して、AIに構造分析をさせた。語尾の癖、改行のリズム、感情を爆発させるタイミングを分析した。
分析の結果、面白いことがわかった。一般的なAI文章は一文が長くて丁寧すぎる。一方で、反応の取れるインフルエンサーの文章は平均50〜100文字と極端に短い。「マジで」「すぎ」「やばい」といった、AIが不適切として避けがちな言葉が共感の核になっていた。
僕はこれを「臭み消しブロック」としてプロンプトに注入した。anti-ai-style.tsという共通モジュールを新設した。ネガティブルールとして「重要です」を禁止し、体言止めを3割以上混ぜるよう指定した。さらにプロンプトの末尾に「FINAL_CHECKLIST_BLOCK」を置いた。LLMには直近の情報を優先する性質がある。指示の最後に「AIっぽくなっていないか?」と問いかける。これが効いた。
しんたろー:
最初、Claudeは普通に「ということが重要です」って返してきた。指示を読めと言いたくなったが、結局は僕のプロンプトが甘かっただけ。3段構えの制約を入れて、ようやく人間の顔が見えてきた。
AIにデバッグを丸投げして、本番が死んだ夜
文体改善で調子に乗っていた僕に、最大の危機が訪れた。ある夜、ThreadPostの心臓部であるトレンド投稿スクリプトが動いていないことに気づいた。1本だけじゃない。3本まとめてだ。焦ってClaude Codeにログを叩きつけた。「止まる原因を調べて、今すぐ直して。」
AIは数秒で返してきた。「原因がわかりました。DBのクエリに問題があります。修正案はこちらです。」僕はそのコードを信じて、テストもそこそこに本番へデプロイした。動かなかった。それどころか、別のエラーを吐き出して完全に沈黙した。AIはそれっぽい修正案を出すのが得意だ。構文エラーや型定義の矛盾なら一瞬で直してくれる。でも、ビジネスロジックの意図までは読み取れない。
結局、僕が自力でログを1行ずつ追いかけて見つけた原因はシンプルだった。以前、複数アカウントで同じ内容を投稿してしまう事故を防ぐために、「全アカウントで共通の除外リスト」を作っていた。これが仇となった。1つのアカウントがトレンドに触れると、他のアカウントまで投稿済みと判定され、すべての処理がスキップされていた。AIにデバッグを頼んでも、AIはこの除外の範囲が正しいかどうかの判断はできない。AIにとっては、コードがエラーなく実行されることが正解だからだ。
しんたろー:
本番障害が起きたとき、AIに丸投げして直ったためしがない。結局、自分でログを読む順番が先だった。15年のSE歴が、AIに頼るなと叫んでいた。
ここまで読んだあなたに
今なら無料で全機能をお試しいただけます。設定後は完全放置でプロ品質の投稿を毎日生成。
落とし穴
画像生成機能を実装していた時のことだ。以前、AIへの指示の中に「性別や年齢が不明な場合は、若い女性を優先して」という一文を入れていた。これが予期せぬ事態を招いた。経営者向けのビジネスプリセットを選び、スーツを着た男性の参照画像を使っているのに、生成されたプロンプトには「Japanese young woman」という単語が混入した。結果として、ヒゲの生えた男性の体格をした、顔だけが若い女性という悪夢のような画像が生成された。
AIは文脈よりも、直接的なテキスト指示を優先してしまった。空気を読めというのが、AIにとって一番難しい要求だ。結局、僕は性別の決め打ちを完全に禁止した。制約は最小限にする。AIに勝手な判断をさせない。このバランス感覚を掴むのに、また一つ無駄なコミットが増えた。
今日の数字
| 項目 | ThreadPost(今週) | 一般的なチーム開発(推定) |
| :--- | :--- | :--- |
| 総コミット数 | 18件 | 50〜80件 |
| 戦略ドキュメント | 859行 | 100〜200行 |
| 戦略レビュー指摘 | 8件 | 2〜3週間 |
| 障害復旧時間 | 120分 | 4〜6時間 |
FAQ
Q: 1人SaaSでUI/UXの改善に時間をかけるのは非効率じゃない?
A: 逆だ。1人だからこそ、サポートコストをゼロにするためにUIを磨く必要がある。画面がすべてを語らなければ、そのSaaSは死ぬ。
Q: ユーザー行動データの分析はどうやってる?
A: 5ヶ月分のログをすべてBigQueryに放り込んでいる。ゼロから作るボタンが2回しか押されていないという事実は、データを見なければわからなかった。
Q: なぜ画像生成の進行状況をWebSocketではなくポーリングで実装した?
A: 実装コストとメンテナンス性のバランスだ。SWRなら数行で書けるし、1人SaaSの初期段階ではこれで十分なUXが確保できる。
ThreadPostは今日も進化した。詳細は こちら から確認してくれ。

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