Feature · テーブル定義書

テーブル定義書を、スキーマから自動で作る

Excel のテーブル定義書を手で書き直すのはやめにしませんか。Joinery は DBML や既存の DB から、Excel と HTML の定義書を生成し、保存のたびに最新の状態に保ちます。

手で書くテーブル定義書が古くなる理由

テーブル定義書は、マイグレーションとは別のファイルとして Excel で管理されることが多いドキュメントです。列を 1 つ追加するたびに、DDL・ER 図・定義書の 3 か所を直す必要があり、どれか 1 つは必ず遅れます。リリースのたびに誰かが半日かけて書き直し、それでも細かい差分が漏れる。この繰り返しで、定義書は「参考程度」の資料になっていきます。

Joinery は、スキーマを 1 つの DBML ファイルで管理し、そこから定義書を生成します。手で書く場所がないので、ずれる余地がありません。

出力できる形式と内容

設計書タブで内容を確認し、Excel のテーブル定義書と、1 ファイルで完結する HTML の設計書の 2 形式で書き出せます。

Joinery の設計書タブ。左に目次、右に orders テーブルの列定義とインデックスの表
設計書タブ。左に目次、右にテーブルごとの列定義・インデックス・制約・参照関係。
項目内容
表紙・改訂履歴表題、システム名、作成者、版数、文書番号、改訂履歴(設定ファイルに書いた内容)
目次・テーブル一覧TableGroup ごとにまとめたテーブルの一覧
ER 図図の配置をそのまま使った ER 図(HTML 版)
列定義No、列名、データ型、長さ・精度、PK、FK(参照先)、NOT NULL、UNIQUE、既定値、説明
インデックス・制約インデックス名、対象列(式)、PK・UNIQUE、種類、CHECK 制約
参照関係参照先、カーディナリティ、ON DELETE / ON UPDATE

説明欄には、DBML の Note に書いた内容を改行もそのまま載せます。DBML に独自の書き方を持ち込まないため、「論理名」の欄はありません。日本語名を載せたい場合は Note に書いてください。

既存の DB から定義書を作る手順

  1. スキーマを取り込む。開発用の PostgreSQL・MySQL・SQLite に読み取り専用で接続するか、DDL ファイル(PostgreSQL / MySQL / SQL Server / SQLite)を読み込みます。
  2. 説明を足す。テーブルや列に Note を書き足します。DB に付けたコメントは、取り込み時に Note として読み込みます。
  3. 書き出す。コマンドパレットから「設計書(Excel)」または「設計書(HTML)」を選びます。

保存のたびに自動で更新する

図の配置を保存している設定ファイル(.joinery.json)に出力先を書いておくと、アプリで保存するたびに定義書を書き出します。リポジトリの docs/ に置けば、プルリクエストに定義書の差分も一緒に載ります。

"doc": {
  "title": "受注管理システム DB設計書",
  "system": "受注管理",
  "version": "1.2",
  "autoExport": [
    { "format": "html", "path": "docs/db.html" },
    { "format": "xlsx", "path": "docs/db.xlsx" }
  ]
}

初回だけ、そのプロジェクトで自動出力してよいかを確認します。隠しフォルダへの出力はしません。

CI で作る場合は、コマンドラインからも出力できます。

joinery docs schema.dbml --format xlsx -o docs/db.xlsx

よくある質問

決まった書式の Excel に合わせられますか?

現在は Joinery の標準の書式で出力します。社内書式への差し込みには対応していません。

同じスキーマから毎回同じ定義書になりますか?

はい。生成に AI は使わず、決まったルールで作ります。生成日時を除けば毎回同じ内容になるので、HTML 版は Git で差分を確認できます。

どの DB に対応していますか?

実 DB からの取り込みは PostgreSQL・MySQL・SQLite、DDL ファイルからの取り込みは PostgreSQL・MySQL・SQL Server・SQLite に対応しています。