🌤️

DB定義の管理を楽にしてくれる? ActiveRecordからDBMLを出力するGem作ったよ!

2023/05/27に公開

この記事について

みなさん、こんにちは!今日は新しく作ったRails7のActiveRecordからDBML(Database Markup Language)を出力するGem、「ActiveDBML」を紹介します。
Gemの詳細とダウンロードはこちらから:
https://rubygems.org/gems/active-dbml

DBMLって何?

DBMLとは、Database Markup Languageの略で、データベースのスキーマを表現するためのシンプルなマークアップ言語。テーブル、カラム、リレーションなどを視覚的に表現できるので、データベース設計の理解やコミュニケーションが容易になります。

弊社は、dbdocs.ioを活用してDB定義を行っています

詳しくはこちらの記事を参考:
https://zenn.dev/ryo_kawamata/articles/introduce-ddbdiagram-io

ActiveDBMLって何?

ActiveDBMLは、データベース定義書と実際のデータベース設計との間のズレをなくすためのGemです。ActiveRecordで作ったモデルからDBML形式の定義書をポンっと出してくれます。

なんで作ったの?

データベース定義書を手作業で作るの面倒ですよね。定義書と実際の設計が違ってくると、管理も二重になりドキュメント管理のコスタ高になったり、乖離が起きて意味がなかったり。はたまた、ドキュメントを作成しても、下流担当してるエンジニアに理解されなかったり、方向が違っていったり…
DBMLを知ったときから、ORM上で定義したものを出力されたらめっちゃ楽になると思い作ってしまいました。

ActiveDBMLの機能って?

現時点では、ActiveDBMLで出力できるのは以下:

  • カラムの定義
  • Enumの定義
  • インデックス情報
  • テーブル同士のリレーション
  • カラム、テーブルのコメント

をDBMLとして出力してくれるRakeタスクを提供します。
納品時のドキュメント共有や、プロジェクト開始時にPM・PG兼任してる人には重宝すると思います。

ActiveDBMLの使い方

Gemをインストール。その後は、次のコマンドを実行するだけ。

rake active_dbml:export

出力先のファイルパスを指定したい時は、こんな感じ。

rake active_dbml:export["export/path.dbml"]

さいごに

ActiveDBML、実はこれが私が初めて作ったGem。(ChatGPTだより…)
なので、まだまだ手探りな部分もあるかもしれません。もし何かバグを見つけたら、教えてもらえると嬉しいです。新機能の要望なんかも大歓迎!

少しでも皆さんのデータベース設計が楽になれば、嬉しいです。
何かフィードバックがあれば、お気軽にどうぞ!IssueやPR受け付けてます。

Gemの詳細とダウンロードはこちらから:ActiveDBML on RubyGems

それでは、楽しいコーディングライフを!

SNS

Discussion