言語・判定・描画の分離
koyu は三つの領域からなる。求められる品質が違うので、分けてある。
| 領域 | 何を持つか | 大きさ | 品質 | 版 |
|---|---|---|---|---|
| core | 言語・意味論・合成・同一性・導出・構造整合の診断・問い・正準 JSON | 小さい | きれいでなければならない | 凍る |
| 検証 | 建築的な判定 — 15 の規則 | 大きくなる | 汚くてよい | 凍らない |
| 表現・ビルド | SVG 生成と外部のビュアー | 大きくなる | 汚くてよい | 凍らない |
依存は一方向である。検証も表現も core に依存し、core はどちらにも依存しない。core は自分だけで完結して動く。この一方向は文ではなくテストが機械的に守る。
koyu は座標を作らない。描画は意味を作らない。
分けないと何が起きるか
二つのことが同時に起きる。
汚さが core に染み出して凍る。判定の粗い規則が core の診断に混ざれば、その粗さが凍結の対象になる。「1/7」という数字が core の不変量になった瞬間、それは別の管轄でも別の建物用途でも 1/7 でなければならなくなる。
core の慎重さが検証と表現の成長を止める。judge を足すたびに言語の版を検討することになれば、判定は増えなくなる。図面の線幅を変えるたびに凍結面を確認することになれば、図面は良くならない。
分けることそのものが、検証と表現が汚くてよい条件である。凍らない領域の汚れはいつでも書き直せるので安い。凍る領域の汚れは永久に残る。値段が桁違いに違う。
core — 小さく、きれいに、凍る
core が持つのはこれだけである。
- 記法の文法と意味論 — 何が書けて、書いたものが何を意味するか
- 合成 — 層の強度順序、単一値の解決、集合の編集、出所
- 同一性 — uid とパス、関係の同一性
- 導出 — 書かれた構成から一意な形を作る規則と、その参照実装
- 構造整合の診断 —
checkが返す 65 のコード - 問い — 面積・グラフ・経路・開口面積。ただし合否を言わない
- 機械形式 — 正準 JSON
実行時依存はゼロである。この領域が外部のパッケージに依存しないことが、「凍る」という約束を成立させている。
core に足すことは高い。解析・合成・機械形式・仕様・文書の五箇所を同時に触り、凍結後は破壊的変更になりうる。だから五問の関門がある (属性の拡張)。
検証 — 汚くてよい。増やす
採光、面積率、高さの整合、外皮の連続、扉の設置可能性、避難、到達可能性、そしてまだ思いついていないすべて。
規則が粗くても、管轄が一つしかなくても、精度が足りなくても、増やしてよい。試して捨ててよい。凍らないから安い。
独立した部品にはしない。部品の境界は、版が別々に動く必要が出た瞬間に切るのが正しく、その必要はまだ無い。そして判定は何が正しいかがまだ定まっていない領域であり、定まらないうちに境界を与えれば誤った境界のまま固まる。切り出す条件は三つのいずれか — 二つ目の管轄が要る、判定だけを使う利用者が現れる、判定の版が独立に動く必要が出る。
すべての判定は機械から呼べなければならない。呼べない判定は、機械にとって存在しないに等しい (MCP サーバー)。
表現・ビルド — 汚くてよい。精度を上げる
形の生成と、描画と、人のための面。2D と 3D、図面としての体裁、診断の提示、判定の提示、オーサリング支援。
寸法線も、通り芯記号も、建具の作図表現も、縮尺も、勾配屋根も、複雑な納まりも、精度は少しずつ上げればよい。凍らないから安い。
汚くてよい条件は一つ。描けないことが、書けないことと混同されないこと。何を描き、何を描かないかを列挙して持つ。これが無ければ、描画側の限界が記述側の限界として原本に持ち込まれ、原本が表現に引きずられる。
そしてこの領域は形を変えてはならない。変えてよいのは見た目であって形ではない (導出の決定性)。この線も機械が縛っている — 描画のコードが形を組み立てる部品を一つも引いていないこと、導出の定数が描画側に綴られていないことが検査される。
依存の向きと成長の向き
┌─────────────┐
│ koyu core │ 小さい・きれい・凍る
└──────┬──────┘
│ 一方向
┌──────┴──────┐
│ │
┌────▼────┐ ┌────▼────┐
│ 検証 │ │ 表現 │ 大きくなる・汚くてよい・凍らない
└─────────┘ └─────────┘
言語は増やさない。検証と表現は増やす。
新しい判定も、外部データとの突き合わせも、新しい問いも、図面の質も、行き先はここである。言語の版は動かない。
版は二本ある
- 記法の版 — 言語と意味論と合成の規則。「このように書かれたファイルは、この意味であり続ける」を約束する
- 実装の版 — どの記法を実装するか。「この実装の面を壊さない」を約束する
二本は別の約束なので、同時に到達する必要はない。現に記法は 1.0 に到達し、実装は 0.x のままである — 言語は確定し、実装はまだ何も凍結を約束していない。
機械形式はこの二本のどちらでもない、綴りの版を別に持つ。意味論は記法の版が持つが、同じ意味論を別のキーで綴り直すことはありうるので、綴りの版は別に数える。
版の全体は 安定性 にある。
この先
- check と validate の違い — core と検証の診断の分け方
- 導出の決定性 — core と描画の分け方
- 約束の範囲
- 持たないもの