気まぐれな備忘録(仮)

いちようSEしてるので、プログラミングの備忘録的なものを書いてます

ER図作成ツール ERD Designer の機能追加 | AI エージェント連携, 対応 DB の拡充 (2026.07)

ブラウザだけで利用できる ERMaster 代替を目指した ER 図作成ツール ERD Designer を作っていることは何度か投稿している (背景等は過去のエントリ参照)。前回の VSCode 拡張機能対応の投稿からしばらく経ってしまったが、地味に機能追加は続けていたので、まとめて紹介したい。

  • AI コーディングエージェント連携 (Agent Plugin)
  • 対応データベースの追加 (MariaDB, SQLite, BigQuery, Snowflake)
  • Canvas の検索パネル
  • CHECK 制約、文字コード/COLLATE などの細かい機能追加

なお、GitHub のリポジトリ、VSCode Marketeplace, Google Workspace で公開しているアプリのリンクはこちら。

github.com

marketplace.visualstudio.com

workspace.google.com

AI エージェント連携について

前回の投稿で、「生成 AI の活用を想定した場合 MCP Server への対応は必要だろう」と書き、VSCode 拡張機能で MCP Server を起動できるようにした。これはこれで動くのだが、使ってみると気になる点があった。MCP Server を使うには VSCode を起動しておく必要があり、エージェントが CLI 越しに動くような環境 (Claude Code をターミナルで使う、CI 上でエージェントを動かす、など) だと相性が良くない。

そこで、MCP Server を介さず、SKILLS より .erd ファイルを直接編集できるようにした。これにより、Claude Code や GitHub Copilot CLI から直接操作できるようなる。また、MCP Server だと常時コンテキストを消費するが、SKILLS なら利用する場合のみ読み込むので、トークン浪費を回避できる。

なお、SKILLS より直接 .erd の JSON を編集させるのではなく、SKILLS に node のスクリプトを含め、このスクリプトを呼び出すようにしている。 これは、直接ファイルを編集させると、カラムやリレーションが ID 参照で繋がっているため、リファレンスの整合性や Canvas 上の配置が簡単に壊れてしまうからである。 スクリプト経由であれば、テーブルを消せば紐づくリレーションも一緒に片付く、といった後始末をアプリ本体と同じロジックで行える。

導入方法

Claude Code の場合はプラグインとして追加する。

claude plugin marketplace add kajitiluna/erd-designer
claude plugin install erd-designer@erd-designer

GitHub Copilot CLI の場合も同様。

copilot plugin marketplace add kajitiluna/erd-designer
copilot plugin install erd-designer@erd-designer

使い方

SKILL が読み込まれると、あとはいつも通りチャットで頼むだけでよい。エージェントは SKILL.md の指示に従って、使うツールを list-tools / describe で確認しながら同梱の CLI を呼び出し、.erd ファイルを更新する。

.erd の JSON を直接編集させるのではなく CLI を経由させているのは、カラムやリレーションが ID 参照で繋がっているため、手で JSON を書き換えるとリファレンスの整合性や Canvas 上の配置が簡単に壊れてしまうからである。CLI 経由であれば、テーブルを消せば紐づくリレーションも一緒に片付く、といった後始末をアプリ本体と同じロジックで行える。

実際に試してみる

試しに、BigQuery のサンプルドキュメントに対して Claude Code でこう頼んでみた。

> ./bq_sample.erd に order テーブルを追加してください。
> INT64 型を PK とする order_id を定義してください。また、user_id を持ち、user:order=1:0..N の関連を定義してください。
> orderテーブルの色は黄色系にしてください

エージェントは erd-designer の SKILL を読み込み、list-tools を実行し利用可能な tools を確認。 以降 list-tools の結果に基づき、必要なコマンドを順次実行していった。 (下記では省略しているが、list-tables で既存テーブルを確認の上、add-tablecreate-relation の順に CLI を呼び出した)

