🚀

TaskMaster AI を使った開発アプローチ検証メモ

に公開

はじめに

Cursor Composer と TaskMaster AI を利用して、大学向け単位計算システムの一部を試作・検証した記録です。
本格開発ではなく、AI を活用したタスク分解・進捗管理の可能性検証 が目的です。

検証の背景

  • Cursor Composer は実装フェーズで既に便利
  • 課題:「実装前の計画フェーズ」をどう AI 活用するか
  • TaskMaster AI が PRD からタスク分解できる点に着目し検証

技術スタック(検証時点)

項目 技術
フロント Next.js 14 App Router, TypeScript
UI Tailwind CSS v4, shadcn/ui, Radix UI
状態管理 Zustand, TanStack Query
API 層 tRPC
DB PostgreSQL + Prisma ORM
認証 NextAuth.js v5 (SAML 対応)
インフラ Vercel + Docker
開発 AI Cursor Composer, TaskMaster AI
モデル Claude Sonnet 4, Gemini 2.0 Flash

TaskMaster AI とは?

TaskMaster AI は、ソフトウェア開発における「実装前の計画フェーズ」を AI が支援してくれるツールです。
特に PRD(要件定義書)からタスク分解・管理までを自動化できる 点が特徴です。

✅ 主な特徴

  • PRD を読み取り、必要な実装タスクを自動で洗い出し

    • 仕様書を AI が解析して、実装に必要な工程をリストアップしてくれる
  • 依存関係を考慮して、実行順序まで整理

    • 先にやるべき基盤構築から、後続の API や UI 開発まで順序付けしてくれる
  • タスクの進捗管理も自動補助

    • 現在の進捗に応じて「次に取り組むべきタスク」を AI が提案
    • ステータス管理(pending → in-progress → done)も自動
  • Cursor Composer との統合が可能(MCP 経由)

    • 実装は Cursor で進めつつ、タスク管理は TaskMaster AI がサポート
  • 「PRD 作成 → タスク分解 → 実装着手」の流れをスムーズに整備可能

👉 TaskMaster AI 公式サイト

実施内容

① ドメイン情報準備

  • 履修規程・卒業要件等を整理し、@docsディレクトリにまとめ
  • AI に情報読み込み指示
@docs ディレクトリの情報を読み込んでください。

② TaskMaster AI セットアップ

環境構築手順

npm install -g task-master-ai
task-master init

初期ディレクトリ構成例

.
├── .cursor
│   ├── mcp.json
│   └── rules/...
├── .taskmaster
│   ├── config.json
│   ├── docs
│   ├── reports
│   ├── tasks
│   └── templates/example_prd.txt
└── その他

MCP 接続

  • Cursor > 基本設定 > Cursor Settings > MCP Tools で TaskMaster AI を有効化

ツール一覧確認

taskmaster ai のツール一覧を表示してください。
Cursor Composerの出力結果
## 主要コマンド

TaskMaster AI の利用可能な MCP ツール一覧をご紹介いたします。

## 🚀 **初期化・セットアップ**

- `initialize_project` - プロジェクトの初期化
- `models` - AI モデルの設定・管理
- `parse_prd` - PRD(製品要件定義書)の解析とタスク生成

## 📋 **タスク表示・確認**

- `get_tasks` - タスク一覧の取得
- `get_task` - 特定タスクの詳細表示
- `next_task` - 次に実行すべきタスクの特定
- `complexity_report` - 複雑度分析レポートの表示

## ✏️ **タスク作成・編集**

- `add_task` - 新しいタスクの追加
- `add_subtask` - サブタスクの追加
- `update` - 複数タスクの一括更新
- `update_task` - 特定タスクの更新
- `update_subtask` - サブタスクの更新
- `set_task_status` - タスクステータスの変更

## 🗑️ **タスク削除・整理**

- `remove_task` - タスクの削除
- `remove_subtask` - サブタスクの削除
- `clear_subtasks` - サブタスクの一括削除
- `move_task` - タスクの移動・再構成

## 🔍 **分析・展開**

- `analyze_project_complexity` - プロジェクト複雑度の分析
- `expand_task` - タスクのサブタスク展開
- `expand_all` - 全タスクの一括展開

## 🔗 **依存関係管理**

- `add_dependency` - 依存関係の追加
- `remove_dependency` - 依存関係の削除
- `validate_dependencies` - 依存関係の検証
- `fix_dependencies` - 依存関係の自動修正

