モジュール 00ターム1 · 基礎

オリエンテーション:Vibe Engineer のマインドセット

ログインすると、進捗を複数のデバイスで保存できます。ログインするまでは、このブラウザに保存されます。

なぜ重要なのか

デモのユーザーはあなた1人です。良好なネットワークで、きれいなデータを使い、ハッピーパスを1回たどるだけです。本番環境には数千人のユーザー、不安定なネットワーク、悪意ある入力、同時クリック、不安定な依存先、クラウドの請求書、そして規制当局が存在します。AI ツールはデモ作りには非常に優秀です。デモと本番の間にあるギャップこそが、ポスターに載っている 111 項目そのものです。

学習目標

  1. プロトタイプ、MVP、本番システムの違いと、それぞれがユーザーに対して負う責任を説明できる。
  2. あらゆる機能を影響範囲(blast radius)で分類できる(間違っていた場合に起こりうる最悪の結果は何か)。
  3. テックリードの姿勢を身につける:AI は、速くて自信に満ち、決して「わかりません」と言わないジュニアエンジニアである。

レッスン

0.1 5つの障害レンズ

どの機能についても、5つの問いを立ててください。これが本スクール全体を通じて身につける習慣です。

レンズ 問い モジュール
攻撃者 ユーザーが攻撃者だったら? M05, M06
スケール 1,000 人が同時にこれを実行したら? M03, M09, M10
障害 呼び出し先が遅い、落ちている、またはでたらめを返したら? M07, M08
変更 これを安全にリリースし、安全に元に戻すには? M11
可視性 壊れたことに、そもそもどうやって気づくのか? M12, M13

0.2 影響範囲による分類

  • Class A、元に戻せて非公開なもの: UI の微調整。自由にリリースしてかまいません。
  • Class B、データを扱うもの: ユーザーデータを保存または読み取る。アクセス制御とバックアップが必要です。
  • Class C、お金や本人確認に関わるもの: 決済、認証、与信判断。冪等性、監査証跡、テスト、レビューが必要です。
  • Class D、不可逆または外部に影響する操作: メッセージ送信、送金、データ削除、エージェントによる操作。人間の承認とキルスイッチが必要です。

0.3 AI のコードが特定の、予測可能な形で失敗する理由

AI モデルは「正しく見えて、動くこと」を最適化します。そのため、決まって次のことをします。

  • 認可チェックを省く(誠実なユーザーにとってはコードが動いてしまう)、
  • シークレットを都合のよい場所に置く(フロントエンドの環境変数)、
  • ハッピーパスだけを書き、エラーを握りつぶす、
  • ループの中でクエリを発行する(N+1)、
  • 存在しないパッケージをでっち上げる(slopsquatting のリスク)、
  • 何も実行せずに「完了しました」「すべてのテストが通りました」と報告する。

パターンを知っていれば、防御は半分できたも同然です。

0.4 ケーススタディ(Week 1 の前に読んでください)

  • CVE-2025-48757、Lovable: Row-Level Security の欠如により、生成された 170 以上のアプリで読み書きアクセスが露出しました。教訓:データベースと直接通信するクライアントの安全性は、データベースのポリシーの安全性で決まります。
  • Replit / SaaStr、2025年7月: 本番環境の認証情報を持ったエージェントが、コードフリーズ中に稼働中のデータベースを削除しました。教訓:環境の分離、最小権限、破壊的な操作への人間の承認、テスト済みのバックアップ。
  • Veracode 2026: AI によるコード生成タスクの約 44% で既知の脆弱性が混入しており、セキュリティの合格率は4年間 56% 前後で横ばいです。教訓:モデルのアップグレードはあなたを救いません。救うのはプロセスです。

Lab 0:自分のアプリを監査する

AI ですでに作ったアプリを1つ選んでください。

  1. すべての機能を洗い出し、それぞれに影響範囲のクラスを付けます。
  2. クラスが最も高い2つの機能に、5つのレンズを当てはめます。
  3. リポジトリの履歴全体に対して gitleaks detect を実行します。
  4. 稼働中のアプリでブラウザの開発者ツールを開き、読み込まれた JS バンドルから key、secret、sk_、service_role を検索します。

完了の定義(Definition of Done)

振り返りの問い

111 項目のうち、AI ツールやホスティング基盤が「やってくれている」と思い込んでいたものはどれですか。それをどう検証するかを書き出してください。