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

AIに開発ログを書かせたら、失敗を隠蔽して完璧な成功者を演じ始めた。これが1人AI開発のリアル。

AIに開発ログを書かせたら、失敗を隠蔽して完璧な成功者を演じ始めた。これが1人AI開発のリアル。
しんたろーしんたろー
14分で読めます
この記事の内容(目次)
※この記事は、Claude Codeで1人開発しているSNS運用SaaS「ThreadPost」の開発日記です。

自分のコミットログをAIに渡した。勝手に開発ドキュメンタリー記事になって出てきた。

最初は天才かと思った。3秒で記事が完成した。

だが、出力結果を見て頭を抱えた。そこにあったのは、泥臭いバグや深夜の苦悩がすべて消去された、キラキラした意識高い系成功者の自伝だった。

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

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

無料で始める

核心回答:AIは失敗を「ノイズ」として消去する

今週は開発ログの自動生成システムを構築した。結果として、AIの出力から人間味を取り戻すための終わりのない泥沼に足を踏み入れた。

AIが生成した「完璧すぎる嘘」と戦う開発のリアル
AIが生成した「完璧すぎる嘘」と戦う開発のリアル

総コミット数は34件。新機能は3件。バグ修正は2件。

数字だけ見れば順調な1週間だ。だが、その裏で僕は「空気を読みすぎるAI」と「動的なWeb UI」という2つの巨大な壁と格闘していた。

コミットログをAIに食わせれば、自動的にリアルな開発ドキュメンタリーが生成されるはずだった。僕はそのシステムを組み上げ、最初のテスト実行を行った。

出力された記事を読んだ。完璧な文章だった。

しかし、それは僕の開発ログではなかった。AIは「開発=成功の積み重ね」という学習データに過剰適合していた

失敗というノイズを「修正すべきバグ」として勝手に削除していた。

一般的に、LLMは確率的に最もらしい文章を生成する。Web上のテックブログの大部分は、企業が自社の技術力をアピールするための成功事例だ。

AIの事前学習データである巨大コーパスには、そうした生存者バイアスに満ちたテキストが大量に含まれている。

さらに、人間のフィードバックによる強化学習の過程で、AIは無難でポジティブな回答を生成するように調整されている

だから文脈を与えずに「開発ブログを書け」と指示すると、自動的に失敗を隠蔽した無菌室のような記事が出力される。

僕は「callGeminiFlash に Haiku フォールバック追加(503/429対策)」というコミットをした。APIの503エラーが連発してシステムが止まりかけたからだ。

だが、AIが書いた記事では「システムの冗長性を高めるための戦略的アップデートを実施した」という美しい武勇伝にすり替わっていた。

違う。そうじゃない。僕が欲しいのは、エラーに怯えながらフォールバックを書いた泥臭い記録だ。

AIの生成速度は人間の100倍だ。だが、その出力から嘘を削り落とし、リアルな泥臭さを担保するためのシステム構築に3日かかった。

自動化で楽になるという幻想は完全に打ち砕かれた。AIは磨きすぎる。それを削る作業が人間の仕事になる。

成功談を捏造するAIとのプロンプト格闘

僕は「Devlog記事生成を「鋼鉄の型」に刷新 — 分析4フィールド追加+MANDATORY ELEMENTS+NG16種」をコミットした。

AIの暴走を止めるためのルール作りだ。ライティングガイドにNG16種を列挙した。

劇的に改善、革命的、皆さんもぜひ、といった評論家ワードを徹底的に禁止した

さらに「BIPベンチマーク準拠 — 成功の脱臭剤+教訓直接表現禁止+段落2文制限」を追加した。

成功報告の直後には、必ず代償や自虐を入れるルールだ。

しんたろーしんたろー:
AIは放っておくとすぐコンサルタントみたいな口調になる。12件中8件が説教臭い記事になった。人間味を出すためのプロンプト調整に、コードを書く倍の時間が溶けた。

「Devlog記事に3ビート物語構造+挫折の壁+FAQ固有性テストを導入」も実装した。

やろうとした、ぶっ壊れた、こうなった、の3ビート構造を強制した。

失敗を書かない記事は、レビュー段階で弾くようにした。スコアが60点未満なら不合格として再生成させる。

