Skip to content

Repository files navigation

バイブコーダーに贈るバックエンド開発入門講座 🚀

AIと協働する新時代のエンジニアのための、実践的バックエンド開発教材

📖 プロジェクト概要

このプロジェクトは、バイブコーディング(AIを活用したコーディングスタイル)を実践する人に向けた、バックエンド開発の入門講座です。

単なる技術解説ではなく、「AIに的確な指示を出せるようになる」「生成されたコードを理解・修正できるようになる」ことを目的とした、実践的なカリキュラムを提供します。

🎯 このプロジェクトの目的

バイブコーダーが得られるもの

  • AIとの共通言語:PHP/MySQL/HTTPの基礎を理解し、的確な指示が出せる
  • コードリーディング力:AIが生成したコードを評価・修正できる
  • データベース設計力:効率的なデータ構造を考え、AIに指示できる
  • セキュリティ意識:AIが生成したコードの脆弱性を発見・修正できる
  • 実践力:実際のWebアプリケーション開発で使える技術の習得

従来の教材との違い

従来の教材 このプロジェクト
すべてを自分で書く前提 AIと協働する前提
暗記重視 理解と応用重視
完璧な実装を目指す 効率的な指示と修正を目指す
技術単体の学習 実践的な組み合わせ
サーバー構築から学ぶ ローカル環境で素早く始める

📚 カリキュラム構成

Phase 0: はじめに - AI時代のバックエンド開発 🌟

目標:学習のモチベーションを高め、バックエンド開発の全体像を理解する

学習内容

  • なぜAI時代の今、バックエンド開発を学ぶの?
    • AIとの対話力が劇的に向上する
    • AIの出力を評価・改善できる
    • ビジネスロジックを実装できる幅が広がる
  • バックエンドとフロントエンドの役割分担
    • バックエンド:データの保存・処理・提供
    • フロントエンド:ユーザーインターフェース
    • なぜ分離が重要なのか
  • クライアント・サーバーモデルとは
    • リクエスト・レスポンスの流れ
    • HTTPの基本概念
    • ステートレスとステートフルの違い
  • MAMP環境とは
    • Mac/Apache/MySQL/PHPの概要
    • なぜMAMPを使うのか
    • ローカル開発環境の利点

バイブコーダー向けポイント

  • 「AIがあるのに学ぶ必要ある?」という疑問に正面から答える
  • バックエンドの役割を知り、AIへの指示が的確になる
  • セキュリティの重要性を理解し、AIが生成したコードをチェックできるようになる
  • 既存の知識(Excel/データベースの概念)との繋がりで学習ハードルを下げる

👉 Phase 0の詳細を見る


Phase 1: PHP基礎編 - 言語の基礎 ⚡

目標:PHPの文法と基本的な使い方を理解する

