LoginSignup
6
3

More than 3 years have passed since last update.

ドキュメント成果物に ER図 を含めて納品することになった。
形だけで良いようなので、外部キー制約を主キーから推測しER図を生成する SchemaSpy に頼ることにした。

Docker を使わずに、ピュアな Windows10 環境だけで動かしてみたが、そのような実行手順は Qiita で誰も書いていなかったので情報共有しておく。

前提ライブラリの準備

Chocolatey のインストール

Chocolatey とは Windows の(非公式の)パッケージマネージャである。
Linuxのyumaptに相当するものと言えばお分かりいただけるだろう。
PowerShellを管理者モードで起動し、次のコマンドを実行するとインストールできる。

PowerShell
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

インストールされたことを確認する。

$ choco -v
0.10.15

Graphviz のインストール

DOT言語で記述したファイルから画像ファイルを出力するツール Graphviz をインストールする。

choco install graphviz -y

bin に Path を通す。

SETX /M PATH "%PATH%;C:\Program Files (x86)\Graphviz2.38\bin"

なお、wingetというマイクロソフト公式のパッケージマネージャが使える環境なら、

winget install graphviz

としてインストールしてもOKだ。

JREとJDBCドライバのインストール

本記事を読んでいるということは、すでに導入済みと思うので、手順は割愛する。

SchemaSpy 本体のインストール

https://github.com/schemaspy/schemaspy/releases/download/v6.1.0/schemaspy-6.1.0.jar
を任意のフォルダにダウンロードする。(バージョン番号は記事執筆時点のもの)

起動方法

実行コマンドとパラメータは次の通り。

java -jar schemaspy-6.1.0.jar -t "DBタイプ" -dp "JDBCドライバ" -db "DB名" -host "サーバ名" -port "ポート番号" -u "ユーザ名" [-p "パスワード"] -o "出力先ディレクトリ"

例えば MySQL の場合、次のように指定する。

java -jar schemaspy-6.1.0.jar -t mysql -dp mysql-connector-java-8.0.20.jar -db example_db -host example.com -port 3306 -u root -o schema -connprops serverTimezone\=Asia/Tokyo

パラメータは類はプロパティファイルに記述しておき、それを読み込ませる方法でも良い。

実行

実行すると、出力先ディレクトリにHTMLファイルと画像ファイルが出力される。
image.png
index.htmlを開くと、最初にダッシュボードの画面になる。
image.png
テーブル名をクリックし、Relationships から ER図 を表示できる。
image.png

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3