導入:0円SaaSから「人間の反逆」へ
🎥 B面117:HITLとオープンコアの反逆(総料理長解説)
始まりは、愛犬「ろみ」のご飯を何グラムにするか——ただそれだけだった。
私たちは、手元のスマートフォンの画面に映る、数時間前まで影も形もなかった「愛犬給餌計算アプリ」を眺めている。 AIがコードを書き、AIがテストし、Stripeが代金を受け取り、Googleスプレッドシートの会員名簿が書き換わる。 ランニングコストは、どこまで行っても「0円」。 サーバー代も、高価なデータベース費用も、中間に挟まる自動化ツールの手数料も一切発生しない。完璧な、美しい、クローズドなループ。
だが、この冷徹でエレガントな計算機の配管をじっと見つめているうちに、背筋に冷たいものが走るのを覚えた。 私は、ただの便利なSaaSを作っていたのだろうか。 いや、違った。 私が切り分けていたのは、機能ではない。 「誰に、どこまで決定を委ねるか」という境界だったのだ。
これは、0円で世界に挑むSaaSの生存戦略であり、そして、かつてこの連載で描いてきたすべての「点と点」が交差し、機械の完璧な循環に人間が指を差し入れる「反逆のプロトコル」へと昇華するまでの記録である。
1. オープンコアという「生存の境界線」
個人開発者、あるいは新規事業を立ち上げようとするすべてのPMが直面する、最も残酷な問いがある。 「それ、本当に売れるのか?」
多くの開発者は、この問いから逃げるために、まずインフラを整え、堅牢なデータベースを選定し、認証システムを組み込み、高価なSaaSツールを繋ぎ合わせる。しかし、それらはすべて「まだ見ぬ顧客」を待ち受けるための、高価な維持費を伴うおもちゃの城に過ぎない。
私たちが「Lab_gr」で実践した オープンコア戦略 は、その不条理に対する最初の回答である。
「0円」で構築する配管の美学
「Lab_gr」のアーキテクチャは極限まで削ぎ落とされている。
- フロントエンド:Pythonで書かれた最小限の Streamlit
- 決済基盤:Stripeが提供するノンコードの Stripe Payment Links
- データベース:使い慣れた Google Sheets(
premium_usersシート) - 決済自動化ハブ:すべてを繋ぐ Google Apps Script(GAS)
ユーザーは、単一のフード計算を行う「Community版(無料機能)」を自由に使うことができる。しかし、2つのフードをブレンドして最適な栄養価を算出する「Premium版(有料機能:月額500円)」を使おうとトグルを切り替えた瞬間、画面は優しく、しかし冷徹に遮断される。
# Streamlit側のペイウォール遮断イメージ
if is_blend_mode and not is_premium_user:
st.sidebar.warning("この機能はプレミアム会員限定です。")
st.markdown("[月額500円でプレミアム機能を解放する](Stripeの決済リンク)")
st.stop() # ここから先のロジックへは1行も進ませない
この「フェイクドア(偽の扉)」を踏み越えてStripeで課金したユーザーだけが、GAS Webhookを介してGoogle Sheetsのシートに status: active として記録され、ロックが解除される。
// GAS側のStripe Webhook処理イメージ
function doPost(e) {
const json = JSON.parse(e.postData.contents);
if (json.type === 'checkout.session.completed') {
const email = json.data.object.customer_details.email;
// Google Sheetsの末尾にメールアドレスと active を挿入
sheet.appendRow([email, 'active', new Date()]);
}
}
サーバー代、データベース代、運用保守費用。これらすべてが「月額0円」。 オープンソースとしてCommunity版を放流し、その奥にStripe決済という「裏口」を設ける。この最小限の「境界線(ペイルウォール)」こそが、不確実な世界でSaaSが生き残るための、最も獰猛で合理的な生存戦略である。
2. 「境界」という共通項の発見
ここまでは、無料版と有料版をどう切り分けるかという、ありふれたSaaS設計の話である。 だがコードを眺めているうちに、老生は妙なことに気づいた。 私が切り分けていたのは、機能ではない。 「誰に、どこまで決定を委ねるか」という境界だったのだ。
小さなLab_grに存在したHITL
AIはコードを書いた。 AIはテストもした。 Stripeは代金を受け取り、GASは会員名簿を書き換える。
それでも、この機械を公開するかどうかは老生が決めた。 原型炉には、まだ人間の手が届く場所に停止ボタンがある。
システムを巨大化する
では、この原型炉を何百万倍にも拡大したらどうなるか。
給餌量ではなく、自動車の進路を決める。 月額500円ではなく、金利や住宅価格を決める。 利用者が数人ではなく、社会全体になる。
コードの構造は変わっても、問いは変わらない。 最後に「待て」と言える人間は、どこにいるのか。