学習内容

  • MAMP環境のセットアップ
    • MAMPのインストールと起動
    • htdocsフォルダの理解
    • localhostへのアクセス
    • エラーログの確認方法
  • PHP基礎文法
    • PHPファイルの基本構造(<?php ?>
    • 変数とデータ型(文字列、数値、真偽値、配列、連想配列)
    • 演算子(算術、比較、論理、文字列連結)
    • 条件分岐(if, else, elseif, switch)
    • ループ(for, while, foreach)
    • 関数の基本(関数定義、引数、戻り値)
  • 基本的な入出力
    • echo/printでの出力
    • HTMLとPHPの組み合わせ
    • フォームデータの受け取り($_GET, $_POST)
    • 簡単なバリデーション
  • 配列操作
    • 配列の操作(array_push, array_pop, count)
    • 連想配列の活用
    • 配列の反復処理

バイブコーダー向けポイント

  • 「フォームから受け取った名前を表示するPHPコードを書いて」といった指示例
  • AIが生成したコードでセキュリティリスク(XSS)がないかの確認
  • まずは動くコードを得て、それを理解することから始める
  • エラーメッセージの読み方を学び、AIに的確に質問できるようになる

👉 Phase 1の詳細を見る


Phase 2: PHP発展編 - 実践的な機能 🎮

目標:実践的なWebアプリケーションに必要な機能を実装できる

学習内容

  • ファイル操作
    • ファイルの読み込み(file_get_contents, fopen)
    • ファイルへの書き込み
    • CSVファイルの扱い
    • ディレクトリ操作
  • セッション管理
    • セッションの開始と終了
    • セッション変数の使い方
    • ログイン機能の基礎
    • セキュアなセッション管理
  • Cookie
    • Cookieの設定と取得
    • セッションとCookieの違い
    • 有効期限の管理
  • エラーハンドリング
    • try-catchによる例外処理
    • カスタムエラーハンドラ
    • エラーログの活用
  • オブジェクト指向プログラミング(OOP)の基礎
    • クラスとオブジェクト
    • プロパティとメソッド
    • コンストラクタ
    • 継承の基本

バイブコーダー向けポイント

  • 「ログイン機能を実装して、ユーザー名をセッションで保持して」といった指示例
  • セッションハイジャック対策が実装されているかの確認
  • ファイル操作でのパストラバーサル脆弱性のチェック
  • OOPの概念を理解し、AIに構造化されたコードを依頼できるようになる

👉 Phase 2の詳細を見る


Phase 3: MySQL基礎編 - データベースの基礎 🗄️

目標:データベースの概念と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コマンドの対応関係を理解

👉 Phase 3の詳細を見る


Phase 4: MySQL発展編 - 高度なデータ操作 📊

目標:複雑なクエリとデータベース設計ができる

学習内容

  • JOIN(結合)
    • INNER JOIN
    • LEFT JOIN / RIGHT JOIN
    • 複数テーブルの結合
    • サブクエリ
  • 集計関数
    • COUNT, SUM, AVG, MAX, MIN
    • GROUP BY と HAVING
    • 集計データの活用
  • インデックス
    • インデックスの仕組み
    • パフォーマンスの向上
    • 適切なインデックスの設定
  • トランザクション
    • ACID特性
    • BEGIN, COMMIT, ROLLBACK
    • データ整合性の保証
  • 高度なテーブル設計
    • 多対多の関係
    • 中間テーブルの設計
    • 正規化と非正規化のバランス

バイブコーダー向けポイント

  • 「注文と商品の多対多の関係を持つテーブルを設計して」といった指示例
  • JOINクエリの効率性チェック
  • トランザクションが必要な場面の判断
  • AIが生成したテーブル設計の正規化レベルを評価

👉 Phase 4の詳細を見る


Phase 5: PHP + MySQL統合編 🔗

目標: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が適切に使われているかのチェック
  • パスワードが平文で保存されていないかの確認

👉 Phase 5の詳細を見る


Phase 6: 実践プロジェクト 🏗️

目標:学んだ技術すべてを使って実践的なWebアプリケーションを構築

プロジェクト例

  • ブログシステム(記事投稿・編集・削除・コメント機能)
  • タスク管理システム(ToDo管理・優先度・期限設定)
  • 在庫管理システム(商品登録・入出庫管理)
  • 簡易ECサイト(商品一覧・カート・注文機能)
  • 会員制サイト(ユーザー登録・ログイン・プロフィール編集)

バイブコーダー向けポイント

  • プロジェクト全体の設計をAIと相談する方法
  • 段階的な実装とテスト
  • AIとの効果的なペアプログラミング
  • Phase 1-5で学んだ技術を組み合わせる実践
  • セキュリティチェックリストの活用

👉 Phase 6の詳細を見る


補足: REST APIとJSON 🌐

目標:フロントエンドと連携するための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/                  # 便利ツール紹介

🎨 各レッスンの構成

すべてのレッスンは以下の構成で統一されています:

  1. 学習目標:このレッスンで何を学ぶか
  2. 基礎知識:技術的な解説
  3. コード例:実際に動くサンプル
  4. バイブコーディング実践
    • AIへの指示例
    • 生成されたコードの解説
    • セキュリティチェックポイント
    • カスタマイズポイント
  5. 演習:自分で試す課題
  6. チェックリスト:理解度確認

🚀 学習の進め方

推奨ステップ

  1. 各Phaseを順番に進める

    • Phase 1から順に学習することを推奨
    • 前のPhaseの理解が次のPhaseの基礎になる
  2. レッスン → 演習 → プロジェクト

    • 各レッスンで基礎を学ぶ
    • 演習で手を動かす
    • プロジェクトで実践する
  3. 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を最大限活用するために

  1. 基礎を理解する

    • 「何ができるか」を知ることで、AIへの指示が具体的になる
    • 生成されたコードの良し悪しが判断できる
    • 特にセキュリティの基礎知識は必須
  2. セキュリティを最優先に

    • AIが生成したコードには脆弱性が含まれる可能性がある
    • SQLインジェクション、XSS、CSRF対策を必ずチェック
    • パスワードは必ずハッシュ化する
  3. 試行錯誤を恐れない

    • AIに指示して、結果を見て、修正する
    • エラーメッセージを読んで理解する
    • このサイクルが学習を加速させる
  4. コードを読む習慣をつける

    • 生成されたコードを必ず読む
    • 「なぜこう書かれているか」を考える
    • 特にデータベース操作部分は慎重に確認
  5. 小さく始めて、徐々に拡張

    • 最初はシンプルな指示から
    • 慣れてきたら複雑な要求にチャレンジ

🛠️ 開発環境

必要なもの

  • 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の代替)

⚠️ セキュリティに関する重要な注意

バックエンド開発では、セキュリティが最重要課題です。

必ず守るべきルール

  1. SQLインジェクション対策:プリペアドステートメントを必ず使う
  2. XSS対策:出力時にhtmlspecialcharsを使う
  3. CSRF対策:フォームにトークンを実装する
  4. パスワード保護:password_hash/password_verifyを使う
  5. セッション管理:session_regenerate_idを適切に使う
  6. 入力検証:クライアント側とサーバー側の両方で検証
  7. エラー表示:本番環境では詳細なエラーを表示しない

AIが生成したコードのチェックポイント

  • ✅ データベース操作でプリペアドステートメントが使われているか
  • ✅ ユーザー入力が適切にエスケープされているか
  • ✅ パスワードがハッシュ化されているか
  • ✅ セッションが安全に管理されているか
  • ✅ ファイル操作で危険なパスが許可されていないか

📅 今後の展開

現在のステータス

  • ✅ プロジェクト計画策定
  • ✅ Phase 0 教材作成
  • ⏳ Phase 1以降の教材作成(準備中)

予定している追加コンテンツ

  • Composerとパッケージ管理
  • フレームワーク(Laravel)への橋渡し
  • デプロイとホスティング(本番環境への公開)
  • パフォーマンス最適化
  • テスト駆動開発(PHPUnit)
  • Docker環境での開発

🤝 コントリビューション

このプロジェクトは随時改善・拡張していきます。

フィードバック、改善提案、誤字脱字の指摘など、どんな貢献も歓迎です!

📝 ライセンス

このプロジェクトは教育目的で作成されています。

自由に学習・参照・改変してご活用ください。


Let's vibe and code! 🎉

AIと一緒に、楽しくバックエンド開発を学んでいこう!

About

バイブコーダーに贈るバックエンド開発入門講座

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages