しんたろーのITアカデミー
開発日記

Claude Codeで1人開発:APIコストを1/50に圧縮した話

Claude Codeで1人開発:APIコストを1/50に圧縮した話
しんたろーしんたろー
8分で読めます
この記事の内容(目次)
※この記事は、Claude Codeで1人開発しているSNS運用SaaS「ThreadPost」の開発日記です。

1/50。この数字をダッシュボードで見たとき、目を疑った。打ち間違いか、バグで計測が止まっているのかと思った。でも現実は違った。Claude Codeに投げた、たった一言の指示が、SaaSの「静かなる殺人鬼」を仕留めた。

SNS運用を自動化しませんか?

ThreadPostなら、投稿作成・画像生成・スケジュール管理までAIがサポート。

無料で始める

APIコストの暴走と、たった一言の魔法

今週のハイライトはAPIコストの削減だ。1人開発だと機能追加の楽しさに目がくらみ、裏側で垂れ流されている「血」に気づかない。僕の場合、それはXのメンション取得APIだった。

コストは50分の1になった。Claude Codeに「このAPI呼び出し、コスト削減できる?」と聞いただけで、数週間放置していた「全件取得」という愚行が一瞬で最適化された。

今週の戦績はこれだ。

  • 総コミット数: 18件
  • 新機能実装: 5件
  • バグ修正: 5件
  • APIコスト削減率: 98%
  • 壊した回数: 3回

APIコストの泥沼を抜け出したと思えば、今度はAIサムネイル生成の文字数制限にハマり、最後は決済ゲートの実装という震えるフェーズに突入した。

しんたろーしんたろー:
1回0.10ドルのAPIを1日10回×30日で月30ドル。これが1日1回になれば月3ドル。ユーザーが100人いたら月2,700ドルの差が出る。1人開発でこの差は生存か死かを分ける。

Claude Codeが見抜いた「全件取得」という名の自殺行為

事の発端はAPIの請求額だった。ThreadPostはXのメンションを監視して自動返信する。僕はこれまで、過去48時間分のメンションを毎回「全件」取得し、コード側でフィルタリングしていた。

「perf(x-mentions): API since絞り込みでメンション取得コストを1/50に削減」

このコミットがすべてを変えた。それまで1回の実行につき0.05〜0.10ドルを支払っていた。これが4つのアカウントで数分おきに走る。計算するのも恐ろしい額が、フィルタリングをサボっただけで消えていた。

Claude Codeの答えはシンプルだった。since演算子で前回の取得以降を狙い撃ちし、お手本データはDBにキャッシュする。なぜ今までやらなかったのか。1人開発に止めてくれる上司はいない。AIだけが冷静に無能さを指摘してくれた。

「perf(x): twitterapi.io コスト削減 - お手本キャッシュ + バッチサイズ拡大」

従来は呼び出しのたびに外部APIへリクエストしていた「お手本ツイート」の取得を、24時間TTLのDBキャッシュに移行した。1日10回以上発生していたAPIリクエストが、たった1回に集約された。30分で終わった。ただしUIの調整で半日溶かした。

Geminiとの13文字を巡る終わりなき戦い

APIコストの勝利に酔いしれていた僕を待っていたのは、AIサムネイル生成という名の「言うことを聞かない子供」との格闘だった。Gemini 2.5 Flashで画像内の見出しを生成する際、致命的な問題が発生した。

「13文字以内で」と3回書いたのに、Geminiは平気で14文字を返してくる。

「fix(thumbnail): headline 13字制約をGemini側で厳守させる(強制切り詰め廃止)」

最初はプロンプトで念を押し、次に「超えた場合は切り詰めろ」と指示した。するとコード側で強制カットが走り、「Claude Codeで開発を自動化」が「Claude Codeで開発」でぶった切られた。意味不明な画像が生成され、リトライが連発してAPI代だけが積み上がった。

「fix(thumbnail): AI Tipsサムネのリトライ削減(テキスト2→1、13字強制切詰)」

1記事あたり最大7回のリトライ。APIコストを削ったそばから、別の場所で垂れ流している自分に笑った。結局、プロンプトで縛るのをやめた。画像内のテキスト要素を2つから1つに減らし、文字数が溢れるリスクを物理的に排除した。AIを賢く使おうとするのではなく、バカでも間違えようがない設計にするのが一番早い。

ここまで読んだあなたに

今なら無料で全機能をお試しいただけます。設定後はAIが投稿案を毎日生成。確認して選ぶだけ。

無料で始める

落とし穴

AIに「この現象をプロンプトで抑止して」と頼んだら、あろうことか「抑止するための文言」を別の場所にも書き足し、被害を拡大させた。ある時、生成された画像に「AI新設るなる力捉断ず」のような謎の文字化けが混入した。Geminiが特定のパターンで勝手に捏造していたのだ。

「fix(thumbnail): P5で勝手に余分な日本語を生成する現象を抑止」

結局、プロンプトを徹底的に削ぎ落とし、「TEXT (exactly 2 strings)」のような機械的な指示に書き換えることで鎮圧した。AIは賢いのではなく、指示の枠組みが全てだ。境界線を明確に引く。これだけでバグは激減した。

今日の数字

| 項目 | 先週 | 今週 | 変化 |

| :--- | :--- | :--- | :--- |

| APIコスト(1実行あたり) | 約0.10ドル | 約0.002ドル | 98%削減 |

| サムネ生成リトライ数 | 1記事5〜7回 | ほぼ0回 | 劇的改善 |

| 決済ゲート実装時間 | 0時間 | 約8時間 | 新規実装 |

| コミット数 | 12件 | 18件 | 加速 |

しんたろーしんたろー:
決済ゲートの実装で8時間。StripeのWebhookとDBの同期で3回死にかけた。これ、ミスるとユーザーの金が消えるから冷や汗が止まらない。

FAQ

Q: APIコストの具体的な削減ロジックはどうなっている?

A: X APIのadvanced_searchにsince演算子を渡し、前回の取得時刻以降のみを取得するようにした。頻繁に参照するお手本ツイートは24時間TTLのDBキャッシュに移行した。これにより無駄なリクエストを極限まで削ぎ落とした。

Q: 決済実装で最も神経を研ぎ澄ませた部分は?

A: 解約処理のステート管理だ。即時解約と期間末解約のフラグがズレると、金は払ったのに使えない最悪の事態になる。StripeのWebhookイベントをDBで受け取り、4段階のステータスで厳密に管理するようにした。

Q: 1人開発において、設計とプロンプトのどちらを優先すべき?

A: 圧倒的に設計だ。AIが間違えようのないデータ構造を作り、境界線を明確に引く。その枠組みさえあれば、Claude CodeのようなAIは中身を埋める作業で最高のパフォーマンスを発揮する。

しんたろーしんたろー:
決済周りのバグはまだ潜んでいるかもしれない。来週、最初の課金が発生するその瞬間まで、緊張は解けない。

ThreadPostは今日も進化した。有料ユーザーが生まれる瞬間に怯えつつ、マーケティングを加速させる。

👉 ThreadPostでSNS運用を自動化する

ThreadPost — SNS投稿をAIが自動化

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

無料で始める

この記事をシェア

XはてブLINE
しんたろー

ThreadPost開発者・個人開発エンジニア

AI × SaaS個人開発者。Cursor / Claude Code を使った効率的開発、SNS自動化について実体験から発信。

人気の記事