メインコンテンツまでスキップ

言語・判定・描画の分離

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 のままである — 言語は確定し、実装はまだ何も凍結を約束していない。

機械形式はこの二本のどちらでもない、綴りの版を別に持つ。意味論は記法の版が持つが、同じ意味論を別のキーで綴り直すことはありうるので、綴りの版は別に数える。

版の全体は 安定性 にある。

この先