every Tech Blog

株式会社エブリーのTech Blogです。

MySQL のテーブル構成を Liam ERD で可視化してみた

目次

はじめに

こんにちは、開発本部開発1部トモニテグループのエンジニアの rymiyamoto です。 プロダクトを開発していると、DB のテーブルは常に変化していきます。 そのため、テーブルの構成を可視化することで、テーブルの関係性を把握することができるので設計や開発の効率化に繋がります。 今回は、MySQL のテーブル構成を Liam ERD で可視化してみたので、その方法を紹介します。

Liam ERD とは

Liam ERD は、データベースから ER 図を生成するツールで、複雑なスキーマを簡単に可視化することができます。

liambx.com

主な特徴

公式サイトで挙げられている、Liam ERD が選ばれる理由は以下の通りです。開発者にとって嬉しいポイントが詰まっています。

  • Beautiful UI & Interactive(美しく、インタラクティブな UI)

    • 洗練されたクリーンなデザインで、どんなに複雑なデータベースでも直感的に理解できる ER 図を生成します。パン、ズーム、フィルタリングといった機能により、ストレスなく目的の情報にたどり着けます。
  • Simple Reverse Engineering(簡単なリバースエンジニアリング)

    • 既存のデータベーススキーマを、明確で読みやすい ER 図にシームレスに変換します。これにより、プロジェクトの全体像把握や、新しいメンバーのキャッチアップが格段に容易になります。
  • Effortless Setup(手間いらずのセットアップ)

    • 複雑な設定は一切不要です。データベースのスキーマ情報を提供するだけで、すぐに使い始めることができます。
  • High Performance(高いパフォーマンス)

    • 小規模なプロジェクトから、100 を超えるテーブルを持つ大規模なプロジェクトまで対応できるように最適化されており、軽快な動作を実現しています。
  • Fully Open-Source(完全なオープンソース)

    • Liam ERD はオープンソースソフトウェアです。誰でも自由に利用できるだけでなく、プロジェクトに貢献し、自身のニーズに合わせてツールを形成していくことが可能です。

サポート状況

2025/06/17 現在、全面的にサポートされているものとしては以下のものがあります。

liambx.com

  • PostgreSQL
  • Ruby on Rails
  • Prisma
  • tbls

MySQL は直接はサポートされていませんが、tbls 経由で可能になっています。 tbls は、データベース スキーマを文書化するためのツールで、DB 構成をドキュメント化することができます。 現在 MySQL / SQLite / BigQuery は tbls 経由でサポートされています。

github.com

x.com

導入

今回はコンテナで動かしている MySQL のテーブル構成を出力したいため、CLI で実行してローカル環境で動かすことを想定しています。

サンプルを用意しているので、そちらを参考にしてください。

github.com

手順

1. Liam ERD のビルドをさせるための Dockerfile を用意する

tbls のインストールは go install で行っています。
※ go と tbls のバージョンは、執筆時点でのものです。

ARG GO_VERSION=1.24.4
FROM golang:${GO_VERSION}-alpine AS liam-builder
RUN apk add --no-cache nodejs npm git bash
ARG TBLS_VERSION=1.85.4
RUN go install github.com/k1LoW/tbls@v${TBLS_VERSION}
WORKDIR /work

2. Docker Compose ファイルを用意する

ER 図を生成する builder コンテナと、生成された ER 図を表示する viewer コンテナを用意します。
profiles を設定することで、docker compose up 実行時にこれらのコンテナが起動しないようにしています。

services:
  db:
    # 省略
  # ER図をビルドするためのコンテナ
  builder:
    container_name: builder
    image: liam-erd-sample-builder:latest
    build:
      context: .
      dockerfile: ./dockers/liam/Dockerfile
    env_file:
      - .env
    volumes:
      - ./erd:/work
    working_dir: /work
    depends_on:
      - db
    profiles:
      - builder

  # 生成されたER図を表示するためのコンテナ
  viewer:
    container_name: viewer
    image: nginx:1.27-alpine
    volumes:
      - ./erd:/usr/share/nginx/html:ro
    ports:
      - "127.0.0.1:8080:80"
    profiles:
      - viewer

3. テーブル構成を出力するためのコマンドを用意する

Makefile に一連の処理をまとめます。
open コマンドは macOS 用です。他の OS をお使いの場合は、コマンド実行後に手動でブラウザを開いてください。

.PHONY: view-erd
view-erd:
  mkdir -p ./erd
  rm -rf ./erd/*
  docker compose run --rm builder sh -c "tbls out -t json -o schema.json \"mysql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:3306/${DB_SCHEMA}\" && npx --yes @liam-hq/cli erd build --format=tbls --input schema.json && mv dist/* ."
  docker compose --profile viewer up -d
  open http://localhost:8080

4. テーブル構成を出力する

$ make view-erd

使い勝手

テーブル選択時に外部キー制約があると関連するテーブルと色付きで表示され視覚的にわかりやすく、動作も快適な印象を受けました。 また、テーブルの詳細はサイドバーで出てくるので確認がしやすく、テーブル名のみや全カラムを表示を選べるので、必要な情報を素早く確認することができます。

他にもリンクを生成する事ができるので、共有する際にも便利です。

まとめ

今回は、MySQL のテーブル構成を Liam ERD で可視化してみました。

Liam ERD は、データベースから ER 図を生成するツールで、複雑なスキーマを簡単に可視化することができます。

ツールとして導入難易度も低く、見た目や動作が良い印象を受けました。 また、最近出たオープンソースであるため、今後の発展性も期待できます。

まだチーム内で導入したばかりなので、今後の活用方法を模索していきたいと思います。

最後に

エブリーでは、ともに働く仲間を募集しています。

テックブログを読んで少しでもエブリーに興味を持っていただけた方は、ぜひ一度カジュアル面談にお越しください!

corp.every.tv

最後までお読みいただき、ありがとうございました!