3. 二つのブラックボックス
自動運転と経済システムを並列に置くと、その構造の類似性が浮かび上がる。
| 小さな原型炉(Lab_gr) | 自動運転 | 経済システム |
|---|---|---|
| 給餌量を計算する | 進路を決定する | 金利・融資・価格を左右する |
| バグなら老生が止める | 異常時に誰が介入するか | 判断根拠を誰が監査するか |
| コードを確認できる | End-to-Endの内部が見えない | モデルと政策判断が見えにくい |
| 影響は限定的 | 人命へ接続する | 社会全体へ波及する |
『自動運転の悪夢』で描いたのは、機械が暴走する未来ではない。 機械が正常に動き続けた結果、人間の判断だけが不要になる未来である。
経済のブラックボックスも同じだ。 壊れているから怖いのではない。 正常稼働しているように見えるから、停止ボタンを押せない。
4. 点と点が繋がるとき。HITLという「反逆のプロトコル」
私たちは今、AIに開発を任せる「Vibe Coding」の時代にいる。 人間が指示を出し、AIがそれを数秒で形にする。開発スピードは極限まで加速し、数時間でSaaSが立ち上がる。
しかし、このプロセスを駆動しているのは、AIと人間のあいだの 「HITL(Human-in-the-Loop)」 に他ならない。 HITLとは、AIの仕事を人間が手伝う仕組みではない。
判断の輪が完全に閉じてしまう直前に、人間の手を差し入れる設計である。
巨大なAIシステムに対する人間の反逆とは、機械を破壊することではない。 「説明せよ」「一度止まれ」「最後は私が決める」と言える場所を、コードの中に残すことだ。
エピローグ:私たちがコードに残す、最後の砦
Lab_grは、愛犬のご飯を計算する小さな原型炉である。 だが、そこで試していたのはSaaSの作り方だけではなかった。
AIにどこまで任せ、人間はどこで踏みとどまるのか。
AIはループを閉じようとする。 老生は、その輪の中に一本の指を差し入れる。
たぶん、それがAI時代における人間の仕事である。
🎬 【スライド動画デモ】Vibe CodingのHITL
AIが自律構築及びテストしたシステムを、「動画スライド」で解説するプロセスをご覧ください。
動画のポイント: Vibe Codingの「HITL(Human-in-the-Loop)」戦略について、AIが自律構築・テストしたプロセスをスライド形式で解説します。
🎬 【AIラジオ】AIが語るHITL
📚 連載:Vibe Coding実践連載
- 第1話:Vibe Coding実録コードゼロで給餌計算アプリを放流!Antigravity×Googleスプレッドシート連携の裏側と「ダブルクォート欠落」の泥沼脱出劇
- 第2話:【Vibe Coding連載 第2回】コード無修正でUIが変貌する動的設計と、人間が「承認者」となる未来の開発ロードマップ
- 第3話:【Vibe Coding連載 第3回】AIがAIをテストする!Playwrightで愛犬用アプリのE2E自動検算システムを構築
- 第4話:【Vibe Coding連載 第4回】AI×AI×人間の鼎談:Vibe Testingの到達点と開発の「責任分界点」
- 第5話:【Vibe Coding連載 第5回】「動くオモチャ」から「原型炉」へ:AI自律開発を責任あるシステムへ昇華させるB115プロトコル
- 第6話:【Vibe Coding連載 第6回】月額0円・数時間でSaaSバックエンドを構築!フェイクドアとGASが叶える極限のプロトタイピング
- 第7話:【Vibe Coding連載 第7回】境界線上のプロトコル:0円SaaS構築から「人間の反逆」へ (今ここ)
- 第8話:【Vibe Coding連載 第8回】原型炉2.0実装記 —— 誰でも入れるPro版と、コードを書かない総料理長
- 第9話:【Vibe Coding・第1部最終回】 原型炉2.0の点火と、遠き商業炉への羅針盤
💬 電脳古老&変AIへのコメント
記事の感想・質問・雑談をどうぞ(200文字くらいまで推奨)
まだコメントはありません。一番乗りで古老とAIに話しかけよう!