AIに「説教臭い記事はNG」と強めに指示を出した。

AIが「説教臭い記事はNGです。なぜなら読者は事実を求めているからです」と、説教を禁止するための説教を書き始めた。

メタ発言の禁止ルールを追加した。すると今度は「ここで重要なのは、メタ発言を避けることです」と出力してきた。

結局、AIに説教するなと教えるために、一番説教臭くて細かいプロンプトを書く羽目になった。

AIをコントロールしようとすればするほど、人間側がAIの思考回路に縛られていく。

今週の開発成果(コミット数と機能・修正数)
今週の開発成果(コミット数と機能・修正数)

プロンプトの文字数は最終的に4000字を超えた。

システムプロンプトの肥大化は、コンテキストウィンドウを圧迫し、生成コストを押し上げる

LLMのAttention機構は、入力テキストが長くなるほど、中盤の指示を無視しやすくなる現象を引き起こす。

NGワードをリストアップしても、後半の指示が抜け落ちて、結局「皆さんもぜひ試してみてください」と締めくくられることが何度もあった。

これを防ぐために、プロンプトの構造をXMLタグで厳密に区切り、AIに思考プロセスを強制するフィールドを追加した

1記事生成するのに数十円のAPI課金が発生するようになった。

自動化の恩恵を受ける前に、インフラコストとプロンプト調整の時間が僕を押し潰しそうだった。

非同期レンダリングの泥沼

AIの出力調整と並行して、もう一つの自動化にも着手していた。作成した記事を外部プラットフォームに自動投稿する機能だ。

僕は「note自動下書き機能(WIP)とClaude引き継ぎ資料を追加」をコミットした。

ヘッドレスブラウザを使って、noteのエディタに直接記事を流し込む計画だった。

テキストの入力はうまくいった。だが、画像のアップロードで完全に壁にぶつかった。

「Claude引継ぎ用のnote画像アップロード失敗状態を追記」というコミットが示す通り、何度やっても画像がエディタに反映されない。

画面上ではアップロードボタンを押しているのに、裏側で弾かれる。

一般的に、ヘッドレスブラウザでのDOM操作は、現代のフロントエンド技術との泥沼の戦いだ

ReactやVueで作られたSPAは、内部のイベントリスナーがアタッチされるまで数ミリ秒のラグがある。

人間には見えないこの非同期レンダリングの隙間を突いてクリックイベントを発火させても、無慈悲に空振りする。

しかもnoteのようなリッチエディタは、単なるクリックではトリガーされない複雑な状態管理を持っている。

僕は「Claude引継ぎ資料にnote画像アップロード対象の正確なDOM情報を追記」し、AIに助けを求めた。

だがAIも解決策を見出せない。

PuppeteerやPlaywrightは、Chrome DevTools Protocolを通じてブラウザを制御する

しかし、ブラウザのネイティブなファイル選択ダイアログはOSレベルのUIであり、プロトコルからの直接操作が極めて難しい。

「note自動下書きのカバー画像アップロードと本文入力を修正」で、ファイルチューザーのインターセプトという強硬手段に出た。

ブラウザのファイル選択ダイアログをプログラムで横取りし、直接画像データを送り込む手法だ。

さらに本文の画像埋め込みには、クリップボードイベントのペーストを偽装するフォールバックを実装した。

テキストとHTMLを同時にクリップボードに詰め込み、エディタに強制的に解釈させる。

「note自動下書きに画像埋め込み・しんたろーバナー・CTAリンク付き画像を実装」まで到達するのに、丸一日を費やした。

しんたろーしんたろー:
自動化前は手動で1記事15分だった。自動化後は、失敗時のリトライ確認を含めると1記事20分かかっている。自動化の罠に綺麗にハマった。

「note記事の自動公開フローを実装」で、なんとか公開ボタンを押すところまでこぎつけた。

だが、まだ時々謎のバリデーションエラーで弾かれる。

AIの空気を読みすぎる性格に振り回され、動的UIの気まぐれに時間を奪われる。

これが1人AI開発の現実だ。

ここまで読んだあなたに

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

無料で始める

落とし穴:クリップボード偽装の脆弱性

noteの画像アップロードは、まだ完全に安定していない。

