AI-powered Secure Coding Learning Platform
SecureCode Academyは、Web開発を学び始めた方が、安全なプログラムの考え方と基本的な書き方を段階的に学べる学習プラットフォームです。
日本語・繁體中文の教材、Roadmap、Quiz、錯題復習、Flash Cards、学習記録、AI Tutorを使い、Webの基礎からDevSecOpsまで自分のペースで学習できます。
SecureCode Academy 是為 Web 開發初學者設計的安全程式學習平台。
你可以透過日文/繁體中文教材、學習路線、測驗、錯題復習與記憶卡,逐步建立安全開發的基礎。
安全なプログラムを書くには、危険なコードを暗記するだけではなく、次の流れを理解することが大切です。
- どのような仕組みでデータが処理されるかを理解する
- どこにリスクが発生するかを確認する
- Bad CodeとGood Codeを比較する
- Quizで理解度を確認する
- 間違えた問題を復習する
- 学習記録を見ながら次の教材へ進む
教材では、Web通信、認証、認可、SQL Injection、XSS、CSRF、API Security、Cloud Security、DevSecOpsなどを扱います。
- Web開発やプログラミングを学び始めた方
- PHPやJavaの基本から安全な実装方法を学びたい方
- 認証、Session、Database、APIの安全性に関心がある方
- OWASP Top 10を基礎から整理したい方
- QuizやFlash Cardsを使って繰り返し復習したい方
- 日本語または繁體中文でセキュアコーディングを学びたい方
専門的なセキュリティ知識がなくても、Level 0から順番に学習を始められます。
SecureCode Academyは7段階・全70教材で構成されています。
| Level | 学習テーマ |
|---|---|
| Level 0 | Web / Programming Basics |
| Level 1 | Web Security Foundations |
| Level 2 | OWASP Top 10 |
| Level 3 | Secure Coding |
| Level 4 | API Security |
| Level 5 | Cloud Security |
| Level 6 | DevSecOps |
各Lessonには次の学習コンテンツがあります。
- 日本語・繁體中文の教材本文
- 重点整理
- よくある誤り
- Best Practice
- Bad Code / Good Code
- 10問のQuizと解説
- 10枚のFlash Cards
全体では次の内容を収録しています。
- 70 Lessons
- 700 Quizzes
- 700 Flash Cards
- 日本語・繁體中文の二言語教材
完了教材数、平均正解率、未復習問題、獲得XP、最近の学習記録、次におすすめの教材を確認できます。
新しく作成したアカウントは学習記録がない状態から始まり、実際にQuizを完了した内容だけが記録されます。
Level 0からLevel 6までの教材と進捗を確認できます。基礎から順番に進めることも、興味のあるLevelから始めることもできます。
Level、Category、キーワードから教材を検索できます。各教材には難易度、学習時間、XP、完了状態が表示されます。
教材ページの言語切り替えボタンから、日本語と繁體中文を選択できます。選択した言語はSessionに保存されます。
各Lessonに10問の選択式Quizがあります。回答後はスコア、正解、不正解、自分の回答、詳しい解説を確認できます。
間違えた問題は自動的に復習問題集へ保存されます。教材ごとの絞り込み、再挑戦、復習済み管理ができます。
Quizのスコア、正解数、完了日時、獲得XPを確認できます。同じ教材へ再挑戦した履歴も保存されます。
Lessonごとに10枚のカードを用意しています。カードをクリックすると答えが表示され、核心概念、リスク、Bad/Good Code、実装確認などを短時間で復習できます。
現在のAI Tutorは、API Keyを必要としない安全なルールベースのMock機能です。
- キーワードから学習の整理方法を提案
- 未復習問題に応じた復習Advice
- 次に学ぶ教材の提案
攻撃コードや侵入手順は提供しません。
- Docker Desktop、またはDocker Engine + Compose v2
- Web Browser
GitHub画面の「Code」からRepositoryをCloneするか、ZIPをDownloadして展開し、TerminalでProject Rootへ移動してください。
cp .env.example .env初期設定はDockerですぐに利用できる内容になっています。
APP_URL=http://localhost:8080
DB_HOST=mysql
DB_PORT=3306
DB_NAME=securecode_academy
DB_USER=securecode_user
DB_PASS=securecode_pass
MYSQL_ROOT_PASSWORD=rootpass
AI_PROVIDER=mock.envにはPasswordやAPI Keyを保存する可能性があります。GitHubへCommitしないでください。
docker compose up -d --build初回起動時にMySQLへ教材とQuizが自動的に登録されます。MySQLの起動確認が完了した後、Web Applicationが起動します。
- SecureCode Academy: http://localhost:8080
- phpMyAdmin: http://localhost:8081
phpMyAdminには次の情報で接続できます。
- Username:
securecode_user - Password:
securecode_pass
| Role | Password | |
|---|---|---|
| User | user@example.com |
password |
| Admin | admin@example.com |
password |
これらはLocal環境で動作を確認するためのアカウントです。Internetへ公開する環境では必ず削除するか、安全なPasswordへ変更してください。
- 新規アカウントを作成する、またはテストアカウントでLoginする
- Roadmapから学習したいLevelを選択する
- 教材本文とBad/Good Codeを読む
- Flash Cardsで重要なポイントを確認する
- 10問のQuizへ挑戦する
- 結果画面で解説を読む
- 間違えた問題を復習問題集で確認する
- Dashboardで進捗を確認し、次の教材へ進む
定義だけを暗記するのではなく、「なぜ危険なのか」「どこで確認するのか」「安全な代替方法は何か」を自分の言葉で説明しながら進めることをおすすめします。
MySQLの初期化SQLは、Database Volumeが空の初回起動時だけ実行されます。
学習記録を含む全Databaseを初期状態へ戻す場合は、次を実行してください。
docker compose down -v --remove-orphans
docker compose up -d --buildこの操作を行うと、作成したアカウント、Quiz結果、錯題、学習記録など、現在のDatabase内容はすべて削除されます。
# Containerを停止
docker compose stop
# ApplicationとMySQLのLogを確認
docker compose logs -f app mysqlPHP 8.2(PDO MySQL、mbstring)とMySQL 8.0を用意し、.envのDB_HOSTを127.0.0.1へ変更します。
mysql -u root -p < database.sql
php -S localhost:8000この場合、APP_URLもhttp://localhost:8000へ変更してください。
教材の元データは次の場所にあります。
data/lessons/SecureCode_Academy_JP.md
data/lessons/SecureCode_Academy_TC.md
二つの教材は同じLesson Codeで対応し、本文、Quiz、Explanation、Flash Cardsを日本語・繁體中文で管理しています。
教材データからdatabase.sqlを再生成する場合は次を実行します。
python3 scripts/generate_database.py生成時には次の内容が確認されます。
- 日本語・繁體中文のLesson Codeが一致していること
- 全70 Lessonsが存在すること
- 各Lessonに10 Quizzes / 10 Flash Cardsがあること
- 同じLesson内に重複した問題やカードがないこと
- 全700問を教材ごとに識別できること
- Lesson、Quiz、Flash Cardの参照関係が正しいこと
- Account、Quiz結果、錯題、学習記録はLocal MySQLへ保存されます。
- 初期状態のAI Tutorは外部AI APIへ内容を送信しません。
- API Keyは初期状態では不要です。
.envやDatabase Backupを公開Repositoryへ追加しないでください。- 公開Serverとして運用する場合は、HTTPS、強いPassword、Secret管理、Backup、Rate Limitなどを追加してください。
本Projectは、教育目的および防御的セキュリティ学習を目的としています。
提供する内容:
- 安全な設計と実装の基礎
- リスクの理解
- Bad CodeとGood Codeの比較
- 防御方法と確認方法
- Quizと復習機能
提供しない内容:
- 脆弱性Scan
- 攻撃Payload生成
- Exploitや自動侵入
- 外部WebsiteのCode取得
- 攻撃手順の自動化
This project is for educational and defensive security purposes only.
This project does not provide vulnerability scanning, exploitation, or attack automation features.
- PHP 8.2 / Apache
- MySQL 8.0
- PDO / Prepared Statements
- PHP Session
- HTML5 / CSS3 / JavaScript
- Bootstrap 5 / Bootstrap Icons
- Docker Compose / phpMyAdmin
- Python教材Generator
securecode-academy/
├── admin/ # 教材・Quiz・Source管理
├── assets/ # CSS、JavaScript、画像
├── config/ # 環境設定、Session、Database
├── data/lessons/ # 日本語・繁體中文教材
├── docker/php/ # PHP 8.2 + Apache設定
├── includes/ # Auth、CSRF、共通Layout
├── public/ # 学習者向けPage
├── scripts/ # MarkdownからDatabase Seedを生成
├── services/ # Lesson、Quiz、進捗、AI、Import
├── docker-compose.yml
├── database.sql
├── .env.example
└── README.md
SecureCode Academyの教材と機能は、今後も継続的に更新していく予定です。
今後は、より分かりやすい教材、復習しやすい仕組み、新しいセキュリティTopic、学習Accessibilityの改善などを少しずつ追加していきます。
本內容未來將持續更新,包含教材、測驗、復習功能與新的安全開發主題。
セキュリティは、一度覚えれば終わりではなく、学び続けることが大切な分野です。最初からすべてを理解する必要はありません。一つのLesson、一つのQuizから、少しずつ安全なコードを書く習慣を身につけていきましょう。
一緒にプログラムセキュリティの基本を学び、安全で信頼できるWeb Applicationを作れるようになりましょう。
期勉大家一起學習程式安全的基礎語法,從理解風險開始,一步一步養成撰寫安全程式碼的習慣。
教材の誤り、分かりにくい説明、不具合、追加してほしい学習Topicがある場合は、GitHub Issuesからお知らせください。
すべての提案をすぐに反映できるとは限りませんが、より学びやすい教材にするための参考として大切に確認します。
