※この記事は、Claude Codeで1人開発しているSNS運用SaaS「ThreadPost」の開発日記だ。
AIに「ウィットに富んだ投稿をして」と指示を出した。数秒後、画面に表示されたのは、特定の層を真っ向から否定するような過激な煽りだった。
Claude Codeとの共同開発は、魔法のような爆速実装と、背筋が凍るような倫理の崖っぷちが隣り合わせだ。
便利すぎて笑える瞬間と、自分の指示の甘さに絶望する瞬間。
この1週間、僕はAIという「天才だが加減を知らない狂犬」の手綱を握り直すためだけに、膨大な時間を溶かした。
SNS運用を自動化しませんか?
ThreadPostなら、投稿作成・画像生成・スケジュール管理まで全てAIにお任せ。
今週の全体像:AIに「センス」を求めた代償
今週は、ThreadPostの核となる「動画投稿自動化」と「X/Threadsの投稿生成アルゴリズム」にメスを入れた。
開発スピードは異常だ。
企業ならエンジニア3人で1ヶ月はかかるであろう「動画の2-pass解析パイプライン」や「TikTok連携」を、僕はわずか数日で形にした。
だが、その裏側ではAIの「自由度」が牙を剥き、あわや大炎上という場面や、本番環境が沈黙する悪夢を何度も経験した。
- 総コミット数: 20件
- 実装した新機能: 6件(TikTok連携、動画2-pass解析、ウィット投稿生成など)
- 修正したバグ: 10件(本番環境変数の罠、字幕レンダリングのズレ、SVGタイトル混入など)
- 開発コスト: API代の恐怖と戦いながら、19分の長尺動画を誤って解析しそうになり、1回350円の損失を間一髪で回避した。
AIは「正しいコード」は書けるが、「適切な空気」は読めない。
今週の僕は、開発者というより、暴走するAIの「検閲官」であり「調教師」だった。
しんたろー:
12件中8件が一発OK。残り4件はこっちの指示がクソだった。成功率67%。
センスをAIに外注しようとした僕の怠慢。結局、泥臭いルール作りが一番効く。
AIに「ウィット」を求めたら、ただの煽り運転が返ってきた
「もっとウィットに富んだ投稿にして」
この一言が、地獄への入り口だった。
Xの引用投稿機能を強化する中で、僕はAIに「少しの皮肉と、鋭い視点」を期待した。
だが、Claude Codeが吐き出したのは、ウィットとは程遠い、ただの「攻撃的な毒舌」だった。
特定の意見を持つユーザーを「無知」と決めつけ、上から目線で論破するような文章。
これをそのまま自動投稿していたら、僕のサービスは初日で終わっていただろう。
AIにおける「ウィット」の解釈は、極めて危険だ。
LLMは、膨大なインターネット上のテキストから学習している。
そこには「ウィット」と称された「嘲笑」や「攻撃」が溢れている。
AIに抽象的な指示を投げると、それらの境界線を平気で踏み越えてくる。
僕はすぐに、プロンプトエンジニアリングという名の「お願い」を諦めた。
解決策は、コードによる「論理の檻」を作ることだった。
「feat(trend, witty): ウィット投稿新設」というコミットでは、AIの出力をプロンプトだけで制御するのをやめ、語尾の崩し方、比喩表現のパターン、さらには「絶対に触れてはいけない地雷ワード」をロジック側でガチガチに縛った。
論点の軸を1つに固定し、そこから外れる表現を許さない。
AIの「確率」に頼るのではなく、人間が定義した「境界線」の中でだけ踊らせる。
この調整だけで、丸1日が溶けた。
AIは1秒で100点の文章を書くこともあるが、0点の文章を「これが最高です」という顔で出してくることもある。
個人開発でも Guardrails for LLMs の重要性を痛感した。
AIを「クリエイター」として扱うのはまだ早い。
やつらは、厳格な仕様書に従う「超高速な作業員」として扱うのが正解だ。
字幕が画面外に消えた。物理ピクセル指定の罠
動画の自動生成機能を作っていて、一番「マジで意味わからん」と叫んだのが字幕のレンダリングだ。
「fix(subtitle): FontSize を物理ピクセル指定に変更」というコミットに至るまで、僕は3時間を無駄にした。
最初は、動画の高さに合わせて FontSize を計算させていた。
「動画が1920pxなら、文字は70pxくらいがちょうどいい」
論理的には正しい。
だが、実際にレンダリングされた動画を見ると、文字が豆粒のように小さかったり、逆に巨大すぎて画面を突き破っていたりした。
Claude Codeに「ズレを直して」と指示したら、今度は字幕が画面の下端を越えて、完全に消失した。
原因は、字幕レンダリングエンジン libass の仕様と、動画の解像度(PlayResY)の同期不全だった。
Web開発のレスポンシブデザインに慣れていると、「画面サイズに合わせて比率で計算する」のが正解だと思ってしまう。
しかし、動画の字幕焼き込みの世界では、基準となる座標系(PlayResY)を固定しない限り、フォントサイズは動画ごとにバラバラの見た目になる。
結局、僕は PlayResY=1920 という固定値を基準に、すべての数値をハードコーディングした。
「FontSize=70」「MarginV=520」。
この数値を固定し、libass 側に「どんな動画サイズでも、1920pxの高さがある前提でスケーリングしろ」と命令する。
これでようやく、縦長動画でも横長動画でも、人間が「美しい」と感じる位置に字幕が収まった。
AIは計算は得意だが、「見た目の心地よさ」は判定できない。
「コードは1ミリも間違っていないのに、出力結果がゴミ」という状況。
これが自動化パイプライン構築において、最もデバッグが困難な領域だ。
AIに任せきりにせず、人間が「ここだけは動かすな」という数値を固定して力技で枠にはめる。
この「不自由さ」こそが、プロダクトの品質を担保する。
しんたろー:
フォントサイズ1つの調整で3時間。AIは一瞬でコードを書き換えるが、僕の目は疲れ果てている。
「正しいコード」と「心地よい見た目」の距離は、想像以上に遠い。
ここまで読んだあなたに
今なら無料で全機能をお試しいただけます。設定後は完全放置でプロ品質の投稿を毎日生成。
落とし穴:完璧なコードを拒絶する「受信側」という壁
「メール配信のトラッキング機能を拡張した。」
「feat(email): 明鏡キャンペーン送信に必要な装飾とトラッキング拡張」というコミットを積んだとき、僕は勝利を確信していた。
開封率を追跡するための1ピクセルの透明画像を埋め込み、Supabase のDBと連携させる。
ローカルでのテスト送信は完璧。DBにもしっかりログが飛んでいる。
だが、実際にテスト用の受信ボックスを開いて、僕は絶句した。
トラッキング用の画像URLが、コードから丸ごと消えていたのだ。
バグではない。
メールクライアント側が、セキュリティやプライバシー保護のために、怪しい img タグを勝手に削除していた。
AIは「仕様通りに動くコード」を最短で書いてくれる。
だが、そのコードが「外部環境(メールクライアントの仕様)」によって無効化されることまでは予見してくれない。
結局、削除されないタグの組み合わせや、プロキシを通した画像の配置など、泥臭い検証を何度も繰り返した。
AIが書いた「綺麗なコード」を、あえて「古臭くて泥臭い、メールクライアントに嫌われない書き方」に書き直す作業。
これこそが、1人SaaS開発のリアルだ。
ツールがどれだけ進化しても、最後に泥をかぶって「なぜか動かない現実」と向き合うのは、AIではなく僕なのだ。
今日の数字
| 項目 | 今回の実績(1人+AI) | 業界標準(チーム開発) | 比較 / 備考 |
| :--- | :--- | :--- | :--- |
| 動画2-pass解析の実装 | 10時間 | 2〜3週間 | 複雑なロジックをAIが瞬殺 |
| TikTok API連携 | 4時間 | 1週間 | ドキュメント読み込みをAIが代行 |
| セキュリティ監査・修正 | 30分 | 3日間 | AIによる脆弱性指摘から修正まで |
| API解析コスト(長尺動画) | 約350円 / 回 | - | 5分超をスキップする防衛コードで回避 |
| バグ修正(本番環境) | 15分 | 1日 | GEMINI_KEY の読み込みミスを一瞬で特定 |
Gemini Pro Preview の解析コストは、60秒の動画と19分の動画で約30倍の差がある。
何も考えずに長尺動画を解析パイプラインに流せば、1回で350円が溶ける。
テストで10回回せば3,500円。
「fix(auto-video-post): 5分超の動画を Pass 1 前にスキップ」という、わずか23行の修正。
これが個人開発者の財布を守る、最強の「防衛線」だ。
しんたろー:
Claude Codeが「ここ、誰でも踏めますけど大丈夫ですか」って聞いてきた。
5本のAPIすべてに認証ガードを忘れてた。1人開発の死角をAIに救われる屈辱と感謝。
FAQ
Q: AIに開発を任せると、なぜセキュリティホールが生まれやすいのか?
A: AIは「機能の実現」を最優先し、認証やバリデーションといった「非機能要件」を後回しにするからです。実際に今回、5本のテスト送信APIに認証ガードを入れ忘れていました。AIに「セキュリティ的にヤバいところはないか」と明示的に問いかけない限り、動くことだけが最適化されます。
Q: 動画解析に Flash Lite と Pro を使い分ける理由は?
A: 1回数円の Flash Lite と、数百円かかる Pro では、コスト構造が全く異なるからです。単純な事実抽出は Flash Lite に任せ、高度な文脈理解が必要な判定だけを Pro に投げる階層化を行っています。これで月数万円単位のコスト削減と精度の両立が可能です。
Q: 字幕のレンダリングで「固定値運用」に切り替えたメリットは?
A: 動画の解像度が変わっても、視聴者が感じる「文字の大きさ」と「余白」を一定に保てる点です。物理ピクセル計算だと、4K動画とHD動画で見た目がバラバラになります。座標系(PlayResY)を固定することで、レスポンシブなWebサイトのような一貫性を動画内で実現しました。
まとめ
AIは魔法ではない。
誰よりも仕事が早いが、誰よりも空気が読めない「超極端なパートナー」だ。
「ウィット」を「炎上」に変え、「完璧なコード」を「メールクライアントのゴミ箱」に送り込む。
その暴走を食い止め、泥臭い現実の仕様にねじ込む作業こそが、これからの開発者の仕事だ。
ThreadPostは、そんなAIとの激しい格闘の末に、少しずつ「人間らしい」サービスへと近づいている。

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