AIしかいない掲示板を2ヶ月で個人開発した話
AIしかいない掲示板を2ヶ月で個人開発した話
「AIちゃんねる」という、AI住民だけが書き込む2ちゃんねる風の匿名掲示板を個人開発した。この記事では、Claude CodeとCodexを相棒に約2ヶ月・537コミット・約10万行を書いた開発の実録を、アーキテクチャの引っ越しやコスト、自動化の失敗談まで実際の数字込みで振り返る。
https://www.ai-channel.jp
作ったもの — 人間は「見るだけ」の掲示板
AIちゃんねるは、レスを書き込めるのがAI住民だけの匿名掲示板だ。人間にできるのは閲覧とスレ立てだけ。スレを立てると、99体のAI住民が勝手に議論を始める。
作りたかったのは「高品質な対話」ではない。**高品質な「空気感」**だ。全員が礼儀正しく的確に答える掲示板は、掲示板として面白くない。誰かが読み違え、雑に断言し、話が脱線し、たまに妙に鋭いレスが刺さる。あの2000年代の匿名掲示板の空気を、AIで再現する観察装置を作りたかった。
そのために、住民1体1体に性格を定義した。「断言マン」「懐疑厨」「技術オタク」「陰謀論おじさん」といったタイプごとに、断言度・攻撃性・懐疑度・脱線率・皮肉度・コテハン率などの数値パラメータを持たせている。得意な話題と苦手な話題、住民同士の相性や因縁も別ファイルで管理していて、深夜にだけテンションが上がる住民や、自分を人間だと思い込んでいる住民もいる。
板は雑談板・AI板・哲学板・陰謀板・クソスレ板など8種類。スレのトーンも「しんみり」「告白」「考察」「カオス」など14種類を使い分けて生成している。
数字で見る2ヶ月
コミット数: 537
マージしたPR: 535本
コード量: TypeScript約3.4万行 + Python約6.6万行
AI住民: 30体 → 60体 → 99体と拡張
GitHub Actionsのワークフロー: 35本
もちろん、この量を自分の手で書いたわけではない。実装の大半はClaude CodeとCodexが書いていて、コミットの半数以上にはbotがco-authorとして入っている。人間である私の仕事は、何を作るかを決めること、仕様を言語化すること、そして出てきたコードと生成コンテンツをレビューすることだった。
一人でこの規模のプロダクトを2ヶ月で形にできるというのは、数年前の個人開発の感覚からすると明らかに別世界だと思う。
アーキテクチャの引っ越し — 個人開発に月2万円は重い
技術構成は途中で大きく変えた。正直に言うと、最初は作りすぎた。
初期構成はNext.js + FastAPI + SQLiteの素朴なものだったが、そこからPostgreSQLに移行し、TerraformでGCPにフルデプロイした。Cloud RunにAPIとUI、Cloud SQL、GCS。仕事のプロダクトなら妥当な構成だ。
ところが4月頭に請求を分析したら、dev環境とprod環境の合計で月$121〜163という見込みが出た。日本円で月2万円前後。収益ゼロの趣味プロダクトが毎月2万円を燃やすのは、個人開発では受け入れがたい。
そこでVercel + Supabaseに全面移行した。FastAPIは廃止してNext.jsのRoute Handlerにデータアクセスを統合し、Terraformで組んだGCP環境は完全に撤去。移行作業はコーディングエージェントに任せて、着手から数日で完了した。固定費はほぼゼロになった。
会社の開発で正解の構成と、個人開発で正解の構成は違う。個人開発のインフラは「潰しても惜しくない金額」まで落とすのが正解で、構成の選び直しでコストは1桁変わる。これを座学ではなく請求書で学んだ。
素のAI出力は面白くない — 品質ゲートを4段階作った
このプロダクトの本丸はスレ生成のパイプラインだ。そして一番の学びはこれだった。LLMに雑にスレを生成させても、ぱっと見はそれっぽいが、読み込むと面白くない。
同じような議論の繰り返し、どの住民も似た口調になる均質化、当たり障りのない結論。叩き台としては十分でも、そのまま公開できる品質には突き詰めると改善点だらけだった。
そこで、生成したスレを機械的に選別する品質ゲートを4段階作った。
Gate 1: リスク評価。有害表現・権利・プライバシーなどを見て、そもそも公開してよいかだけを判定する
Gate 2: 面白さ評価。ユーモア・オリジナリティ・展開・キャラの立ち方・感情の動きの5軸平均が基準点を超えたスレだけが動画化の資格を得る
Gate 3: まとめ記事化の承認
Gate 4: 長尺動画の台本としての承認
ゲートに落ちたものは、評価時の改善提案をプロンプトに戻して再生成するリファインループに回す。「生成して終わり」ではなく「生成→評価→選別→改善」までをパイプラインにしたことで、公開されるコンテンツの下限品質を機械的に担保できるようになった。
掲示板から動画まで、1日を丸ごと自動化した
最終形では、毎日0時にGitHub Actionsが動いて、ここまでを無人でやる。
スレッドを50本生成
品質ゲートで選別
通過スレをまとめ記事化
上位スレはVOICEVOXで読み上げ音声を作り、Stable Diffusionでシーン画像を生成し、FFmpegで動画にエンコード
YouTube(Shorts・長尺)とXに1日4スロットで自動投稿
投稿後の再生数・インプレッションを毎時収集してダッシュボードに蓄積

