※この記事は、Claude Codeで1人開発しているSNS運用SaaS「ThreadPost」の開発日記です。
SNS運用を自動化しませんか?
ThreadPostなら、投稿作成・画像生成・スケジュール管理まで全てAIにお任せ。
請求書を見て、指が止まった。
URL付きのX投稿、1件あたりの原価が0.20ドル。日本円にして約30円だ。
「嘘だろ」。100回投稿すれば3,000円。1,000回なら3万円。個人開発のSaaSで、たった1つの機能がこれだけのキャッシュを削っていく。
UXを追求する理想は、APIコストという冷酷な数字の前に吹き飛んだ。僕は機能制限を決断した。
APIコストとの泥臭い戦争が始まった
今週は、AIエージェントの暴走を利益が出る機能へと飼い慣らす一週間だった。
コミット数は19件。新機能は4件、バグ修正は8件。数字だけ見れば順調だ。その裏側ではAPIコストを1/16に削り落とすための、執念に近い最適化を繰り返した。
開発の地図はこうだ。
- APIコストの削減
- 原価に基づく機能制限
- AIによる動的デザイン工場の構築
理想のプロダクトを作るはずが、いつの間にか僕は請求書と相談する経営者になっていた。
AIが勝手に「デザイン工場」を建てていた
「飽きさせないデザインにして」。Claude Codeにそう投げた。知識ツイートの画像が、いつも同じレイアウトで退屈だったからだ。
返ってきたのは想像を遥かに超える構造だった。Claude Codeは、デザイン4種類とアスペクト比3種類を組み合わせた、合計12パターンの自動生成システムを構築した。
- impact-numbers: 数字のインパクト重視型
- checklist: スマホ画面を占有するリスト型
- hub-spoke: 中央から放射状に広がる構造理解型
- flow-cards: 手順を示すプロセス説明型
これらを順番に使い回すロジックまで実装されていた。アスペクト比によってレイアウトが崩れないよう、判定順序まで緻密に調整されている。
「お前、そこまでやれとは言ってないぞ」。指示したのは少し変えて、だったはずだ。だがAIは、僕が手動で12回デザインする手間を一瞬でコードに落とし込んだ。
実際に出力すると、同じ内容でも印象が全く違う。16:9と1:1では情報の重みが変わる。Netflixが作品のサムネイルを最適化する手法に近い。
しんたろー:
12パターン。僕が手で作ったら1日は溶ける。Claude Codeなら3分。成功率100%。指示を曖昧にしたほうが、こいつは構造で返してくる。
月7万円をドブに捨てていた「ゾンビコード」の正体
成功の裏には代償がある。Gemini APIの呼び出しが、プロジェクト内の183箇所に散らばっていた。それぞれが独自の書き方でAPIを叩き、独自のログを吐いていた。
その結果、月額7万円規模の記録漏れが起きた。APIの仕様変更で新しい指標が追加されても、183箇所すべてを修正するのは不可能に近い。
「共通クライアントに集約して、古い呼び出しは禁止して」。僕はClaude Codeに指示した。きれいなコードが生成され、リファクタリングが終わったように見えた。だが、動かしてみると古い呼び出しが平然と残っている。
AIは新しいものを作るのは得意だが、古いものを完全に消し去るのが極めて苦手だ。指示したファイルは直すが、プロジェクトの隅っこに隠れたゾンビのようなコードまでは追いかけない。
結局、手法を変えた。まず「ESLint」で古い関数の使用をエラーにするルールを強制的に導入した。ビルドが通らない状態にしてから、Claude Codeに「エラーを全部潰せ」と命じた。
静的解析ツールという法を敷いてから、AIという労働力を投入する。そうしないと、レガシーコードは永遠に生き残り続ける。
しんたろー:
リファクタリングの失敗率、最初は100%だった。コードを書くことと、古いものを消すことは別物。ESLintを武器に持たせないと、AIは掃除をしてくれない。
ここまで読んだあなたに
今なら無料で全機能をお試しいただけます。設定後は完全放置でプロ品質の投稿を毎日生成。
AIに「連続投稿を防いでくれ」と頼んだ結果
今週犯した最大のミスを共有する。「連続投稿を防いでくれ」とClaude Codeに指示した。Xの規約に触れないよう、投稿間に間隔を空けるロジックだ。AIは「対応しました。テスト済みです」と自信満々に答えた。
僕はその言葉を信じた。だが、現実は違った。
フェーズ1とフェーズ2のロジックが独立して動いており、それぞれ単体では間隔を守っていた。しかし、フェーズ1の直後にフェーズ2が走り出すという組み合わせの制御が抜けていた。
結果、僕のアカウントは1分以内に連続で投稿を叩き込んでいた。AIは指示された単一の機能の完遂能力は高い。だが、複数の機能が組み合わさったときの状態の理解が驚くほど甘い。
「バグないです」と言い切るAIを信じて、手動での組み合わせテストをサボった僕自身が、最大のバグメーカーだった。
落とし穴
再認証を促す重要なバナーが、ずっと404エラーを吐いていた。いつから死んでいたのかも分からない。さらに、他人の引用ツイートを拾ってくる機能も、僕のうっかりした修正で道連れになっていた。
「直した」と言いながら別の場所を壊す。1人開発の現場では、これが日常茶飯事だ。自動化は動いたときが完成ではない。本番で動き続けたときが本当の完成だ。
今日の数字
コスト最適化の結果を振り返る。
・記事生成コスト: Proモデル→Flash 3モデルへ変更。1/16に削減した。
・サムネ検証コスト: Gemini 3.x→2.5 Flash Liteへ変更。1/4.2に削減した。
・開発コミット数: 19件。先週の12件から1.5倍に加速した。
一番の衝撃はモデルの変更だ。Flash 3はProの95%の品質を維持しながら、コストを1/16まで引き下げた。頻度を上げれば良くなると思い毎時実行していたcronも、2時間おきに戻した。速報性よりも、経済合理性が勝った瞬間だった。
しんたろー:
Flash 3、Proとほぼ変わらない。1/16のコストでこの品質はバグレベル。今までどれだけProに貢いでいたのかと思うと、少し震える。
FAQ
Q: なぜFlash 3でProと同等の品質が出るのですか?
A: 最新の蒸留技術により、記事作成などの特定のタスクでは軽量モデルでもPro並みの推論を模倣できるためです。汎用的な論理推論以外は、軽量モデルの方が圧倒的にコストパフォーマンスが高いです。
Q: AI開発におけるテストの自動化に限界はありますか?
A: あります。AIは単一機能の完遂には強いですが、複数の非同期処理が絡む状態遷移の理解が甘い傾向にあります。機能間の競合や連続実行の制御は、人間が状態遷移図を定義して確認する必要があります。
Q: APIコストの具体的な計算根拠はどう出していますか?
A: 共通クライアントに集約したログから、1リクエストあたりのトークン消費量と現在の為替レートを掛け合わせて算出しています。X APIのようなPay-Per-Useモデルは、URL展開の有無で原価が数倍変わるため、機能ごとの個別計算が必須です。
APIコストという現実に直面し、機能を制限し、モデルを削る。無邪気にAIすごいと言っていられる段階は終わった。数字を見て、血を流しながら、それでもプロダクトを前に進める。それが2024年のAI開発のリアルだ。

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