6.2 KiB
6.2 KiB
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: 基本構文
# 実装ファイル
src/parser/pattern_matching.rs # パターン構文解析
src/ast/pattern.rs # Pattern AST定義
src/mir/lowering/pattern.rs # Pattern → MIR14変換
Week 2: 高度機能
# 実装ファイル
src/parser/destructuring.rs # Box destructuring
src/type_checker/pattern.rs # パターン型検査
src/mir/optimization/pattern.rs # パターン最適化
受け入れ基準
// 動作必須テスト
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完了後
実装内容
# 新規ファイル
src/macro_system/ast_pattern.rs # AST用Pattern Matching
src/macro_system/quote.rs # 準引用/脱引用
src/macro_system/rewriter.rs # AST書き換え器
API設計例
// マクロでの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完了
実装目標
// 入力
@derive(Equals)
box UserBox {
name: StringBox
age: IntegerBox
}
// 自動生成
method equals(other: UserBox) -> BoolBox {
return me.name == other.name && me.age == other.age
}
実装ファイル
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週間後の目標状態
動作するコード例
// 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パッチエンジン基盤完成
- ✅ マクロ展開デバッグツール動作
🔧 実装時の技術指針
安全な実装戦略
- 既存MIR14命令不変: 新命令追加なし
- 段階的機能追加: 最小動作から開始
- 回帰テスト重視: 既存機能への影響なし
- エラーハンドリング: 明確なエラーメッセージ
パフォーマンス考慮
- Pattern最適化: Jump table、Decision tree
- マクロキャッシュ: 展開結果のキャッシュ
- 漸進的コンパイル: 変更部分のみ再処理
- メモリ効率: AST操作の最適化
🚨 実装時の注意点
Hygiene(衛生)問題
// 生成されるメソッド名が既存と衝突しないように
method __generated_equals_#unique_id(other: UserBox) -> BoolBox {
// 安全な名前空間での生成
}
エラー報告品質
// 良いエラーメッセージ例
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
デバッグ支援
# マクロ展開の可視化
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) → 世界征服」- 明確な実装経路の確立完了。