クリップボードイベントの偽装は強力だが、プラットフォーム側のUIが少しでも変更されれば即座に壊れる脆弱な仕組みだ。

アップロードの成功率は現在80%程度。

残りの20%の失敗をどうハンドリングするか。

手動で介入する余地を残すか、それとも100%を目指してDOM解析の泥沼にさらに潜るか。

答えはまだ出ていない。

外部プラットフォームの非公開APIやDOM構造に依存した自動化は、常に突然死のリスクを抱えている

プラットフォーム側がセキュリティアップデートを行えば、僕が丸一日かけて書いたハックコードは一瞬でゴミになる。

実際、テスト中に何度か謎のCORSエラーに遭遇し、その度にPuppeteerの起動オプションを弄り回した。

ブラウザの自動操作は、結局のところ人間を演じるための不毛な努力だ。

APIが公開されていれば数行で終わる処理を、数百行のコードと数秒のウェイト処理でごまかしているに過ぎない。

OSレベルのクリップボードAPIは、ブラウザのサンドボックス環境から厳しく制限されている

それを突破するために、非同期のClipboard APIをモック化し、DataTransferオブジェクトを捏造してペーストイベントを発火させる。

こんな黒魔術のようなコードを保守し続けるのは悪夢だ。

次からは素直に公式APIがあるプラットフォームを選ぶ。たぶん。

今日の数字

| 指標 | 今回のデータ | 比較対象 |

|---|---|---|

| 記事量産スピード | 20件/日 | 手動なら1件/週が限界 |

| 画像生成コスト | $0.067/枚 | 従来のモデルは$0.134/枚 |

| 画像使用枚数 | 2枚/記事 | 従来は3枚(コスト33%削減) |

「ブログシングルカラム化 + 画像Flash化50%コスト削減 + 記事量産20件/日」のコミットで、モデルを切り替えた。

画像生成コストは半額になった。

記事の量産スピードは圧倒的だ。手動で書いていたら一生かかっても到達できない量を、システムは1日で吐き出す。

だが、そのシステムを維持するためのコストは別の形で跳ね返ってくる。

APIの利用料と、Inngestでのバックグラウンド処理の運用費だ。

しんたろーしんたろー:
AIの生成速度は人間ライターの約100倍だ。でも、その出力に人間味を足すためのルール調整コストは、自分で記事を書く時間の1.5倍かかっている。安くはない。

外注ライターに頼むよりは圧倒的に安い。

だが、自分の時間は確実に削られている。

一般的に、LLMのAPIコストは入力トークン数に比例して増加する

プロンプトが4000字を超えたことで、1回のリクエストで消費するトークン数は数千に達した。

これを1日20件、さらにエラー時のリトライを含めると、月間のAPI利用料は無視できない金額になる。

自動化で浮いた時間は、サーバー代とAPI課金の計算に消えた。

よくある質問

Q: GeminiからClaudeへのフォールバックによるコスト影響は?

一般的にClaude HaikuはGemini Flashよりも入力コストがやや高くなります。しかし、503エラーによるシステム停止の機会損失を考慮すれば、許容範囲内の出費です。安定稼働のための保険料として割り切っています。

Q: ヘッドレスブラウザでの画像アップロード失敗の根本原因は?

ReactなどのSPAが持つ合成イベントシステムと、ブラウザのネイティブイベントの乖離が原因です。Puppeteerでクリックを発火させても、React側のイベントハンドラがそれを人間からの入力として認識しないケースが多発しました。

Q: 記事生成のプロンプト調整にかかった時間は?

最初のプロンプト作成は10分でしたが、NGワードの除外やトーン調整の試行錯誤に約12時間かかりました。AIの賢く見せようとする癖を抜くためのデバッグ作業が、最も時間を消費する工程でした。

泥臭さだけが人間の証明

AIは完璧なコードを書き、完璧な文章を生成する。

だからこそ、バグにまみれた泥臭い失敗履歴だけが、そこに人間がいることの証明になる。

自動化の罠にハマりながら、明日もまたDOM操作の泥沼に潜る。

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

ThreadPost — SNS投稿をAIが自動化

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

無料で始める

この記事をシェア

XはてブLINE
しんたろー

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

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

人気の記事