## 📁 **ファイル生成**

- `generate` - タスクファイルの生成

**注意:** AI を使用するツール(`parse_prd`、`analyze_project_complexity`、`update_subtask`、`update_task`、`update`、`expand_all`、`expand_task`、`add_task`)は処理に時間がかかる場合があります。

現在利用可能なこれらのツールを使用して、プロジェクト管理を効率的に行うことができます!

---

## 💡 推奨される使用順序

1. **初期化**: `initialize_project` → `parse_prd`
2. **計画**: `analyze_project_complexity` → `expand_all`
3. **開発**: `next_task` → `get_task` → 実装 → `update_subtask` → `set_task_status`
4. **保守**: `generate` で定期的にファイル同期

## ⚠️ 重要な注意事項

- **AI 処理時間**: 🤖 マークの付いたツールは最大 1 分程度の処理時間が必要
- **MCP 推奨**: Cursor 等の統合環境では MCP ツールの使用を推奨
- **設定管理**: API キーは`.env`(CLI)または`.cursor/mcp.json`(MCP)で管理

これらのツールを活用することで、効率的なプロジェクト管理と開発が可能になります。

③ PRD の試作

Cursor Composer に PRD 作成を依頼。

@docs ディレクトリの情報を元にして、単位計算システムを作成したいです。
@example_prd.txt を雛形に prd を作成してください。
利用技術:Nextjs App Router, tailwindcss, shadcn

④ タスク作成 → 分解

タスク生成

@<PRDファイル> を元にタスクを作成してください。

分解結果

約 16 タスクが自動生成。

tree .taskmaster/tasks

.taskmaster/tasks
├── task_001.txt
├── task_002.txt
...
├── task_016.txt
└── tasks.json

サブタスク分解(例)

@task_003.txt をサブタスクに分解してください。
実際に生成されたタスク一覧

1. プロジェクト基盤環境構築
2. UIライブラリとデザインシステム構築
3. データベース設計とPrisma ORM設定
4. 認証システム実装
5. 状態管理とAPI層構築
6. 学生・科目基本データモデル実装
7. 単位・GPA計算エンジン実装
8. 履修制約チェック機能実装
9. 進級・卒業要件チェック機能実装
10. 学生向けダッシュボードUI実装
11. 履修登録インターフェース実装
12. 要件分析・レポート機能実装
13. 管理者向け機能実装
14. AI機能統合実装
15. 外部システム連携・本番環境構築
16. Docker PostgreSQL環境構築

タスク出力結果
**タスク内容**
# Task ID: 3
# Title: データベース設計とPrisma ORM設定
# Status: done
# Dependencies: 1
# Priority: high
# Description: PostgreSQL + Prisma ORMによるデータベーススキーマ設計と初期設定
# Details:
PostgreSQL 15+使用、Prisma 5.7+設定。schema.prisma作成:Student, Subject, Enrollment, GraduationRequirement, User各モデル定義。リレーション設定、インデックス最適化。マイグレーション実行(npx prisma migrate dev)。

# Test Strategy:
Prisma Studio動作確認、基本CRUD操作テスト、データ整合性制約確認
サブタスク分解 & 実装完了後 の出力結果

# Task ID: 3
# Title: データベース設計とPrisma ORM設定
# Status: done
# Dependencies: 1
# Priority: high
# Description: PostgreSQL + Prisma ORMによるデータベーススキーマ設計と初期設定
# Details:
PostgreSQL 15+使用、Prisma 5.7+設定。schema.prisma作成:Student, Subject, Enrollment, GraduationRequirement, User各モデル定義。リレーション設定、インデックス最適化。マイグレーション実行(npx prisma migrate dev)。

# Test Strategy:
Prisma Studio動作確認、基本CRUD操作テスト、データ整合性制約確認

# Subtasks:
## 1. Set up PostgreSQL Database [done]
### Dependencies: None
### Description: Install and configure PostgreSQL 15+ database server. Create a database for the unit calculation system.
### Details:
Install PostgreSQL 15 or later. Create a new database named 'unit_calculation'. Configure user access and security settings.
<info added on 2025-06-11T02:44:07.370Z>
PostgreSQLデータベースのセットアップが完了しました。

実装内容:

PostgreSQL環境確認
- インストール確認: /opt/homebrew/bin/psql にPostgreSQLがインストール済み
- バージョン確認: PostgreSQL 15.12 (Homebrew) - 要求仕様(15+)を満たす

