第2章 ファイルとディレクトリの規約

2.1 1 概念 = 1 ファイル

正本は 1 概念 = 1 Markdown ファイルで構成する。「概念」とは、業務索引・データ要件スキーマ・ コード語彙・機能要件・法令・告示といった、参照の単位となるまとまりである。

1 ファイルは次の構造をとる(yamltext のフェンスは本文中に置くコードブロックを表す)。

---
<YAML frontmatter>     # 索引層(第3章)
---
# 見出し
本文(趣旨・解説・図表)   # 知識層(第4章)

```yaml                # 正本層(第5章)。型付きデータ
...
```

```text                # 規範文(第4章)。byte 保持
...
```

frontmatter は必須。本文・payload・規範文は概念の性格に応じて持つ。

2.2 ディレクトリ=アイデンティティ

ファイルのパスがその概念の所在を表す。URL もパスに一致させる(SSG はパスをそのまま URL にする)。 標準仕様の正本系統は次のディレクトリ構造をとる。

businesses/<業務>/          # 業務単位(例 001-juki)
  index.md                  # 業務索引
  spec/                     # 機能要件(章ごとに分割)
    index.md
    01-....md
  data-list.md              # データ要件(基本データリスト)
  codes.md                  # コード一覧
  er.md                     # データモデル
  linkage-spec.md           # 連携要件
laws/                       # 法令・省令
guidelines/<ds-NNN>/        # ガイドライン(章ごとに分割)
character-standard/         # 文字要件

業務コードのような「粗くて安定した軸」を上位に、種別を下位に置く。これは URN の構成(第6章)と 一致する。

2.3 章分割の規約

仕様書本文・ガイドライン・本書のような長文は、章ごとにファイルを分割し、ディレクトリにまとめる。

  • ディレクトリ直下に index.md(序文+章目次)を置く。
  • 章ファイルは NN-slug.md(2 桁連番+英小文字スラッグ)で、連番が章順を表す。
  • 各章ファイルの本文は H1(#)見出しで始める。章内の節は H2 以下を用いる。
  • 見出しレベルは歯抜けにせず連続させる(H1 の次は H2、H2 の次は H3)。

SSG は index.md+章ファイル群を検出し、章一覧と見出しアウトラインを持つサイドバーを自動生成する。 ファイル名の連番が章の並び順、本文の H1 が章タイトル、H2 以下がアウトラインになる。

2.4 ファイル名に意味を埋めない

旧来の変換物は 001_住民基本台帳_基本データリスト【第2.4版】_20250228.md のように、ファイル名に 業務名・種別・版・日付を詰め込んでいた。テキスト正本ではこれらをすべて frontmatter のキーへ昇格 させ、ファイル名は安定したスラッグ(data-list.md)に保つ(第3章)。版や日付が変わってもファイル名= URL を変えないためである。

2.5 添付資産(画像・SVG・CSV・フォント)

本文から参照する画像・図・データファイルは、概念ファイルと同じディレクトリかその assets/ 配下に パス保持で置き、本文からは相対パス(./assets/... または ../assets/...)で参照する。

  • 図は可能な限りテキストから生成する(Mermaid・Graphviz DOT)。生成元テキストを本文に残し、 ビルド時に SVG へ焼く。手書きのバイナリ画像は最小限にとどめる(第4章)。
  • 巨大データ(数万行)は CSV を添付し、本文はそれを参照するストリーミング表示に委ねる(第7章)。