4.4 KiB
4.4 KiB
ANCP実装に向けた実用的洞察まとめ
Date: 2025-09-03
🎯 すぐに実装すべき優先事項
1. 正規化ルールの明文化(Codex提案)
// P* (正規形) の定義が最重要
pub struct Canonicalizer {
// コメント処理: 保持 or 削除?
// 空白処理: 正規化ルール
// エイリアス解決: import as の扱い
}
理由: 可逆性の数学的保証に必須
2. トークン最適化戦略(Codex提案)
// GPTトークナイザーに合わせた記号選択
F層記号候補:
- 高頻度: $ @ # ^ ~
- 避ける: 長いUnicode、稀な記号
理由: 圧縮率はバイト数でなくトークン数で測定すべき
3. IDE統合の最小実装(Gemini提案)
// VS Code拡張: F層ホバーでP層表示
onHover(position) {
const fToken = getFusionToken(position)
const pCode = sourceMap.lookup(fToken)
return new Hover(pCode)
}
理由: デバッグ体験が開発普及の鍵
📊 実装順序の推奨
Phase 1: ミニマルPoC(1週間)
-
AST正規化器
- Canonicalizer実装
- P→P*変換の決定的動作
-
基本変換器
- Box定義の圧縮
- 関数定義の圧縮
- MIRハッシュ検証
-
双方向マップ
- 最小限のソースマップ
- ラウンドトリップテスト
Phase 2: 実用化(2週間目)
-
CLI実装(Codex提案)
ancp encode --layer F input.nyash -o output.f ancp decode output.f --map output.map ancp verify input.nyash output.f # MIR等価性チェック -
プロジェクト辞書(Gemini提案)
# .ancprc symbols: WebServer: WS HttpRequest: HR handleRequest: hR -
エラー位置変換
- F層エラー→P層位置
- スタックトレース変換
Phase 3: 高度な最適化(3週間目)
-
文法圧縮(Codex提案)
- Re-Pair/Sequiturアルゴリズム
- 頻出パターン辞書化
-
混合モード(Gemini提案)
// 通常のP層コード box NormalClass { ... } fusion { // F層圧縮コード $FC@B{...} } -
意味論的圧縮(Gemini提案)
- パターン認識
- 高レベル抽象化
🔍 検証計画(両者統合)
自動テストスイート
#[test]
fn roundtrip_property_test() {
// Codex提案: Property-based testing
proptest!(|(ast: RandomAST)| {
let encoded = ancp.encode(ast, Level::F);
let decoded = ancp.decode(encoded);
assert_eq!(normalize(ast), decoded);
assert_eq!(mir_hash(ast), mir_hash(decoded));
});
}
ベンチマーク項目
| 指標 | 測定内容 | 目標値 |
|---|---|---|
| 圧縮率 | トークン削減率 | 90% |
| 変換速度 | ms/1000行 | <100ms |
| マップサイズ | % of P | <5% |
| MIR一致率 | Pass/Fail | 100% |
💡 回避すべき落とし穴
1. 文字列リテラルの罠(Codex警告)
// 問題: 文字列内のF層記号
local msg = "User sent $100" // $ が誤解釈される
対策: エスケープメカニズム必須
2. デバッグ地獄(Codex警告)
Error at $WS@H{p;r=@M|b(p){$.p=p}:12:5
対策: デコーダー常駐でP層位置を即座に表示
3. プラグイン非互換(Codex警告)
// プラグインが新構文追加
plugin syntax { ... } // F層エンコーダーが対応できない
対策: プラグイン登録API必須
🚀 即座に始められること
-
仕様書ドラフト作成
- P*正規化ルール
- C/F層文法定義
- ソースマップフォーマット
-
最小実装
# まずBoxだけで動作確認 echo "box Test { }" | ancp encode -l F # => $T{} -
コーパス収集
- 既存Nyashコード収集
- 頻度解析でF層記号決定
📈 成功指標
短期(1ヶ月)
- 10個のサンプルで90%圧縮達成
- MIR等価性100%保証
- 基本的なCLI動作
中期(3ヶ月)
- Nyashコンパイラ自身を圧縮
- VS Code拡張リリース
- 論文ドラフト完成
長期(6ヶ月)
- 他言語への応用
- 標準規格提案
- AI開発ツール統合
次の一歩: AST正規化ルール(P*)の仕様を1ページで書く!