PostgreSQLサービス管理
- サービス状況確認: brew services list | grep postgresql で停止状態を確認
- サービス起動: brew services start postgresql@15 で正常起動
- 起動確認: Successfully started postgresql@15 メッセージ確認

データベース作成
- データベース作成: createdb unit_calculation で単位計算システム用DB作成
- 接続確認: psql -d unit_calculation -c "\l" でDB一覧表示
- 作成確認: unit_calculationデータベースがリストに表示され正常作成確認

技術仕様
- データベース名: unit_calculation
- PostgreSQLバージョン: 15.12
- エンコーディング: UTF8
- 所有者: toru
- 照合順序: C
- ロケールプロバイダ: libc

次のステップ: PrismaのインストールとPostgreSQLへの接続設定の準備完了
</info added on 2025-06-11T02:44:07.370Z>

## 2. Install and Configure Prisma [done]
### Dependencies: 3.1
### Description: Install Prisma CLI and configure it to connect to the PostgreSQL database.
### Details:
Install Prisma CLI using npm or yarn. Initialize Prisma in the project. Configure the 'datasource' block in 'schema.prisma' to connect to the PostgreSQL database created in the previous step.
<info added on 2025-06-11T02:50:44.727Z>
## 実装完了報告

### 1. Prismaパッケージインストール
- **Prismaコア**: `npm install prisma @prisma/client` で正常インストール
- **依存関係**: 8つの関連パッケージが追加された
- **バージョン**: Prisma Client v6.9.0 (最新版)

### 2. Prismaプロジェクト初期化
- **初期化コマンド**: `npx prisma init` で成功
- **生成ファイル**:
  - `prisma/schema.prisma`: Prismaスキーマファイル
  - `.env`: 環境変数ファイル(DATABASE_URL設定用)

### 3. PostgreSQL接続設定
- **datasourceブロック**:
  - provider: "postgresql" ✅ 正しく設定済み
  - url: env("DATABASE_URL") ✅ 環境変数参照
- **DATABASE_URL設定**: `postgresql://toru:@localhost:5432/unit_calculation?schema=public`
  - ホスト: localhost:5432 (PostgreSQL標準ポート)
  - データベース: unit_calculation
  - ユーザー: toru
  - スキーマ: public

### 4. 接続テストと検証
- **接続確認**: `npx prisma db push` で正常接続確認
- **Prismaクライアント生成**: ./src/generated/prisma に生成済み
- **出力設定**: generator clientでカスタム出力パス設定
- **Prisma Studio**: ポート5555でバックグラウンド起動

### 技術仕様
- **Prismaバージョン**: 6.9.0
- **出力ディレクトリ**: ../src/generated/prisma
- **データソース**: PostgreSQL@localhost:5432
- **スキーマ**: public
- **環境変数管理**: .env ファイル

### 次のステップ
データベーススキーマ定義(Student, Subject, Enrollment等)の準備完了
</info added on 2025-06-11T02:50:44.727Z>

## 3. Define Database Schema [done]
### Dependencies: 3.2
### Description: Define the database schema in 'schema.prisma' including tables for student information, subject information, course registration, grade management, and graduation requirement checks.
### Details:
Define Prisma models for 'Student', 'Subject', 'CourseRegistration', 'Grade', and 'GraduationRequirement'. Include relevant fields and data types for each model.
<info added on 2025-06-11T02:52:59.972Z>
データベーススキーマ定義が完了しました。

## 実装内容

### 1. 包括的なデータベース設計
単位計算システムに必要な7つの主要モデルを定義:

#### **User** - システムユーザーモデル
- 学生・教職員共通の基本情報
- role(STUDENT/FACULTY/ADMIN)によるアクセス制御
- 1:1でStudentモデルとリレーション

#### **Department** - 学部・学科モデル
- 学部コード(例:DA = デザイン学部)
- 学生・科目・卒業要件との1:多リレーション

#### **Student** - 学生情報モデル
- 学籍番号、入学年度、現在学年
- CAP制限(maxCreditsPerSemester: 24単位)
- 総取得単位数、GPA自動計算対応
- 履修登録・成績との1:多リレーション

#### **Subject** - 科目情報モデル
- 科目コード、単位数、科目区分
- 遠隔授業フラグ、履修前提科目配列
- 開講学期、履修者上限設定

#### **Enrollment** - 履修登録モデル
- 学生-科目の多:多中間テーブル
- 年度・学期別の履修管理
- 1:1でGradeモデルとリレーション

