# 備品管理ハンズオン（生成AIプログラミング入門）

本研修の受講者配布プロジェクトです。課題A（CRUD業務アプリをゼロから作る）と課題B（Spring Boot のバグ修正）の2つの作業フォルダを含みます。

## フォルダ構成

- kadaiA/: 課題A。dummy_data.csv（備品50件）を元に一覧・検索・詳細のアプリをテンプレートなしで作る
- kadaiB/: 課題B。備品管理システム（Spring Boot + Thymeleaf + H2）。意図的な不具合が仕込まれている
- docs/: コーディング規約・生成物チェックリスト・セキュリティチェックリスト
- hints/: 各ステップの参考プロンプトと詰まったときの対処

## 課題Bの技術スタック

- Java 17
- Spring Boot 3.4
- Spring Data JPA + H2 Database（インメモリ）
- Thymeleaf（一覧・詳細の2画面）
- Maven（Maven Wrapper 同梱）

## 課題Bのビルド・実行

kadaiB フォルダで実行します。

```
# 起動（Windows PowerShell は .\mvnw.cmd spring-boot:run）
./mvnw spring-boot:run

# ビルド
./mvnw clean package
```

起動後 http://localhost:8080/equipments で一覧画面が開きます。
H2 コンソールは http://localhost:8080/h2-console（JDBC URL: jdbc:h2:mem:equipmentdb、ユーザー名 sa、パスワードは空欄）です。

## 業務ルール（課題B）

- 在庫が5個以下の備品は「要補充」として扱う
- 貸出は在庫の範囲内でのみ可能（在庫を0未満にしてはいけない）
- 日付の画面表示は yyyy/MM/dd 形式に統一する
- 存在しない備品IDへのアクセスは、エラー画面ではなく「見つかりません」とわかる表示にする

## コーディング規約

- パッケージ名: com.example.equipment
- サービスはインターフェース + Impl パターン
- コメントは日本語、識別子は英語
- 詳細は docs/コーディング規約.md を参照

## Claude Code での進め方

このCLAUDE.mdは Claude Code の起動時に自動で読み込まれます。技術スタック・規約・業務ルールを毎回伝え直す必要はありません。

- ターミナルで `claude` を起動し、自然言語で指示します
- 広い範囲の変更は Planモード（Shift+Tab）で計画を確認してから承認します
- 対象ファイルを `@` で指定すると、無駄な探索を減らせます
- 文脈が長くなったら `/clear` でリセットします

## してはいけないこと

- kadaiA/dummy_data.csv と kadaiB/src/main/resources/data.sql の書き換え
- 課題と無関係なファイルの削除
- 実在する社名・個人情報の入力
