モジュール 00ターム1 · 基礎
オリエンテーション:Vibe Engineer のマインドセット
ログインすると、進捗を複数のデバイスで保存できます。ログインするまでは、このブラウザに保存されます。
なぜ重要なのか
デモのユーザーはあなた1人です。良好なネットワークで、きれいなデータを使い、ハッピーパスを1回たどるだけです。本番環境には数千人のユーザー、不安定なネットワーク、悪意ある入力、同時クリック、不安定な依存先、クラウドの請求書、そして規制当局が存在します。AI ツールはデモ作りには非常に優秀です。デモと本番の間にあるギャップこそが、ポスターに載っている 111 項目そのものです。
学習目標
- プロトタイプ、MVP、本番システムの違いと、それぞれがユーザーに対して負う責任を説明できる。
- あらゆる機能を影響範囲(blast radius)で分類できる(間違っていた場合に起こりうる最悪の結果は何か)。
- テックリードの姿勢を身につける: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つ選んでください。
- すべての機能を洗い出し、それぞれに影響範囲のクラスを付けます。
- クラスが最も高い2つの機能に、5つのレンズを当てはめます。
- リポジトリの履歴全体に対して
gitleaks detectを実行します。 - 稼働中のアプリでブラウザの開発者ツールを開き、読み込まれた JS バンドルから
key、secret、sk_、service_roleを検索します。
完了の定義(Definition of Done)
振り返りの問い
111 項目のうち、AI ツールやホスティング基盤が「やってくれている」と思い込んでいたものはどれですか。それをどう検証するかを書き出してください。