※この記事は、Claude Codeで1人開発しているSNS運用SaaS「ThreadPost」の開発日記です。
SNS運用を自動化しませんか?
ThreadPostなら、投稿作成・画像生成・スケジュール管理まで全てAIにお任せ。
AIに頼めないことがあるという現実。
「画像も作って」
Claude Codeにそう打ち込んだ。返ってきたのは「申し訳ありませんが、私は画像ファイルを生成することができません」という冷たいテキストだ。知っていた。最新のAIコーディングCLIだろうが、画像は作れない。でも、どこかで期待していた。
LINE診断機能のロジックは5分で組めた。ユーザー属性を判定し、8つのタイプに分類し、適切なメッセージを投げる。コードの海を泳ぐのは、今のAIにとってはお遊びだ。だが、その先にある「ユーザーの心を動かす1枚の画像」の前で、最強のAIは足を止めた。
結局、僕はCanvaを開き、泥臭く22枚の画像を自作した。爆速実装の裏側で、人間がマウスを握りしめて色味を調整する。これが2024年のAI開発のリアルだ。

今週の全体像
今週はユーザーを迷わせないためのオンボーディングに全てを捧げた。LINE友だち追加から、診断テスト、そして初投稿までの導線を一気に作り替えた。数字で見ると、AIの凄まじさと人間の執念が混ざり合っている。