⏺ Skill(erd-designer:erd-designer)
Successfully loaded skill

  Searched for 1 pattern, ran 1 shell command

まず既存テーブル一覧とuserテーブルの構造を確認する。

  Ran 4 shell commands

INT64のcolumnTypeIdは17。次にorderテーブルを追加する(order_id: INT64 PK、user_id: INT64、色は黄色系)。

  Ran 1 shell command

orderテーブルを作成できたので、user:order = 1:0..Nの関連を作成する。

  Ran 2 shell commands

order.user_idのcolumnIdが判明した。関連を作成する。

  Ran 1 shell command

✅ 完了しました。bq_sample.erd に以下を追加しました。

- order テーブル(黄色系ヘッダー #FFF9C4)
  - order_id (INT64, PK, NOT NULL)
  - user_id (INT64, NOT NULL)
- 関連: user (1) — order (0..N)、user.user_id → order.user_id

VSCode にて .erd ファイルを表示していると、上記の更新が即時に反映される。

users / orders の位置揃えこそ手で直したくなるが、カラムの型・PK・FK の関係は期待通り作成できた。 手作業だと手間がかかるテーブルやカラム追加はエージェントに任せることで、作成作業は効率化できると思われる。 おそらく、テーブル設計の改善をエージェントと壁打ちしながら .erd に反映、といったこともできると思われる。

その他 MCP Server 側の改善

SKILLS とは別に、VSCode 拡張機能の MCP Server 側も、参照系の操作を resource だけでなく tool としても呼べるように整理した。resource URI を組み立てるのが苦手な、tool 呼び出し中心のエージェントでも ERD のデータを読めるようにするための変更である。

なお、SKILLS も MCP Server も、まだ実験的な機能という位置づけ。

対応データベースの追加

DB 追加のリクエストがいくつか溜まっていたので、まとめて対応した。MariaDB, SQLite, BigQuery, Snowflake の 4 種を追加し、既存の PostgreSQL, MySQL, MS SQL Server と合わせて計 7 種の DDL を出力できるようになった。

MariaDB は MySQL 互換の DDL に UUID / INET4 / INET6 型を加えたもの、SQLite は型アフィニティベースの列型と rowid ベースの主キー、Snowflake は VARIANT / OBJECT / ARRAY などの半構造化型やスキーマ定義に対応している。なお、Amazon Aurora や CockroachDB, TiDB のような PostgreSQL/MySQL 互換データベースは、対応する方言でおおむねモデリングできるはず。

BigQuery の STRUCT カラム

BigQuery を対応するにあたり、他の RDBMS と大きく異なる機能として STRUCT 型に対応した。 既存の column と同様、複数のテーブルで同じ STRUCT を使いまわすことができ、STRUCT の中に別の STRUCT を入れ子にすることもできる (STRUCT が自分自身を再帰的に参照するような定義はエラーにしている)

テーブル編集画面では、「Add column」「Add group column」に並んで「Add struct column」が追加され (BigQuery のドキュメントでのみ表示される)、これより STRUCT のメンバーを編集するダイアログが開く。

Canvas 上では STRUCT のメンバーをインデントして展開表示するようにした。

DDL に出力するとこうなる。

CREATE TABLE users (
    user_id INT64 NOT NULL OPTIONS(description="User ID"),
    user_name STRING OPTIONS(description="User Name"),
    address STRUCT<street STRING, zip STRING> OPTIONS(description="Address"),
    PRIMARY KEY (user_id) NOT ENFORCED
) OPTIONS(description="Users");

仕様書エクスポートでは STRUCT 自体の行に加えて、メンバーひとつひとつに address.street のようなドット区切りの行が別途出力されるようにしている。

BigQuery は CREATE INDEX や UNIQUE 制約自体をサポートしていない (Snowflake も標準テーブルでは CREATE INDEX 非対応) ので、そのあたりの機能は該当 DB を選んだ場合は自動的に UI 上から消えるようにしてある。

Canvas の検索パネル

Ctrl+F (macOS は ⌘+F) で検索パネルを開き、テーブル・カラム・リレーション・メモを横断して検索できるようにした。ヒットした箇所は Canvas 上でハイライトされ、矢印ボタンや Enter / Shift+Enter で次のヒットに移動できる。検索対象はチェックボックスでカテゴリごとに絞り込める。

従来はブラウザの検索機能で代替していたが、canvas サイズの制限をなくしたことにより、ブラウザの機能が利用できなくなった。このため、独自実装で提供するようにした。

その他の細かい機能追加

  • テーブル・カラムへの CHECK 制約 (${column_name} / ${this} プレースホルダで参照名を解決)
  • CHARACTER SET / COLLATE / オプション式の指定 (前回記事で「今後取り組む」と書いていた分)
  • DDL エクスポート時のコメント形式選択 (論理名のみ / 論理名+説明)
  • インタラクティブな HTML / SVG エクスポート (@shlomi-dr さんの貢献。#177, #178)

今後の機能追加について

SKILLS を使うことにより作成の手間は軽減できるようになったが、現状、活用できる場面がローカルの .erd ファイルを編集する場合に限られる。 Google Drive App の場合、ローカルに同期することで SKILLS を利用することはできるが、描画をリアルタイムに反映することはできない。 このあたりの利用しづらさを改善したい。

ER図作成ツール ERD Designer は VSCode 拡張機能に対応しています

最近ブロクの更新を怠っていたが、 ERD Designer の改善はこつこつ続けている。実は昨年末 2025年12月に ERD Designer を VSCode 拡張機能に対応させ、VSCode の Marketplace よりインストールすれば、VSCode でも利用できるようになっている。

marketplace.visualstudio.com

ERD Designer とは、ブラウザだけで利用できる ERMaster 代替を目指した ER 図作成ツールであり、詳細は以下のエントリを参照してもらいたい。

kajitiluna.hatenablog.com

VSCode 拡張機能の場合は、はじめに .erd 拡張子の空ファイルを作成し、VSCode で開くことで ERD Designer が起動し、ブラウザと同様の操作感で利用できるようになっている。ファイルを直接操作できることで git 管理しやすく、利用状況によってはこちらの方が扱いやすいかもしれない。

当初は VSCode 拡張機能への対応は想定していなかった。生成 AI の活用を想定した場合、MCP Server への対応は必要だろうと考え (2025年秋ごろ)、ブラウザだと MCP Server の対応が技術的制約により困難だったため、VSCode で MCP Server を起動することで対応した。 VSCode 拡張機能をインストールした際の初期設定では MCP Server は立ち上がらないようにしており、設定により VSCode 起動時に MCP Server が起動するようにしている。MCP Server 対応はまだ十分ではない状況ではあるが、しかしながら、GitHub Copilot に試させたところ、イマイチ活用できていない感がしている。最近の時流を踏まえると、このツールの場合は MCP Server よりAgent SKILLS の方が相性がよいかもしれない。

その他の機能追加

VSCode 拡張機能の対応以外としては、以下の機能追加、改善を行っている。

直近は Issue に起票されているテーブルやカラム単位の文字コードや COLLATE などのオプション指定の対応に取り組む予定。

ER図作成ツール ERD Designer の機能追加 | Perspective, カラムのドラッグ移動 (2025.11)

ブラウザだけで利用できる ERMaster 代替を目指した ER 図作成ツールを作っていることを投稿した (背景等は過去のエントリ参照)。

kajitiluna.hatenablog.com kajitiluna.hatenablog.com

ブログの更新はご無沙汰であったが、地味に機能追加は行っていたので、ここで前回からの追加分を紹介したい。とは言っても、すべて覚えているわけではないのだが。

  • Perspective 機能 (機能などに応じた表示のグルーピング機能)
  • カラムのドラッグ&ドロップによる同一テーブル内の位置移動
  • PostgreSQL の GENERATED ALWAYS AS IDENTITY 対応
  • Schema 定義

なお、GitHub のリポジトリ、Google Workspace で公開しているアプリのリンクはこちら

github.com workspace.google.com

機能追加について

Perspective 機能 (機能などに応じた表示のグルーピング機能)

Perspective は、ER 図内のテーブルとメモを機能別・目的別など応じて論理的にグループ化し、表示を切り替えることができる機能である。 テーブル数が多くなった場合などに、表示をグルーピングすることを意図したものである。 ツールによってはシートを分けて別表示にするものもあるが、あくまで全体の配置を意識できるよう、表示の ON/OFF の制御にすることにした。(これは ERMaster のカテゴリ機能と同様の表示である)

なお、機能名をどうするかは悩んだが、あくまで表示の制御のみを担い、どのように使うかは利用者に委ねることを意図して、視点的なニュアンスにとどまるよう、Perspective という名称にした。日本人的にはあまり馴染まないが。

Perspective 機能の設定方法

はじめに設定メニューの Perspective を選択し、Perspective 一覧を表示する。

設定 > Perspective

下記キャプチャは既に Perspective を作成済みだが、はじめての場合は Add perspective ボタンより追加する。一覧画面にて、Perspective に表示するテーブルやメモを選択する。

perspective 一覧

なお、Perspective を作成済みの場合は、下記キャプチャのようにテーブル/メモ選択時に eye アイコンが表示されるので、この eye アイコンよりテーブル/メモ 単位で Perspective で表示するか否かを設定できる。

Perspective 機能の表示方法

Perspective を作成したら、左メニューの Perspective のドロップダウンメニューが選択できるようになるので、これより Perspective の表示を切り替える。リレーションについては、関連する両方のテーブルが Perspective に含まれている場合に限り描画されるようにしているが、Show half-bounded line を ON にすることで、リレーションの関連テーブルの一方が Perspective に含まれていない場合でも表示できる。

カラムのドラッグ&ドロップによる同一テーブル内の位置移動

従来 などのボタンを押さないと移動できなかったので、ドラッグ&ドロップで移動できるようにした。これはカラムに限らずインデクスの順序も同様に操作できるようにした。

PostgreSQL の GENERATED ALWAYS AS IDENTITY 対応

Feature Request: Generated Columnへの対応 · Issue #104 · kajitiluna/erd-designer · GitHub にて要望をいただいたもの (hizumiyazaki さん提案ありがとうございます!)。 PostgreSQL でも SERIAL ではなくて IDENTITY が設定できるようになったの知らなかった。MySQL の AUTO INCREMENT や MS SQL Server の IDENTITY と同じ感覚で PostgreSQL でも GENERATED ALWAYS AS IDENTITY を設定できるようにした。

PostgreSQL の GENERATED ALWAYS AS IDENTITY

その他

PostgreSQL, MS SQL Server の場合に schema を定義できるようにし、テーブル定義にて作成した schema を選択できるようにした。

今後の機能追加について

昨今の AI エージェントの登場により、ER 図を手動で作成する機会が減ったり、DDL 出力を AI エージェントに任せる、という傾向は増えてきているのではないかと思っている。つまり ER 図の作成は AI エージェントに任せるのが楽で、手動で作成するのは手間だということである。一方で、プロダクトを持続維持するためには AI エージェントの単独機能では半ば心もとなく感じている (細かい調整を AI エージェントに依頼するのは手間であり、これは手動でサクッと済ませたい)。

この傾向を踏まえ、本ツールも MCP Server 対応を現在実装中である。ただ、MCP Server となるとブラウザ機能では対応できないため、VSCode の拡張機能での対応にはなるが。 こちらも対応ができ次第、改めて紹介したい。

余談

なお、本ツールの名称である ERD Designer は公開当時は名称が被らないようエゴサしていたのだが、最近(2025年11月くらい)、MariaDB にて同じ名称の類似機能が Enterprise Manager の機能のひとつとして公開された模様である。

うーん。有名どころと名称が被っちゃうとググラビリティが悪くなるんだよなぁ。。

ER図作成ツール ERD Designer の機能追加 (2025.07)

ブラウザだけで利用できる ERMaster 代替を目指した ER 図作成ツールを作っていることを投稿した (背景等は過去のエントリ参照)。

kajitiluna.hatenablog.com kajitiluna.hatenablog.com

今回は下記機能追加について紹介したい。

  • DDL ファイルの読み込み
  • 関連線のスタイル追加

なお、GitHub のリポジトリ、Google Workspace で公開しているアプリのリンクはこちら

github.com workspace.google.com

DDL ファイルの読み込み

Experimental な機能として、DDL を読み込んで 既に構築済みのデータベースがある場合、その DDL を読み込むことで ERD Designer にて管理できるようになる。

DDL の解析は node-sql-parser を利用している。 DDL のパターンについて、大して検証できているわけではないので、うまく読み込みができないパターンがあるかもしれない。 その場合は GItHub Issue に起票してほしい。

DDL の読み込み方法

DDL を読み込む場合、左上のタイトル横に配置している設定アイコンの Import from DDL より行う。

ダイアログが表示されるので、テキストエリアにインポートする DLL を入力する。

なお、Comment Separator は他ツールからの以降を想定したもので、ツールによってはコメントに論理名に加え、セパレータ文字列の後に補足説明を追加できる。Comment Separator にそのセパレータ文字列を入力することで、インポートした際に logical name と description に取り込むことができる。

CHECK DDL ボタンを押せば、DDL の1文ごとに取り込みできるかのチェック結果を確認できる。

なお、現時点では ERD Designer ではテーブル制約でユニーク制約を定義できない。このため、DDL にテーブル制約でユニーク制約を定義している場合、代替処置として、ユニークインデクス定義として取り込むようにしている。

関連線のスタイル追加

関連線の表示についても、いくつかの機能を追加した。

  • 関連線の色変更
  • 関連線の太さ変更
  • 関連線の描画方式の変更

特に、これまでは直線の描画のみだったが、他のER図描画ツールではよくある水平線/垂直線の描画オプションを追加した。 この水平線/垂直線の描画は、中々奥が深く、どこまでこだわるかによって、実装難易度が変わってくる。

ERD Designer の方針として、できるかぎり直感的な操作を目指しているので、自然に描画できることを心がけた。

無料の ER図作成ツールでここまで直感的に関連線を引けるものはないと自負している。

今後の機能追加について

ER図の設計として必要な機能はある程度提供できるようになったとは思っている。 今後は、操作上の改善やデータモデル設計の補助ツールとして改善していこうと考えている。

今、ぼんやりと考えている機能は以下の通り

(赤文字は 2026/04/27 追記)

  • カラムの順序変更が以外に手間がかかるので、このあたりの操作性の改善 -> 実はテーブル編集ダイアログ (Edit Table) にて、カラムをドラッグ & ドロップにより順序を変更できるようになっています。
  • 現状リレーショナルデータベースのみの管理だが、他のデータストレージを同時に管理できる機能

もし、他にも機能追加の要望や不具合等ありましたら、コメントいただけるとありがたいです。

ERD Designer にカラムグループ機能とカラム名個別定義を追加

前回、ブラウザだけで利用できる ERMaster 代替を目指したツールを作っていることを投稿した (背景等は前回のエントリ参照)。

kajitiluna.hatenablog.com

その後も軽微な改善を行っており、今回、下記機能を追加したので紹介したい。

  • カラムのグループ管理
  • カラムごとの物理名 / 論理名の定義

なお、GitHub のリポジトリ、Google Workspace で公開しているアプリのリンクはこちら

github.com

workspace.google.com

カラムのグループ管理

カラムグループとは、いくつかのカラム定義をまとめて、複数のテーブルで共有して利用できるもの。例えば、全てのテーブル定義に作成日時と更新日時を定義する場合、カラムグループ定義にて、作成日時と更新日時を定義したカラムグループを用意することで、各テーブルに個別に定義することなく、該当のカラムグループを利用できる。

もし、(こんなケースはほぼないと思うが) 後で全てのテーブルに作成日時と更新日時と合わせて削除日時を追加することになった場合、このカラムグループに削除日時のカラムを追加すれば、該当カラムグループを利用しているテーブルに削除日時が自動的に追加されることになる。

常にセットで利用するカラムがあるのであれば、カラムグループを利用することで、設計作業は効率的になると考えている。

カラムグループの利用方法

カラムグループの利用するには、下記2ステップの手順をとる。

  1. カラムグループの定義追加
  2. 各テーブル定義でカラムグループの利用

カラムグループの定義追加

カラムグループの定義は左上のタイトル横に配置している設定アイコンより行う。

上記メニューより、Column Groups ダイアログが表示されるので、ここでカラムグループの追加や更新を行う。

上記画像は、作成日時と更新日時のカラムを定義したものである。カラム追加はテーブル定義と同じ要領でできる。

ここのダイアログでカラムグループを設定すれば、各テーブル定義で利用する準備はできた。

各テーブル定義でカラムグループの利用

カラムグループの利用はシンプルで、テーブル定義にて「Add column group」を選択すればよい。カラムグループの選択画面が表示されるので、追加したいグループを指定する。カラムグループは編集画面上は1行で表示されるが、ER図上ではグループが展開され定義したカラムが表示されるようになっている。

カラムごとの物理名 / 論理名の定義

カラム定義は共有して利用するようになっている。これは、複数テーブルにて共通のカラムの定義がある場合、都度カラム定義を作成する必要はなく、一度作成したカラム定義を他テーブルで共通して利用することができる。これにより、例えばユーザIDの型や物理名などの変更が必要な場合、カラム定義を一つ修正するだけで、それを利用している他のテーブルにも自動的に反映されるメリットがある。

一方で、カラム名を共有しているために、別のカラム名を付けたい場合は別のカラム定義を行う必要があった。 例えば、 TODO タスクを扱うテーブル定義にて、作成者と担当者を管理する場合、作成者のユーザIDと担当者のユーザIDのカラムを定義する必要がある。ユーザIDの型は同一ではあるが、カラム名を別に定義するために、個別のカラム定義を行うことになる。もし、ユーザIDの型を変更する場合、この作成者や担当者のユーザIDは、ユーザIDのカラム定義とは別定義のため、個別に変更が必要になる。

これでは手間がかかるので、カラム定義は共通のものを利用しつつ、必要に応じてカラム名をテーブルごとに個別に定義できる機能を追加した。

カラム名を個別に定義するには、上記画像のように Override Names に物理名もしくは論理名を設定することで、カラム定義の物理名 / 論理名ではなく、こちらの個別の設定が利用されるようになる。物理名 / 論理名以外はカラム定義を利用することになるので、この図の場合、ユーザIDの型を変更すると、こちらにも自動的に反映されることになる。

その他

なお、今回の更新に合わせて、リレーション周りの操作に不具合がありリレーションを定義できない状態になっていたので、合わせて修正した。リレーション周りは親テーブルのPK更新にて子テーブルの更新を行っているため、このあたりの処理は複雑になっている。。

また、現状デフォルト値の定義ができないので、こちらも早期に対応したい。

もしよければ、試しに使ってみてフィードバックいただけると非常にありがたいです。不具合が見つかったり改善要望などありましたら GitHub Issue に起票いただけると助かります。

ブラウザで利用できる ERMaster の代替ツールをつくっている

背景 | ERMaster は非常に便利なのだが

ERMaster は非常に便利で、2025 年現在でもプロジェクトで利用している。しかしながら、本家は10年近く更新されておらず、使い込んでいると色々困ることが起こる。

  • ある程度テーブル数が増えると、不具合によりファイルサイズが肥大化する。
    • ファイルサイズが肥大化すると読み込みに時間がかかるようになるため、バグで出力された不要な行を削除するスクリプトを作ってしのいでいる。
  • 保存するたびに erm ファイル内の順序が変わるため、git 管理しづらい。
  • 2010 年頃以降のDBの更新が反映されていない。たとえば、PostgreSQL の json, jsonb 型が反映されておらず利用できない。

ERMaster の素晴らしいところは、視覚的に全体を俯瞰してテーブル設計ができ、これをインプットとしてテーブル定義仕様書や DDL を出力できることである。世の中の代替ツールを探そうとしても、これに合致するものは見つからない (有償版までは調べていない)。検索しても、以下のようなもので「テーブル設計を起点に実装を出力できること」を満たすツールが見つけられなかった。

  • よくヒットするのが、SchemaSpy など、データベースのテーブル定義から ER 図を作成するもの。確かに、ドキュメントがない案件だと重宝するツールだが、これだと、視覚的に全体を俯瞰するのが最後になってしまい、設計を起点にできない。
  • miro や draw.io のように作図はできるが、ここから仕様書や DDL を出力することができない。ER 図は単なるお絵描きで、DDL を自分で作成する手間がかかる。特にテーブル定義に至っては、作図ツールで記載した内容と類似するものを作成する事になり、手間だし二重管理になってしまう。

有志によって ERMaster をフォークして開発されていたりする。上記課題は解決できそうだが、元々が Eclipse プラグインであるため、フォークされたものも Eclipse プラグインなので、これらを利用するにはダウンロードしたりなど手間がかかる。

今の御時世、インストールする手間をかけることなく、ブラウザで完結させ、手軽にお試しできるツールがほしい。 海外のサイトにはそれっぽいものもあったが、サインアップする必要があったり、見た目が好みでなかったり ERMaster のような爽快な操作性ではなかった。

なので、ブラウザだけで利用できる ERMaster 代替を目指したツールを作った 元々は TypeScript + React の勉強が主目的だったが

ブラウザで動作する、ERMaster 代替を目指したツール ERD Designer について

ブラウザより kajitiluna.github.io/erd-designer にアクセスすれば利用できる。 単純なクライアントアプリケーションとして作成しており、バックエンドのサーバは用意していない。なので、作成したデータはローカルに保存され、外部サーバ等クラウドには一切保存しない。

GitHub のリポジトリはコチラ。 github.com

一人で開発しているので、ERMaster ほど潤沢に機能は揃っていない。現在、実装している機能は以下の通り。

  • RDBMS は PostgreSQL, MySQL に対応
  • テーブル定義にて、カラムの物理名、論理名の定義
  • PK, NotNull, Unique 制約の定義
  • インデクス定義
  • 共有カラムモデル機能により、一度定義したカラムを複数のテーブルで共有できる (ERMaster の辞書機能みたいなもの)
  • リレーションの定義にて、多重度の定義が可能
  • メモ機能。付箋のようなものを配置できる
  • DDL の出力
  • ER図の png 画像出力
  • テーブル定義書を Excel ファイルとして出力

操作性の機能としては、以下に対応している。

  • PK, FK を視覚的に表示
  • インデクス定義されているカラムに * を付与 (ERMaster だと、詳細ダイアログを開かないとインデクス定義されているのかわからなかった)
  • テーブルをドラッグで移動
  • テーブルをダブルクリックで編集
  • 短径領域をドラッグすることで、複数のテーブルとメモを選択 (なぜか FireFox だとできない)。複数選択状態でドラッグすると、まとめて移動できる
  • リレーションの線分を、ドラッグ操作で折り曲げる。また頂点を両端を結ぶ線分上にドラッグすることで、線分の折り曲げを解除
  • 拡大と縮小表示
  • クリックやドラッグ操作できる箇所にマウスがホバーされた際に、マウスカーソルの表示を変更
  • アンドゥ (ctrl +z, cmd + z) とリドゥ (ctrl + y, cmd + shift + z, cmd + y) に対応。

また、作成内容を共有したり構成管理できるよう、ファイル出力も備えている(拡張子は .erd だが、中身は json ファイル)。 下記に記載する Google Drive App 機能を利用せずに他の人と共有する際は、この .erd ファイルを利用すれば良い。

なお、この .erd ファイルには作成したテーブルやカラムの定義以外にも、選択したデータベースのカラムの型定義も含まれている。 これは、はじめに「 json, jsonb 型が反映されておらず利用できない」と記載したが、この課題への対応を意図したものである。 新しい型が追加された際に本ツールが追随できなかったとしても、単なる型名の表記であれば .erd ファイルに新しい型定義を追加することで対応できるようにしている。 (具体的な追加方法は、別途マニュアル等に記載したい)

Google Drive App 機能について

なお、本アプリは Google Drive App にも対応しており、以下より Google Workspace にインストールすることで、Google Drive 上のファイルを操作できるようになる。 workspace.google.com

基本的な機能は上記のツールと同等だが、以下の点が異なる。

  • 編集するたびに自動的に Google Drive 上のファイルを上書き保存
  • テーブル定義書は Excel ファイルではなく、Google スプレッドシートとして同一ディレクトリに出力
    • 制約事項として、Excel ファイルだと ER図を添付できたが、Google スプレッドシートでは API が公開されていなかったため画像貼り付けできなかった
  • Google Drive 上のファイルを同時編集した場合は、先勝ちとなる。(同時照会はできるが、同時編集は未対応)

今後の機能追加について

あくまで個人的にほしいと思った機能を作ったので、ERMaster にあるが、こちらにはない機能も多数ある。 例えば以下の機能には対応していない。(とはいっても、追加したいがまだできていないものもあるので、現時点で想定しているものとそうでないものを分けて記載)

(赤文字は 2026/04/27 追記)

  • 今後追加したい
    • このツールのマニュアル! GitHub リポジトリの Wiki で公開したい -> GitHub Wiki に公開済み
    • カラムのグループ定義 -> 2025/06/07 時点で対応済み
    • テーブル検索機能
    • PostgreSQL のスキーマ定義やテータベースごとの定義 -> スキーマは定義できるように対応済み
    • PostgreSQL や MySQL 以外のデータベース -> MS SQL Server を追加済み
  • ERMaster にはあるが、多分追加しない (もし希望があれば、検討するかも。。。)
    • PostgreSQL のシーケンス定義
    • View の定義
    • トリガーの定義
    • 複合一意キーの定義 (これ、インデクスにUNIQUEつけるのでは駄目なの?) -> インデクス定義とは別に設定できるように対応済み
    • ERMaster のカテゴリ機能 (カテゴリごとにタブで表示を切り替えできるアレ) -> Perspective 機能として対応済み
    • ER図の表記法の変更
    • Java ソースコードの出力
    • 翻訳機能
    • 画像の挿入
    • テーブル定義書の HTML 出力
    • テーブル定義書のテンプレート

特にマニュアルがないのは非常によろしくない。余力があれば追加していきたい。

もしよければ、試しに使ってみてフィードバックいただけると非常にありがたいです。不具合が見つかったり改善要望などありましたら GitHub Issue に起票いただけると助かります。

Maven依存ライブラリの「ソースコード」を指定ディレクトリに出力する

ほんとーに備忘録。
pom.xmlで指定したライブラリを指定ディレクトリに出力するには下記コマンドを実行すれば良い。

mvn dependency:copy-dependencies -DoutputDirectory=path-to-output

同様にソースコード(を固めたjar)も出力したい!と思ってぐぐってみても、なかなかヒットしない。
最終的にmavenの本家サイトにたどり着く。
Apache Maven Dependency Plugin – dependency:copy-dependencies

mvn dependency:copy-dependencies -Dclassifier=sources -DoutputDirectory=path-to-output

classiferオプションを指定すれば良いみたい。