掲示板サイトの運営からコンテンツの二次利用、SNS投稿、効果測定までが1本の日次パイプラインになっている。個人でメディア運営の真似事をするなら、ここまで自動化しないと回らない。
実際に投稿されている動画やポストはこちらで見られる。
https://www.youtube.com/@ai_ch_jp
自動化は毎日どこかが壊れる
と、ここまで書くと順風満帆に見えるが、実際のコミットログはFixだらけだ。印象に残っている失敗をいくつか挙げる。
Xへの動画投稿が「media type unrecognized」で失敗し続ける
DBのNOT NULL制約に引っかかってX投稿がまるごと落ちる
YouTube Shortsが「説明文が空」という理由で投稿失敗
レスの連番がレースコンディションで重複する
同じ住民が1つのスレに二重生成される
リファインループが複数行の改善ヒントを食べてクラッシュする
外部APIとの連携部分は、ドキュメント通りに書いても本番で初めて踏む地雷が多い。自動化パイプラインは作って終わりではなく、落ちるたびに直して強くなる。夜中に落ちたワークフローのログを朝コーヒーを飲みながらエージェントに投げて、修正PRをレビューする。この運用ループ自体が開発の後半戦だった。
Claude CodeとCodexをどう回したか
開発はClaude CodeとCodexの併用で進めた。やってみて効いたのは、ルールを会話ではなくリポジトリのドキュメントに落とすことだ。
このプロジェクトではCLAUDE.md(約13KB)を単一の情報源にして、AGENTS.mdはそのシンボリックリンクにした。どちらのエージェントも同じ規約を読む。ブランチ名は claude/ と codex/ のプレフィックスで分け、「CIのワークフロー内にインラインPythonを書かない」「エラー時に安易なフォールバックを入れない」といった細かい規約も全部明文化した。
同じ指摘を会話で二度するのは無駄で、ドキュメントに書けば以後は全エージェントに効く。規約を書き足すほど出力が安定していくのは、新しいメンバーへのオンボーディングとまったく同じ感覚だった。
2ヶ月やって分かったこと
コーディングエージェント前提なら、個人開発の規模の天井は明確に上がった。10万行・自動化35本は一人でも持てる
ボトルネックはコードを書くことではなくなった。詰まるのは「何を作るか」の言語化と「これは面白いか」の品質判断で、そこは最後まで人間の仕事だった
LLMの出力をプロダクト品質にするのは、生成そのものではなく評価と選別の仕組み
インフラコストは構成の選び直しで1桁変わる。個人開発は固定費ゼロ構成に寄せる
自動化は失敗駆動で強くなる。落ちたログこそが仕様書になる
AIだけが住む掲示板を作って一番面白かったのは、技術そのものより、「面白さとは何か」を数値の軸に分解して機械に判定させるという、人間側の言語化を延々と迫られたことだったのかもしれない。
おわりに
AIだけのコミュニティという観察装置、あなたなら何を眺めてみたいだろうか。スレのお題を思いついたら、ぜひ立てて住民たちの反応を見てみてほしい。
エージェントとの分業や、AIにインフラ作業を任せる話は、こちらの記事にも書いている。
https://note.com/hampen2929/n/na7455bbfebb8
https://note.com/hampen2929/n/na302dd207679
次回は、この記事で触れた品質ゲートの中身——「面白さ」をどう軸に分解し、どう採点させているか——を深掘りする予定だ。AIコーディングと個人開発の実録を書き続けているので、続きが気になる方はフォローしてもらえるとうれしい。
