koyu — 建築をテキストで書く
koyu は建築をテキストで書く記法 (.muro) と、その処理系である。
空間が一次要素である。壁は物ではなく、二つの空間のあいだの境界という関係である。開口は、その境界に切られた接続である。書かれるのは空間の領域と境界の関係だけで、平面図も面積も動線も書かれない — 導出される。
一室はこう書く。4行で、これで完結したファイルである。
grid X 0 3600
grid Y 0 4000
level L1 0 h:2400 slab:150
space /L1/a room X1..X2 Y1..Y2
koyu plan first.muro -o first.svg
壁が一本も描かれていない。空間はあるが、境界が一つも無いからである。
space を1行足す。ほかは何も変えない。
grid X 0 3600 5400
grid Y 0 4000
level L1 0 h:2400 slab:150
space /L1/a room X1..X2 Y1..Y2
space /L1/b room X2..X3 Y1..Y2
壁が現れた。壁を描く操作はこの記法のどこにも無い。壁は二つの空間の境界関係であり、空間の割付から導かれる。接する空間の組に境界の宣言が一つも無ければ、それは「未定義」ではなく「壁」を意味する。
解像度は基本設計の粒度である。梁下がりをモデル化しないのは欠落ではなく、選んだ抽象の高さである — BIM が重すぎた設計初期こそ、この記法の居場所である。建物一棟が数百行のテキストに収まるので、建築が git と LLM と同じ地面に乗る。
どこから読むか
| あなたが | 行き先 |
|---|---|
| koyu を触ったことがない | はじめての .muro — 一室から二階建て一棟まで、30〜45分 |
| まず手元で動かしたい | koyu を入れる — npm から、あるいはソースから |
| なぜこの形なのかを知りたい | 解説 — 空間が一次であること、壁が関係であること、緑が何を意味しないか |
| やることが決まっている | 手順 — 階を足す・住戸を室に割る・エージェントに書かせる |
| 記法の一語を引きたい | .muro の全構文・koyu コマンド・診断コード索引 |
| プログラムやエージェントから使いたい | プログラムから建物を読む・TypeScript API・koyu-mcp |
二つの問いは別である
koyu check は書かれた構成がデータとして整合しているかを言う。それだけである。扉を一枚も宣言しない二階建ては、完全に密封されたまま緑で通る。
建築的な妥当性は koyu validate が別に言い、動線は koyu doors、採光は koyu light が答える。この線引きは約束の範囲にある。緑を根拠に「この建物は動く」と主張してはいけない — その落とし穴はチュートリアルの第5段で実際に踏んでみせる。
名前
戸牖 (koyu) は戸と窓、すなわち開口を指す。老子・第十一章 — 戸牖を鑿ちて以て室と為す、其の無に当たりて室の用有り。室を使えるものにしているのは壁ではなく、そこに空いている空間である。空間が一次で、壁が関係で、開口が境界に切られた接続であるような記法にとって、これより古い出典は無い。同音の「固有」も掛けてある — すべての空間は人が読める固有の名、その階層パスで指される。
拡張子は .muro (室)。ファイルが持つ単位は部材ではなく部屋である。