※この記事は、Claude Codeで1人開発しているSNS運用SaaS「ThreadPost」の開発日記です。
画像生成をバックグラウンドに回した。画面はサクサク動くようになった。
でも裏側で無限リトライが発動していた。APIの課金メーターが静かに回り続けていた。
エラーで止まるならまだいい。一番怖いのは、表面上は動いているように見えて、裏で見えないコストが無限に溶けていくバグだ。
SNS運用を自動化しませんか?
ThreadPostなら、投稿作成・画像生成・スケジュール管理まで全てAIにお任せ。
1465件のコミットと見えないバグ
今週はコミット1465件を積んだ。新機能12件、バグ修正28件をデプロイした。

Claude Codeを使って、4コマ漫画生成の非同期化と、開発ログの自動生成パイプラインを構築した。
見た目の機能は増えた。だがその裏で、非同期処理特有の状態ズレと、AIの幻覚に振り回される1週間だった。
Inngestと非同期化の泥沼
4コマ漫画の自動生成機能を作っている。ローカルでは動くのに、本番環境だとタイムアウトで落ちた。

Vercelのレスポンス打ち切り時間を計算していなかった。Claude Codeに「画像生成を全部バックグラウンドでやって」と指示した。
ジョブキューシステムのInngestを使って、Fan-outパターンで実装してきた。1つのリクエストを複数の並列ジョブに分散する仕組みだ。
テスト環境で動かした。画面がずっと「生成中...」のまま固まった。
ログを見ると処理は完走している。なのに画面のプログレスバーは0%のまま動かない。
原因は1つじゃなかった。ジョブ内のSupabaseクライアントにRow Level Securityが効いていた。
進捗をUPDATEする権限がゼロだった。一般権限だと自分のデータすら取得できない仕様を忘れていた。
「fix: generation_jobsテーブルにUPDATE権限を追加」をコミットした。
これで直ると思った。甘かった。
今度は別のバグが出た。Google AIのAPIが一時的なエラーを返したとき、エラー判定の分岐がなくて無限リトライが走っていた。
画面が0%のまま、裏で同じ画像を何十枚も生成し続けていた。API代がみるみる溶けていく。
非同期の分散トランザクションでは「冪等性」の担保が必須になる。何度実行しても同じ結果になる設計にしないと、リトライのたびにデータが壊れるかコストが跳ね上がる、と言われている。
AIはハッピーパスを一発で書く。「失敗した後に何が残るか」の設計は人間の仕事だった。
しんたろー:
本番エラーを誰も知らない状態で1ヶ月運用してた。構造化ロガーを入れて初めて、1日に数十件の想定外エラーが起きている事実を知った。ログのない本番コードは、暗闇で音だけ聞いて修理するのと同じだ。
「fix: プログレスバーがリアルタイム更新されるように修正」をデプロイした。
同時に、APIコストの最適化もやった。Claude APIで月5万円使っていたのを、Vertex AI REST APIに移行した。
移行作業は1日。レスポンス速度は体感で1.5倍になり、エラー率はほぼゼロになった。
API代は月2.5万円に半減した。浮いた2.5万円で他の機能開発に回せる。
今は画像10枚同時生成でも画面はサクサク動く。ボタンを押してから0.8秒かかっていた処理が、0.1秒以下になった。
APIを直列で3回叩いていたのを、1回にまとめたからだ。
AIを飼い慣らす自動生成パイプライン
開発ログの更新がずっと止まっていた。コードを書くのに必死で、文章を書く気力が残っていなかった。
Claude Codeに「過去のコミット履歴からDevlogを自動生成して」と指示した。「feat: Devlog記事自動生成パイプライン」をコミットした。
これで毎日勝手にブログが更新される。最高だと思った。
出てきた記事を読んで絶望した。「AIを活用した現代の開発手法」みたいな、どこにでもある薄っぺらいポエムが出来上がった。
しかも数字を捏造していた。「28種類実装」「15%向上」とか、コミットに一切書いていない数字を自信満々に並べてきた。
プロンプトに「嘘をつくな」と書いた。そこまで言わないとわからないのか。
さらに「〜が本質です」「改めて実感しました」という説教くさい締めくくりを連発してきた。
禁止ワードリストを20個作った。段落は最大2文、説教禁止、バッククォート禁止の多層防御を敷いた。
しんたろー:
記事生成のプロンプト調整だけで14回コミットした。AIの人格を調整するのは楽しいが、「嘘をつかせない」のはただの重労働だ。ルールは「AIが守れない前提」で書く方が早い。
それでも同じAIに自己レビューさせると、自分の嘘を見抜けない。
だから、生成と査察を別モデルに分離した。Claudeが書いた記事を、Gemini 2.5 Proにファクトチェックさせる。
「fix: バッククォート禁止の多層防御 + Gemini フォールバックチェーン」をデプロイした。
別モデルを挟むだけで、論理の穴や誇張を次々と指摘するようになった。AI同士が監視し合う構造だ。
ついでに、ブログ記事を公開した瞬間にThreads用の投稿候補を自動生成する機能も付けた。
「feat: ブログ記事公開時にThreads投稿候補を自動生成 + 管理画面に生成日時表示」
朝起きると、僕の言葉で書かれた開発ログが出来上がっている。毎日30分かかっていた作業が消えた。
その分、AIの出力品質を監視するプロンプトのメンテナンス時間は増えた。
ここまで読んだあなたに
今なら無料で全機能をお試しいただけます。設定後は完全放置でプロ品質の投稿を毎日生成。
落とし穴:XのカウントとAIの算数
Xの投稿タイトルを自動生成させようとした。AIに「45文字以内で」と指示した。返ってきたタイトルは100文字を超えていた。
Xの仕様では、英数字は1カウント、日本語は1文字2カウントになる。上限は100カウントだ。
AIは文字数を単純に数える。「48文字です」と言いながら、実際は96カウントを消費している。
何度「100カウント以内にしろ」と指示しても、計算を間違える。5回連続で同じミスをしてきた。
プロンプトに「日本語は2カウント、英数字は1カウント」という計算式を直接埋め込んだ。その場で計算させながら生成させる構造に変えて、ようやく40文字ピッタリのタイトルが出るようになった。
AIに数を任せるのは無理だった。計算式ごと渡すしかない。
しんたろー:
まじかよ…5回連続で同じカウントミス。お前、仕様書読んでないだろ。計算式を丸ごとプロンプトに埋め込んだら一発で通った。最初からそうしろよ。
今日の数字
| 項目 | 今週のデータ | 比較対象 |
|---|---|---|
| 総コミット数 | 1465件 | チーム開発なら半年分 |
| 開発工数 | 3日 | チーム開発なら2週間 |
| APIコスト | 月2.5万円 | 移行前は月5万円(50%削減) |
| バグ修正数 | 28件 | 先週は12件 |
| 記事生成時間 | 0分 | 手動なら毎日30分 |
1人で28件のバグを修正した。チーム開発なら、バグ報告から優先度調整、実装開始までに2週間はかかる量だ。
伝達コストがゼロだから、見つけた瞬間に直せる。
よくある質問
非同期処理でAPIコストが爆発するのを防ぐには?
冪等性キーとリトライ上限の設定が先だ。今回は「エラー時に無限リトライ」が原因で、同じ画像を何十枚も生成し続けた。Inngestのジョブ設定でリトライ上限を3回に絞り、エラー時は即座にジョブを停止する分岐を追加した。リトライ設計がないまま本番に出すと、静かにコストが溶ける。
AI生成コンテンツの数字捏造をどう防いでいますか?
生成と査察を別モデルに分けた。Claudeが書いた記事をGemini 2.5 Proにファクトチェックさせる構造だ。同じモデルに自己レビューさせると自分の嘘を見抜けない。別モデルを挟んだら、「コミットに存在しない数字」の指摘が一発で出るようになった。プロンプトに「嘘をつくな」と書くより、構造で防ぐ方が早い。
1人SaaSでThreads APIが壊れたときの対処は?
今週、Threads APIの障害で論理削除したアカウントに勝手に投稿が飛んだ。急いで止血したが、根本的なデータ整合性の確認はまだ終わっていない。外部APIは予告なく壊れる。自分のコードより先に外部を疑う嗅覚と、即座に止められるフラグ設計が必要だ。
まとめ
自動化を進めるほど、失敗したときの管理コストが浮き彫りになる1週間だった。

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