【ツール活用|豆知識】データベース管理の救世主!SchemaSpyでDBドキュメントを自動生成しよう

導入

データベースの設計変更が発生するたび、ExcelやドキュメントツールでER図を手動更新していませんか?「実装とドキュメントの乖離」は、開発現場における技術的負債の典型例です。今回紹介するSchemaSpyは、データベースに接続して構造を解析し、最新のER図とテーブル定義をHTML形式で自動出力するツールです。これを使えば、ドキュメントの更新漏れから解放され、常に信頼できる設計情報をチームで共有できます。

基礎知識

SchemaSpyは、Javaで動作するオープンソースのリバースエンジニアリングツールです。データベースのメタデータ(テーブル、カラム、制約、インデックスなど)を読み取り、視覚的なER図(Graphvizを使用)と詳細な定義一覧を生成します。

必要な準備は以下の3点です。
1. Javaの実行環境 (JRE/JDK)
2. Graphviz (ER図を画像化するために必須)
3. JDBCドライバ (接続するDBの種類に合わせたもの)

実装/解決策

SchemaSpyを実行する際は、コマンドラインから接続情報を指定します。Dockerを利用すれば環境構築の手間を最小限に抑えられます。以下は、PostgreSQLを想定した実行手順の論理的な流れです。

1. Dockerコンテナを起動し、SchemaSpyのイメージを指定する。
2. データベース接続情報(ホスト、ポート、DB名、ユーザー、パスワード)を引数で渡す。
3. 出力先ディレクトリを指定し、HTMLドキュメントを生成する。

サンプルプログラム

Docker環境でSchemaSpyを動かすためのコマンド例です。このコマンドをターミナルで実行することで、即座にドキュメントが生成されます。


docker run –rm -v “$PWD/output:/output” \
-v “$PWD/drivers:/drivers” \
schemaspy/schemaspy:6.2.4 \
-t pgsql \
-db データベース名 \
-host データベースホスト名 \
-port 5432 \
-u ユーザー名 \
-p パスワード \
-o /output \
-dp /drivers/postgresql-42.x.x.jar # JDBCドライバのパス

実行後、outputディレクトリ配下にindex.htmlが生成されます。
ブラウザで開くと、テーブル間の依存関係が可視化されたドキュメントを確認できます。

応用・注意点

現場で運用する際は、以下の点に注意してください。

情報の秘匿性: 生成されたHTMLは誰でも閲覧できてしまうため、社内ネットワーク外への公開や、Gitリポジトリへのコミット時には権限管理に十分注意してください。
Graphvizのレイアウト: テーブル数が数千規模になるとER図が非常に巨大になり、ブラウザでの閲覧が困難になります。その場合は、スキーマを分割して生成するか、必要なテーブルのみを抽出する設定を検討しましょう。
CI/CDとの連携: GitHub Actions等のCIツールと組み合わせれば、mainブランチへのマージ時に自動でドキュメントを更新し、S3やGitHub Pagesにデプロイする仕組みも構築可能です。これにより、設計の透明性が飛躍的に高まります。

コメント

タイトルとURLをコピーしました