ドキュメント成果物に ER図 を含めて納品することになった。
形だけで良いようなので、外部キー制約を主キーから推測しER図を生成する SchemaSpy に頼ることにした。
Docker を使わずに、ピュアな Windows10 環境だけで動かしてみたが、そのような実行手順は Qiita で誰も書いていなかったので情報共有しておく。
前提ライブラリの準備
Chocolatey のインストール
Chocolatey とは Windows の(非公式の)パッケージマネージャである。
Linuxのyum
やapt
に相当するものと言えばお分かりいただけるだろう。
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ファイルと画像ファイルが出力される。
index.html
を開くと、最初にダッシュボードの画面になる。
テーブル名をクリックし、Relationships から ER図 を表示できる。