Files
hakorune/docs/development/roadmap/phases/phase-16-macro-revolution/NEXT_IMPLEMENTATION_TASKS.md

219 lines
6.2 KiB
Markdown
Raw Normal View History

# Phase 16 次期実装タスク - 実装開始への具体的ステップ
**策定日**: 2025-09-18
**ステータス**: 実装準備完了
**優先度**: 最高全AI相談結果に基づく統合計画
## 🎯 実装開始の準備状況
### ✅ 完了済み(計画・設計フェーズ)
- **AI三賢者相談完了**: ChatGPT・Gemini・Codex全ての技術検証済み
- **統合実装ロードマップ**: 4-6週間の詳細計画策定済み
- **Pattern Matching基盤計画**: 2週間の実装詳細完成
- **マクロ実例集**: 6つの革命的マクロタイプの具体例完成
- **技術アーキテクチャ**: HIRパッチ式エンジン設計確定
## 🚀 即座実装タスク(今週着手推奨)
### Task 1: Pattern Matching実装開始最優先
**期間**: 2週間
**理由**: Gemini・Codex共に「マクロ実装の必須基盤」と明言
#### Week 1: 基本構文
```bash
# 実装ファイル
src/parser/pattern_matching.rs # パターン構文解析
src/ast/pattern.rs # Pattern AST定義
src/mir/lowering/pattern.rs # Pattern → MIR14変換
```
#### Week 2: 高度機能
```bash
# 実装ファイル
src/parser/destructuring.rs # Box destructuring
src/type_checker/pattern.rs # パターン型検査
src/mir/optimization/pattern.rs # パターン最適化
```
#### 受け入れ基準
```nyash
// 動作必須テスト
local result = match value {
0 => "zero",
1..10 => "small",
UserBox(name, age) => "user: " + name,
_ => "other"
}
```
### Task 2: AST操作基盤構築Pattern Matching並行
**期間**: 1週間
**依存**: Pattern Matching Week 1完了後
#### 実装内容
```bash
# 新規ファイル
src/macro_system/ast_pattern.rs # AST用Pattern Matching
src/macro_system/quote.rs # 準引用/脱引用
src/macro_system/rewriter.rs # AST書き換え器
```
#### API設計例
```rust
// マクロでのAST操作
fn expand_derive(input: &AstNode) -> Result<AstNode> {
match input {
BoxDef { name, fields } => {
let equals_method = quote! {
method equals(other: #name) -> BoolBox {
#(generate_field_comparisons(fields))
}
};
Ok(equals_method)
}
}
}
```
### Task 3: @derive(Equals)最小実装MVP
**期間**: 1週間
**依存**: Task 1・2完了
#### 実装目標
```nyash
// 入力
@derive(Equals)
box UserBox {
name: StringBox
age: IntegerBox
}
// 自動生成
method equals(other: UserBox) -> BoolBox {
return me.name == other.name && me.age == other.age
}
```
#### 実装ファイル
```bash
src/macro_system/derive/mod.rs # derive マクロシステム
src/macro_system/derive/equals.rs # Equals実装ジェネレーター
src/macro_system/registry.rs # マクロ登録システム
```
## 📋 並行作業可能タスク
### A系列: コア機能実装
- [ ] Pattern Matching parser
- [ ] AST manipulation tools
- [ ] HIR patch engine
- [ ] @derive(Equals) generator
### B系列: 品質保証
- [ ] Unit tests for pattern matching
- [ ] Integration tests for macro expansion
- [ ] Performance benchmarks
- [ ] Error message quality
### C系列: 開発体験
- [ ] `nyash --expand` コマンド
- [ ] `NYASH_MACRO_TRACE=1` デバッグ
- [ ] マクロ展開可視化ツール
- [ ] 開発者ドキュメント
## 🎯 2週間後の目標状態
### 動作するコード例
```nyash
// Pattern Matching が動作
local greeting = match user {
UserBox(name, age) => "Hello " + name + "!",
AdminBox(name) => "Hello Admin " + name + "!",
_ => "Hello stranger!"
}
// @derive(Equals) が動作
@derive(Equals, ToString)
box PersonBox {
name: StringBox
age: IntegerBox
}
local person1 = new PersonBox("Alice", 25)
local person2 = new PersonBox("Alice", 25)
assert person1.equals(person2) // 自動生成されたequalsメソッド
```
### 技術達成目標
- ✅ Pattern Matching基本動作リテラル・変数・構造パターン
-@derive(Equals)自動生成動作
- ✅ HIRパッチエンジン基盤完成
- ✅ マクロ展開デバッグツール動作
## 🔧 実装時の技術指針
### 安全な実装戦略
1. **既存MIR14命令不変**: 新命令追加なし
2. **段階的機能追加**: 最小動作から開始
3. **回帰テスト重視**: 既存機能への影響なし
4. **エラーハンドリング**: 明確なエラーメッセージ
### パフォーマンス考慮
1. **Pattern最適化**: Jump table、Decision tree
2. **マクロキャッシュ**: 展開結果のキャッシュ
3. **漸進的コンパイル**: 変更部分のみ再処理
4. **メモリ効率**: AST操作の最適化
## 🚨 実装時の注意点
### Hygiene衛生問題
```nyash
// 生成されるメソッド名が既存と衝突しないように
method __generated_equals_#unique_id(other: UserBox) -> BoolBox {
// 安全な名前空間での生成
}
```
### エラー報告品質
```nyash
// 良いエラーメッセージ例
Error: @derive(Equals) cannot be applied to UserBox
→ UserBox contains field 'callback' of type FunctionBox
→ Equals comparison is not supported for FunctionBox
Help: Consider implementing custom equals method or excluding this field
```
### デバッグ支援
```bash
# マクロ展開の可視化
nyash --expand program.hako
# ステップバイステップ追跡
NYASH_MACRO_TRACE=1 nyash program.hako
```
## 📊 成功指標2週間後
### 機能的成功
- [ ] Pattern Matching基本テスト全通過
- [ ] @derive(Equals)生成コード動作確認
- [ ] 既存テストスイート全通過(回帰なし)
- [ ] 実用サンプルアプリでの動作確認
### 技術的成功
- [ ] MIR14出力の妥当性確認
- [ ] PyVM・LLVMバックエンド両対応
- [ ] パフォーマンス基準クリア
- [ ] メモリ使用量の適正範囲
### 開発者体験
- [ ] 明確なエラーメッセージ提供
- [ ] デバッグツールの実用性確認
- [ ] ドキュメントの完成度
- [ ] サンプルコードの動作確認
---
**Phase 16実装開始世界最強マクロ言語への第一歩。**
*「Pattern Matching → @derive(Equals) → 世界征服」- 明確な実装経路の確立完了。*