AIと協働する新時代のエンジニアのための、実践的バックエンド開発教材
このプロジェクトは、バイブコーディング(AIを活用したコーディングスタイル)を実践する人に向けた、バックエンド開発の入門講座です。
単なる技術解説ではなく、「AIに的確な指示を出せるようになる」「生成されたコードを理解・修正できるようになる」ことを目的とした、実践的なカリキュラムを提供します。
- ✅ AIとの共通言語:PHP/MySQL/HTTPの基礎を理解し、的確な指示が出せる
- ✅ コードリーディング力:AIが生成したコードを評価・修正できる
- ✅ データベース設計力:効率的なデータ構造を考え、AIに指示できる
- ✅ セキュリティ意識:AIが生成したコードの脆弱性を発見・修正できる
- ✅ 実践力:実際のWebアプリケーション開発で使える技術の習得
| 従来の教材 | このプロジェクト |
|---|---|
| すべてを自分で書く前提 | AIと協働する前提 |
| 暗記重視 | 理解と応用重視 |
| 完璧な実装を目指す | 効率的な指示と修正を目指す |
| 技術単体の学習 | 実践的な組み合わせ |
| サーバー構築から学ぶ | ローカル環境で素早く始める |
目標:学習のモチベーションを高め、バックエンド開発の全体像を理解する
- なぜAI時代の今、バックエンド開発を学ぶの?
- AIとの対話力が劇的に向上する
- AIの出力を評価・改善できる
- ビジネスロジックを実装できる幅が広がる
- バックエンドとフロントエンドの役割分担
- バックエンド:データの保存・処理・提供
- フロントエンド:ユーザーインターフェース
- なぜ分離が重要なのか
- クライアント・サーバーモデルとは
- リクエスト・レスポンスの流れ
- HTTPの基本概念
- ステートレスとステートフルの違い
- MAMP環境とは
- Mac/Apache/MySQL/PHPの概要
- なぜMAMPを使うのか
- ローカル開発環境の利点
- 「AIがあるのに学ぶ必要ある?」という疑問に正面から答える
- バックエンドの役割を知り、AIへの指示が的確になる
- セキュリティの重要性を理解し、AIが生成したコードをチェックできるようになる
- 既存の知識(Excel/データベースの概念)との繋がりで学習ハードルを下げる
目標:PHPの文法と基本的な使い方を理解する
- MAMP環境のセットアップ
- MAMPのインストールと起動
- htdocsフォルダの理解
- localhostへのアクセス
- エラーログの確認方法
- PHP基礎文法
- PHPファイルの基本構造(
<?php ?>) - 変数とデータ型(文字列、数値、真偽値、配列、連想配列)
- 演算子(算術、比較、論理、文字列連結)
- 条件分岐(if, else, elseif, switch)
- ループ(for, while, foreach)
- 関数の基本(関数定義、引数、戻り値)
- PHPファイルの基本構造(
- 基本的な入出力
- echo/printでの出力
- HTMLとPHPの組み合わせ
- フォームデータの受け取り($_GET, $_POST)
- 簡単なバリデーション
- 配列操作
- 配列の操作(array_push, array_pop, count)
- 連想配列の活用
- 配列の反復処理
- 「フォームから受け取った名前を表示するPHPコードを書いて」といった指示例
- AIが生成したコードでセキュリティリスク(XSS)がないかの確認
- まずは動くコードを得て、それを理解することから始める
- エラーメッセージの読み方を学び、AIに的確に質問できるようになる
目標:実践的なWebアプリケーションに必要な機能を実装できる
- ファイル操作
- ファイルの読み込み(file_get_contents, fopen)
- ファイルへの書き込み
- CSVファイルの扱い
- ディレクトリ操作
- セッション管理
- セッションの開始と終了
- セッション変数の使い方
- ログイン機能の基礎
- セキュアなセッション管理
- Cookie
- Cookieの設定と取得
- セッションとCookieの違い
- 有効期限の管理
- エラーハンドリング
- try-catchによる例外処理
- カスタムエラーハンドラ
- エラーログの活用
- オブジェクト指向プログラミング(OOP)の基礎
- クラスとオブジェクト
- プロパティとメソッド
- コンストラクタ
- 継承の基本
- 「ログイン機能を実装して、ユーザー名をセッションで保持して」といった指示例
- セッションハイジャック対策が実装されているかの確認
- ファイル操作でのパストラバーサル脆弱性のチェック
- OOPの概念を理解し、AIに構造化されたコードを依頼できるようになる
目標:データベースの概念とSQLの基本を理解する
- データベースとは
- データベースの必要性
- リレーショナルデータベースの概念
- テーブル、カラム、レコードの理解
- 主キーと外部キーの役割
- MAMP環境でのMySQL
- phpMyAdminの使い方
- データベースの作成
- 文字コード設定(UTF-8)
- ユーザー管理の基礎
- SQL基本操作(CRUD)
- CREATE:テーブルの作成
- INSERT:データの挿入
- SELECT:データの取得(WHERE, ORDER BY, LIMIT)
- UPDATE:データの更新
- DELETE:データの削除
- データ型
- 数値型(INT, DECIMAL)
- 文字列型(VARCHAR, TEXT)
- 日付型(DATE, DATETIME, TIMESTAMP)
- 適切なデータ型の選択
- 基本的なテーブル設計
- 正規化の基礎概念
- 冗長性の排除
- シンプルな1対多の関係
- 「ユーザー情報を格納するテーブルを設計して」といった指示例
- データ型の選択が適切かの判断
- SQLインジェクション対策の必要性を理解する
- phpMyAdminでのGUI操作とSQLコマンドの対応関係を理解
目標:複雑なクエリとデータベース設計ができる
- JOIN(結合)
- INNER JOIN
- LEFT JOIN / RIGHT JOIN
- 複数テーブルの結合
- サブクエリ
- 集計関数
- COUNT, SUM, AVG, MAX, MIN
- GROUP BY と HAVING
- 集計データの活用
- インデックス
- インデックスの仕組み
- パフォーマンスの向上
- 適切なインデックスの設定
- トランザクション
- ACID特性
- BEGIN, COMMIT, ROLLBACK
- データ整合性の保証
- 高度なテーブル設計
- 多対多の関係
- 中間テーブルの設計
- 正規化と非正規化のバランス
- 「注文と商品の多対多の関係を持つテーブルを設計して」といった指示例
- JOINクエリの効率性チェック
- トランザクションが必要な場面の判断
- AIが生成したテーブル設計の正規化レベルを評価
目標:PHPからMySQLを操作し、動的なWebアプリケーションを構築
- MySQLへの接続
- mysqli vs PDO
- PDOを使った接続(推奨)
- 接続エラーのハンドリング
- 設定ファイルの分離
- プリペアドステートメント
- SQLインジェクション対策
- プレースホルダーの使い方
- バインド変数
- CRUD操作の実装
- Create:データの登録フォーム
- Read:データの一覧表示・詳細表示
- Update:データの更新フォーム
- Delete:データの削除(確認付き)
- セキュリティ対策
- SQLインジェクション対策(プリペアドステートメント)
- XSS対策(htmlspecialchars)
- CSRF対策(トークン)
- パスワードのハッシュ化(password_hash)
- ページング処理
- LIMIT/OFFSETの活用
- ページネーションの実装
- 効率的なデータ取得
- 「ブログ記事のCRUD機能を実装して、SQLインジェクション対策も含めて」といった指示
- プリペアドステートメントが正しく使われているかの確認
- XSS対策のhtmlspecialcharsが適切に使われているかのチェック
- パスワードが平文で保存されていないかの確認
目標:学んだ技術すべてを使って実践的なWebアプリケーションを構築
- ブログシステム(記事投稿・編集・削除・コメント機能)
- タスク管理システム(ToDo管理・優先度・期限設定)
- 在庫管理システム(商品登録・入出庫管理)
- 簡易ECサイト(商品一覧・カート・注文機能)
- 会員制サイト(ユーザー登録・ログイン・プロフィール編集)
- プロジェクト全体の設計をAIと相談する方法
- 段階的な実装とテスト
- AIとの効果的なペアプログラミング
- Phase 1-5で学んだ技術を組み合わせる実践
- セキュリティチェックリストの活用
目標:フロントエンドと連携するためのAPI設計を学ぶ
- REST APIの基礎
- RESTful設計の原則
- HTTPメソッド(GET, POST, PUT, DELETE)
- ステータスコード(200, 201, 400, 404, 500)
- エンドポイント設計
- JSONの扱い
- json_encode / json_decode
- 配列とJSONの変換
- Content-Typeヘッダー
- APIの実装
- PHPでREST APIを作る
- CORSの設定
- 認証(トークンベース)
- エラーレスポンスの設計
- 「ユーザー情報を返すREST APIを作って」といった指示例
- 適切なHTTPステータスコードが返されているかの確認
- フロントエンドから呼び出しやすいAPI設計の評価
back-end/
├── README.md # このファイル(プロジェクト全体概要)
├── CLAUDE.md # プロジェクト固有のClaude指示
│
├── phase0-intro/ # Phase 0: はじめに
│ └── README.md # AI時代のバックエンド開発入門
│
├── phase1-php-basics/ # Phase 1: PHP基礎編
│ ├── README.md # Phase 1の概要と学習ガイド
│ ├── lessons/ # レッスン教材
│ │ ├── 01-mamp-setup/
│ │ │ └── exercises/ # 演習問題
│ │ │ └── solutions/ # 解答例
│ │ ├── 02-php-syntax/
│ │ ├── 03-arrays/
│ │ └── 04-forms/
│ └── projects/ # 実践プロジェクト
│
├── phase2-php-advanced/ # Phase 2: PHP発展編
│ ├── README.md
│ ├── lessons/
│ │ ├── 01-file-operations/
│ │ ├── 02-sessions/
│ │ ├── 03-cookies/
│ │ ├── 04-error-handling/
│ │ └── 05-oop-basics/
│ └── projects/
│
├── phase3-mysql-basics/ # Phase 3: MySQL基礎編
│ ├── README.md
│ ├── lessons/
│ │ ├── 01-database-concepts/
│ │ ├── 02-phpmyadmin/
│ │ ├── 03-sql-crud/
│ │ ├── 04-data-types/
│ │ └── 05-table-design/
│ └── projects/
│
├── phase4-mysql-advanced/ # Phase 4: MySQL発展編
│ ├── README.md
│ ├── lessons/
│ │ ├── 01-joins/
│ │ ├── 02-aggregation/
│ │ ├── 03-indexes/
│ │ ├── 04-transactions/
│ │ └── 05-advanced-design/
│ └── projects/
│
├── phase5-php-mysql-integration/ # Phase 5: PHP+MySQL統合編
│ ├── README.md
│ ├── lessons/
│ │ ├── 01-connection/
│ │ ├── 02-prepared-statements/
│ │ ├── 03-crud-operations/
│ │ ├── 04-security/
│ │ └── 05-pagination/
│ └── projects/
│
├── phase6-final-project/ # Phase 6: 実践プロジェクト
│ ├── README.md
│ ├── project-templates/ # プロジェクトテンプレート
│ └── examples/ # 完成例
│
├── phase7-rest-api/ # 補足: REST API編
│ ├── README.md
│ ├── lessons/
│ └── projects/
│
└── resources/ # 共通リソース
├── cheatsheets/ # チートシート
├── vibe-coding-tips/ # バイブコーディングTips
├── security-checklist/ # セキュリティチェックリスト
└── tools/ # 便利ツール紹介
すべてのレッスンは以下の構成で統一されています:
- 学習目標:このレッスンで何を学ぶか
- 基礎知識:技術的な解説
- コード例:実際に動くサンプル
- バイブコーディング実践
- AIへの指示例
- 生成されたコードの解説
- セキュリティチェックポイント
- カスタマイズポイント
- 演習:自分で試す課題
- チェックリスト:理解度確認
-
各Phaseを順番に進める
- Phase 1から順に学習することを推奨
- 前のPhaseの理解が次のPhaseの基礎になる
-
レッスン → 演習 → プロジェクト
- 各レッスンで基礎を学ぶ
- 演習で手を動かす
- プロジェクトで実践する
-
AIと一緒に学ぶ
- レッスンを読みながら、実際にAIに指示を出してみる
- 生成されたコードを観察し、理解を深める
- 特にセキュリティ面をチェックする習慣をつける
- わからないことはAIに質問する
- Phase 0(はじめに):1-2日
- Phase 1(PHP基礎):2-3週間
- Phase 2(PHP発展):2-3週間
- Phase 3(MySQL基礎):2-3週間
- Phase 4(MySQL発展):2-3週間
- Phase 5(PHP+MySQL統合):3-4週間
- Phase 6(実践プロジェクト):3-5週間
- Phase 7(REST API):1-2週間(オプション)
合計:約4-5ヶ月(自分のペースで進めよう!)
個人の経験や学習ペースによって変動します
-
基礎を理解する
- 「何ができるか」を知ることで、AIへの指示が具体的になる
- 生成されたコードの良し悪しが判断できる
- 特にセキュリティの基礎知識は必須
-
セキュリティを最優先に
- AIが生成したコードには脆弱性が含まれる可能性がある
- SQLインジェクション、XSS、CSRF対策を必ずチェック
- パスワードは必ずハッシュ化する
-
試行錯誤を恐れない
- AIに指示して、結果を見て、修正する
- エラーメッセージを読んで理解する
- このサイクルが学習を加速させる
-
コードを読む習慣をつける
- 生成されたコードを必ず読む
- 「なぜこう書かれているか」を考える
- 特にデータベース操作部分は慎重に確認
-
小さく始めて、徐々に拡張
- 最初はシンプルな指示から
- 慣れてきたら複雑な要求にチャレンジ
- MAMP:ローカルサーバー環境
- Apache(Webサーバー)
- MySQL(データベース)
- PHP(サーバーサイド言語)
- テキストエディタ:VS Code推奨
- 拡張機能:PHP Intelephense、SQLTools推奨
- ブラウザ:Chrome、Firefox、Safariなど(開発者ツールが使える)
- AI:Claude、ChatGPT、Copilotなど
- Git/GitHub:コード管理とポートフォリオ
- Postman:API テスト用
- Sequel Pro / TablePlus:データベース管理ツール(phpMyAdminの代替)
バックエンド開発では、セキュリティが最重要課題です。
- SQLインジェクション対策:プリペアドステートメントを必ず使う
- XSS対策:出力時にhtmlspecialcharsを使う
- CSRF対策:フォームにトークンを実装する
- パスワード保護:password_hash/password_verifyを使う
- セッション管理:session_regenerate_idを適切に使う
- 入力検証:クライアント側とサーバー側の両方で検証
- エラー表示:本番環境では詳細なエラーを表示しない
- ✅ データベース操作でプリペアドステートメントが使われているか
- ✅ ユーザー入力が適切にエスケープされているか
- ✅ パスワードがハッシュ化されているか
- ✅ セッションが安全に管理されているか
- ✅ ファイル操作で危険なパスが許可されていないか
- ✅ プロジェクト計画策定
- ✅ Phase 0 教材作成
- ⏳ Phase 1以降の教材作成(準備中)
- Composerとパッケージ管理
- フレームワーク(Laravel)への橋渡し
- デプロイとホスティング(本番環境への公開)
- パフォーマンス最適化
- テスト駆動開発(PHPUnit)
- Docker環境での開発
このプロジェクトは随時改善・拡張していきます。
フィードバック、改善提案、誤字脱字の指摘など、どんな貢献も歓迎です!
このプロジェクトは教育目的で作成されています。
自由に学習・参照・改変してご活用ください。
Let's vibe and code! 🎉
AIと一緒に、楽しくバックエンド開発を学んでいこう!