#### **Grade** - 成績管理モデル
- 点数、評定(S/A/B/C/D/F)、GP値
- 取得単位数、合否判定
- 成績確定日の記録

#### **GraduationRequirement** - 卒業要件モデル
- 学部・入学年度・科目区分別の要件定義
- 最低必要単位数、遠隔授業上限設定

### 2. Enum定義
- **UserRole**: STUDENT/FACULTY/ADMIN
- **StudentStatus**: ENROLLED/GRADUATED/WITHDRAWN/SUSPENDED
- **SubjectCategory**: GENERAL/BASIC/SPECIALIZED/SEMINAR/GRADUATION/FREE_ELECTIVE
- **Semester**: SPRING/FALL/INTENSIVE/YEAR_LONG
- **EnrollmentStatus**: ENROLLED/DROPPED/COMPLETED

### 3. 重要な制約・インデックス
- 一意制約: email, studentId, 科目コード
- 複合一意制約: 履修登録(studentId + subjectId + year + semester)
- 外部キー制約: CASCADE削除設定
- 自動タイムスタンプ: createdAt, updatedAt

### 4. 大学特有の設計
- CAP制限(24単位/学期)
- 遠隔授業制限対応
- 学部別卒業要件対応
- 入学年度別要件変更対応

### 技術検証
- **スキーマ検証**: `npx prisma validate` ✅ 正常
- **クライアント生成**: `npx prisma generate` ✅ 43ms完了
- **型安全性**: TypeScript完全対応

### 次のステップ
リレーション・インデックス設定とマイグレーション実行の準備完了
</info added on 2025-06-11T02:52:59.972Z>

## 4. Set up Relations and Indexes [done]
### Dependencies: 3.3
### Description: Define relationships between the tables (e.g., one-to-many, many-to-many) and create indexes for efficient querying.
### Details:
Define relations between 'Student' and 'CourseRegistration', 'Subject' and 'CourseRegistration', 'Student' and 'Grade', etc. Add indexes to frequently queried fields like student ID, subject code, etc.
<info added on 2025-06-11T02:55:29.940Z>
リレーションとインデックス設定が完了しました。

## 実装内容

### 1. 既存リレーション確認
前のサブタスクで以下のリレーションが正常に定義済み:
- **User ↔ Student**: 1:1リレーション(userId外部キー)
- **Department ↔ Student**: 1:多リレーション
- **Department ↔ Subject**: 1:多リレーション
- **Department ↔ GraduationRequirement**: 1:多リレーション
- **Student ↔ Enrollment**: 1:多リレーション
- **Subject ↔ Enrollment**: 1:多リレーション
- **Enrollment ↔ Grade**: 1:1リレーション
- **Student ↔ Grade**: 1:多リレーション
- **Subject ↔ Grade**: 1:多リレーション

### 2. パフォーマンス最適化インデックス追加

#### **Department**インデックス
- `@@index([isActive])`: アクティブ学部の高速検索

#### **Student**インデックス
- `@@index([departmentId])`: 学部別学生検索
- `@@index([admissionYear])`: 入学年度別検索
- `@@index([status])`: 学籍ステータス検索
- `@@index([currentGrade])`: 学年別検索

#### **Subject**インデックス
- `@@index([departmentId])`: 学部別科目検索
- `@@index([category])`: 科目区分別検索
- `@@index([semester])`: 学期別検索
- `@@index([year])`: 年度別検索
- `@@index([isRequired])`: 必修科目検索
- `@@index([isRemote])`: 遠隔授業検索
- `@@index([isActive])`: アクティブ科目検索
- `@@index([year, semester])`: 年度×学期複合検索

#### **Enrollment**インデックス
- `@@index([studentId])`: 学生別履修検索
- `@@index([subjectId])`: 科目別履修者検索
- `@@index([year])`: 年度別履修検索
- `@@index([semester])`: 学期別履修検索
- `@@index([status])`: 履修ステータス検索
- `@@index([year, semester])`: 年度×学期複合検索
- `@@index([studentId, year])`: 学生×年度複合検索
- `@@index([studentId, semester])`: 学生×学期複合検索

#### **Grade**インデックス
- `@@index([studentId])`: 学生別成績検索
- `@@index([subjectId])`: 科目別成績検索
- `@@index([isPassed])`: 合格/不合格検索
- `@@index([letterGrade])`: 評定別検索
- `@@index([gradedAt])`: 成績確定日検索