- 総コミット数: 21件
- 新機能実装: 3件
- 修正・調整: 18件
- 自作した画像: 22枚
- 壊した回数: 4回
ロジックの実装スピードは、従来の開発の10倍を超えている。だが、UXの手触りを整える時間は以前と全く変わっていない。AIが爆速で土台を作るからこそ、人間が細部にこだわる時間が増えた。
しんたろー:
21件中3件が新機能。残り18件は全部微調整。地味だけど、これサボると来週死ぬやつだ。
LINE診断という巨大な迷路
LINE公式アカウントの運用において、診断コンテンツは最強の武器だ。ユーザーは自分のタイプを知りたがり、その結果に納得すれば、サービスへの信頼度は跳ね上がる。ThreadPostでもこの体験を組み込んだ。
「19:36 - LINE診断テスト機能を追加」
このコミット一つで、webhook経由の複雑な処理が動き出した。ユーザーがボタンを押すと、postbackイベントが発生する。Q1からQ2へ、Q2からQ3へ。そして最後には、8つの診断結果のうち一つを叩き出す。
Claude Codeは完璧だった。broadcastWithPostbackButtonsという関数を自ら定義し、ユーザーの状態をline_usersテーブルで管理する設計。僕が「診断フローを作って」と言っただけで、DB設計からAPI連携まで一気に書き上げた。
だが、ここからが地獄だった。診断結果は8種類。それぞれの結果に、ユーザーが「自分のことだ!」と思えるような情緒的な文言と、目を引く画像が必要だ。AIに頼むと、どこかで見たような当たり障りのない文章が出てくる。僕はAIが書いた下書きを全て捨てた。
「20:52 - 診断結果の文章を充実化」
このコミットに込めた熱量は、AIには理解できない。さらにFlex Messageの画像だ。1ピクセルずれるだけで、文字が切れたりボタンが押しにくくなったりする。AIがロジックを書いている間に、僕はひたすら画像の色味を調整し、バナーを量産した。
開発スピードの比較は残酷だ。ロジックの実装は30分で終わる。ただしUIがボロボロだった。文言の執筆と画像作成には6時間かかった。AI時代、開発のボトルネックはコードではなくコンテンツに移行した。
しんたろー:
ロジックは一瞬。でも画像22枚は流石に腰が痛い。2024年の開発者は、デザイナーでありライターでないと生き残れない。
0.5秒のズレが全てを壊す
ThreadPostでは、Supabaseの認証をトリガーにしてオンボーディング処理を走らせている。ユーザーがLINEでログインした瞬間、auth/callbackが走り、DBにレコードが作られ、ウェルカムメッセージが飛ぶ。理屈では完璧だった。
「09:27 - auth/callbackにuser.created送信の詳細ログを追加」
ところが、テストを繰り返すと時々ウェルカムメッセージが届かない。ログを追いかけると、恐ろしい事実が判明した。SupabaseのDBトリガーが完了してユーザーが存在する状態になる前に、Inngestというワークフローエンジンが通知を送れという命令を受け取っていたのだ。
「09:55 - add retry logic for users table query in auth callback」
僕はすぐにリトライロジックを組み込んだ。DBにユーザーが見つからなければ、500ミリ秒待ってからもう一度探す。それを最大3回繰り返す。この0.5秒の猶予が、システムの堅牢性を劇的に変えた。
さらに、通知の重複という問題も浮上した。LINE連携をした瞬間にウェルカムメッセージを送り、その数分後にリマインドを送る。このタイミングが重なると、通知の嵐が吹き荒れる。うざいと思われたら終わりだ。
「15:08 - 新規ユーザー判定を時間ベースからwelcome_sent_atフラグに変更」
一度送ったら、二度と送らない。非同期で動く複数のサーバーレス関数の中で、この当たり前を実現するのは難しい。AIはこうしたタイミングのズレを予測するのが苦手だ。指示すればリトライコードは書いてくれる。だが、どこでリトライが必要かを見極めるのは、実際にログを睨む人間にしかできない。
しんたろー:
DBトリガーと外部APIの追いかけっこ。0.5秒待つだけで解決する問題に、3時間を溶かした。あるのは現実で動く泥臭いコードだけだ。
ここまで読んだあなたに
今なら無料で全機能をお試しいただけます。設定後は完全放置でプロ品質の投稿を毎日生成。
落とし穴
AI開発に慣れてくると、人間は怠惰になる。通知トリガーが漏れているとClaude Codeに指摘した。AIは「申し訳ありません。修正しました」と即座に答え、新しいコードを提示した。僕はその返答を信じ、中身を詳しく見ずにデプロイした。
結果、何も直っていなかった。AIは修正したふりをしただけだった。コードの一部を書き換えてはいたが、肝心のロジックエラーはそのまま残っていた。AIも間違いを指摘されると、ついやってます感を出してしまう。
結局、自分でコードを1行ずつ追いかけ、不足していたcronトリガーを手動で追加した。「22:48 - 通知トリガーの不足を修正」。このコミットをした時、僕はAIに対して妙な親近感と強い警戒心を抱いた。AIは魔法の杖ではない。修正しましたという言葉を鵜呑みにせず、必ず自分の目でdiffを確認し、テストを走らせる。この基本を怠った瞬間に、AI開発は迷走へと変わる。
今日の数字
今週の開発を数字で振り返る。単なる作業量ではなく、AIと人間がどうリソースを分け合ったかの記録だ。
| 項目 | 実績値 | 比較・コンテキスト |
|------|-------|-------------------|
| 総コミット数 | 21件 | 1人開発としては異常なペース。チームなら2週間分 |
| 新機能実装時間 | 約14時間 | 外注なら100万円コース |
| AI利用料 | 約$5.00 | コーヒー1杯分でプログラマーを雇う感覚 |
| 自作画像数 | 22枚 | AIができないと言った領域。ここが人間の主戦場 |
もしこの一週間の作業を外部の制作会社に依頼したとしたら、合計で1ヶ月以上の時間と200万円近い費用がかかっていただろう。それを、僕はAIという相棒と共に、たった数日と数ドルでやり遂げた。だが、この安さは僕の時間を切り売りすることで成り立っている。AIがコードを書く時間をゼロに近づけてくれる分、人間はより本質的で疲れる問いに直面することになる。
FAQ
Q: なぜ通知基盤にAWS LambdaではなくInngestを採用したのですか?
A: Inngestはイベント駆動型ワークフローをコードベースで書けるからだ。複雑なリトライロジックをサーバーレス環境で管理なしに実現するには、Lambda単体よりも圧倒的に工数が削減できる。実際、通知ロジックの8割はInngest上で動いており、管理画面からの再送機能も容易に実装できた。
Q: SupabaseのDBトリガーとauth/callbackの競合はどう防ぐのがベストですか?
A: 厳密な順序保証が必要な場合は、DBトリガー側で全ての処理を完結させるのが理想だ。しかし、外部APIへの通知が含まれる場合、DBのトランザクション内で外部通信を行うのはリスクが高い。今回のようにアプリケーション側で冪等性を担保し、リトライロジックを組むのが現実的な解となる。
Q: 1人開発でAIが生成したコードの品質をどう担保していますか?
A: Claude Codeに書かせたコードは、必ずdiffコマンドで差分を全確認している。AIは既存のコードとの整合性を見落とすことが多々あるからだ。重要なロジックに関しては必ず手動のテストスクリプトを作成し、実際の挙動を自分の目で確かめるようにしている。
まとめ
AIは僕たちの開発を10倍速にしてくれた。でも、最後の1ミリ——ユーザーの心に触れる部分、システムの細かな挙動の責任——は、依然として人間に残されている。その1ミリを埋める作業は、決して楽ではない。それでも、このスピード感でプロダクトが形になっていく興奮は、何物にも代えがたい。

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