本記事は、OSSのノーコード・ローコード開発ツール「プリザンター」 Advent Calendar 2022 の15日目の記事です。
概要
データベース情報からスキーマ定義やER図を出力してくれる SchemaSpy を使ってプリザンターのER図を作成します。最終的にプリザンターから以下のようなER図を作成することを目指します。
SchemaSpyの出力イメージ(ER図)
https://implem.github.io/PleasanterERD/schemaspy/relationships.html
本記事は全3回に分けて連載予定の第2回となります。今回はSchemaSpyを実行するための準備について記載します。
試した環境
プリザンター 1.3.26.1(2022/12/15時点の最新版)
OS: Windows10
DB: SQL Server 2019 Express Edition (64-bit)
はじめに
今回はプリザンター自体のデータベース定義情報をSchemaSpyで出力してみます。
事前準備
以下のマニュアルを参考にプリザンターをインストールします。今回の記事ではプリザンターをWindows 10(データベースはSQL Server)にインストールする前提で進めます。
導入手順
1. Graphvizのインストール
Graphvizをインストールします。
SchemaSpyの公式マニュアルを見ると、「バージョン 6.1.0 以降、Graphviz は不要になりました。コマンドライン引数 vizjs を追加することで使用できる組み込みの viz.js があります。」との記載がありますが、vizjsオプションはJava15以降では動きません。1
vizjsオプションを指定するよりGraphvizをインストールして使った方がSchemaSpyの処理速度が早いので、繰り返し利用する場合はGraphvizをインストールすることをおすすめします。
「Download」をクリックしてインストーラをダウンロードします。
「graphviz-7.0.4 (64-bit) EXE installer」をクリックします。
環境変数にパスを追加する場合は「Add Graphviz to the system PATH for all users」または「Add Graphviz to the system PATH for current user」を選択します。
2. Adoptium(旧:AdoptOpenJDK)のインストール
Adoptium(旧:AdoptOpenJDK)をインストールします。
AdoptOpenJDKはEclipse Adoptiumになりました。2
Graphvizをインストールせずにvizjsオプションを指定してSchemaSpyを利用する場合はVersion8または11をインストールしてください。
「Latest LTS Release jdk-17.0.5+8」をクリックしてインストーラをダウンロードします。
ダウンロードした「OpenJDK17U-jdk_x64_windows_hotspot_17.0.5_8.msi」を実行します。
3. Microsoft SQL Server 用 JDBC Driver のダウンロード
Microsoft SQL Server 用 JDBC Driver をダウンロードします。
「Microsoft JDBC Driver 11.2 for SQL Server (zip) のダウンロード」をクリックしてjarファイルをダウンロードします。
「mssql-jdbc-11.2.1.jre17.jar」がダウンロードされたことを確認します。
4. SchemaSpyのjarファイルのダウンロード
SchemaSpyのjarファイルをダウンロードします。
SchemaSpyの公式ページからダウンロードできる「schemaspy-6.1.0.jar」だと実行エラーになるので、GitHubのLatest Buildを利用します。3
Latest Buildの「schemaspy@latest」をクリックしてjarファイルをダウンロードします。
「schemaspy-6.1.1-SNAPSHOT.jar」がダウンロードされたことを確認します。
実行手順
場所はどこでもよいのですが、今回はC:ドライブ直下にSchemaSpyフォルダを作成して実行用ファイルを配置します。
C:\SchemaSpy
|-- mssql-jdbc-11.2.1.jre17.jar
|-- schemaspy-6.1.1-SNAPSHOT.jar
おつかれさまでした。ここまできたら、以下のコマンドでSchemaSpyを実行してみましょう!
cd C:\SchemaSpy
java -jar schemaspy-6.1.1-SNAPSHOT.jar -t mssql17 -dp mssql-jdbc-11.2.1.jre17.jar -host 127.0.0.1 -port 1433 -db Implem.Pleasanter -u sa -s dbo -p saのパスワード -o C:/SchemaSpy/output -connprops encrypt\=false -imageformat svg
Microsoft Windows [Version 10.0.19042.631]
(c) 2020 Microsoft Corporation. All rights reserved.
C:\Users\noro>cd C:\SchemaSpy
C:\SchemaSpy>java -jar schemaspy-6.1.1-SNAPSHOT.jar -t mssql17 -dp mssql-jdbc-11.2.1.jre17.jar -host 127.0.0.1 -port 1433 -db Implem.Pleasanter -u sa -s dbo -p saのパスワード -o C:/SchemaSpy/output -connprops encrypt\=false -imageformat svg
____ _ ____
/ ___| ___| |__ ___ _ __ ___ __ _/ ___| _ __ _ _
\___ \ / __| '_ \ / _ \ '_ ` _ \ / _` \___ \| '_ \| | | |
___) | (__| | | | __/ | | | | | (_| |___) | |_) | |_| |
|____/ \___|_| |_|\___|_| |_| |_|\__,_|____/| .__/ \__, |
|_| |___/
6.1.1-SNAPSHOT
SchemaSpy generates an HTML representation of a database schema's relationships.
SchemaSpy comes with ABSOLUTELY NO WARRANTY.
SchemaSpy is free software and can be redistributed under the conditions of LGPL version 3 or later.
http://www.gnu.org/licenses/
INFO - Starting Main v6.1.1-SNAPSHOT on DESKTOP-3FUMCFT with PID 3192 (C:\SchemaSpy\schemaspy-6.1.1-SNAPSHOT.jar started by noro in C:\SchemaSpy)
INFO - The following profiles are active: default
INFO - Started Main in 3.794 seconds (JVM running for 4.932)
INFO - Starting schema analysis
INFO - Connected to Microsoft SQL Server - 15.00.2095
INFO - Gathering schema details
Gathering schema details.................................................................................(2sec)
Connecting relationships.................................................................................(0sec)
Writing/graphing summary.INFO - Gathered schema details in 0 seconds
INFO - Writing/graphing summary
INFO - Graphviz renderer set to ':cairo'
...ERROR - dot -Tsvg orphans.dot -oorphans.svg: Warning: cell size too small for content
ERROR - dot -Tsvg orphans.dot -oorphans.svg: in label of node Binaries
~中略~
....(5sec)
Writing/diagramming detailsINFO - Completed summary in 5 seconds
INFO - Writing/diagramming details
..ERROR - dot -Tsvg Groups.1degree.dot -oGroups.1degree.svg: Warning: cell size too small for content
ERROR - dot -Tsvg Groups.1degree.dot -oGroups.1degree.svg: in label of node Groups
~中略~
....(11sec)
Wrote relationship details of 78 tables/views to directory 'C:\SchemaSpy\output' in 22 seconds.
View the results by opening C:\SchemaSpy\output\index.html
INFO - Wrote table details in 11 seconds
INFO - Wrote relationship details of 78 tables/views to directory 'C:\SchemaSpy\output' in 22 seconds.
INFO - View the results by opening C:\SchemaSpy\output\index.html
C:\SchemaSpy>
C:\SchemaSpyに「output」フォルダができるので、その中の「index.html」をブラウザで開いてみると、プリザンター自体のDBドキュメントが作成されています!
個別のテーブルについても見てみましょう。Issuesテーブルを見てみると、プリザンターの期限付きテーブルの分類項目に相当する「ClassA」「ClassB」「ClassC」などが図に出力されていることが分かりますね。
おわりに
プリザンター以外でもSQL Serverを使っているシステムであれば上記を参考にSchemaSpyでDBドキュメントを作成できると思います。第3回の記事ではプリザンターの画面上のテーブル単位でER図を作成する手順を公開予定です。
参考リンク
- Graphviz
- Adoptium
- Microsoft SQL Server 用 JDBC Driver のダウンロード
- SchemaSpy GitHub