#### **GraduationRequirement**インデックス
- `@@index([departmentId])`: 学部別要件検索
- `@@index([admissionYear])`: 入学年度別要件検索
- `@@index([category])`: 科目区分別要件検索
- `@@index([isActive])`: アクティブ要件検索

### 3. クエリパフォーマンス向上
頻繁に実行される以下のクエリが大幅に高速化:
- 学生の履修状況検索
- 学期別科目一覧取得
- 学生別成績計算
- 卒業要件チェック
- 学部・年度別統計処理

### 4. 技術検証
- **スキーマ検証**: `npx prisma validate` ✅ 正常
- **インデックス数**: 27個の最適化インデックス追加
- **複合インデックス**: 頻繁な組み合わせクエリ対応

### 次のステップ
Prismaマイグレーション実行によるデータベース実体化の準備完了
</info added on 2025-06-11T02:55:29.940Z>

## 5. Execute Prisma Migrations [done]
### Dependencies: 3.4
### Description: Generate and apply Prisma migrations to create the database schema in PostgreSQL.
### Details:
Run 'prisma migrate dev' to generate and apply the initial migration based on the 'schema.prisma' file. Verify that the tables and relationships are created correctly in the PostgreSQL database.
<info added on 2025-06-11T02:58:15.883Z>
## 実装完了報告

### マイグレーション実行結果
コマンド `npx prisma migrate dev --name "initial_schema"` を実行し、マイグレーション「initial_schema」(タイムスタンプ: 20250611025555)が正常に完了しました。

### データベース構造検証結果
**作成されたテーブル(8個)**: users, departments, students, subjects, enrollments, grades, graduation_requirements, _prisma_migrations

**作成されたEnum(5個)**: UserRole, StudentStatus, SubjectCategory, Semester, EnrollmentStatus

**作成されたインデックス(46個)**: 主キー7個、一意制約9個、複合一意制約2個、パフォーマンスインデックス28個

### リレーション検証
すべての外部キー制約とリレーションが正常に作成され、参照整合性が確保されています:
- User ↔ Student (1:1)
- Department ↔ Student/Subject/GraduationRequirement (1:多)
- Student ↔ Enrollment/Grade (1:多)
- Subject ↔ Enrollment/Grade (1:多)
- Enrollment ↔ Grade (1:1)

### Prismaクライアント更新
バージョンv6.9.0のPrismaクライアントが生成され(45ms)、完全なTypeScript型安全性が確保されました。

### マイグレーションファイル管理
マイグレーションファイル(273行のSQL)がprisma/migrations/20250611025555_initial_schema/に保存され、PostgreSQL用のロックファイルも作成されました。

データベース構造の構築が完了し、基本CRUD操作テスト実行の準備が整いました。
</info added on 2025-06-11T02:58:15.883Z>

※ この時点で「英語で分解される」現象あり → 初期プロンプトで日本語指定が重要と学習。

⑤ ひたすら、Cursor Composer  に タスク実施してもらう

タスクの分解まで完了したら、Cursor Composer からタスクの実施をしてもらう。

タスクを実装してください。
次のタスクを実施してください。
@task_004.md を実施してください。

確認しながら Accept 進行 → 試行回数制限(25 回)あり。

現時点の感想・気づき

良さそうな点

  • PRD さえある程度整理すれば、かなりいい感じにタスク分解される
  • 依存関係整理はかなりに助かる、Cursor 1.0 のバックグラウンド実行とも親和性が高そう
  • 「次にやるべきタスク」を迷わず進める感覚はわりと心地よい
  • Cursor Composer との組み合わせ相性はかなり良い、Claude Code とかでも使えそう

現時点の課題感

  • shadcn 指定しても独自 UI を作るケースが出る
    → PRD での制約指定が甘いとズレる
  • Linter や型エラーを残して次タスクに進みがち
    → 完了条件の強制ルールは別途必要
  • vibe coding よりは速度感は落ちる(その分品質重視な印象)

全体まとめ

  • プロダクト構築段階での活用はもう少し先の検証が必要
  • 手法検証段階としてはかなり面白い可能性を感じた

今後の検証アイデア

  • チーム開発時の並行タスク分割
  • 他の MCP を利用するとより強力かも
  • PRD テンプレ精度の向上
  • 依存関係自動整理の精度検証
  • モデル(Main / Research)ごとの比較検証

Discussion