tbls で DB ドキュメントを自動出力
BABY JOB株式会社 / H1R0
メンバー / バックエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
利用機能 | ツールの利用規模 | 事業形態 |
---|---|---|
データベース定義書生成 | 10名以下 | B to B B to C |
利用機能 | データベース定義書生成 |
---|---|
ツールの利用規模 | 10名以下 |
事業形態 | B to B B to C |
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
システムの特性上 DB の変更が多いことおよび変更のたびにクライアントツールから出力する必要があることから、ドキュメント管理の手間を減らしたいというニーズがありました。
また、DB の構成はマイグレーションファイルによって管理していたため、マイグレーションファイルとドキュメントの距離を近づけたいという課題もありました。
どのような状態を目指していたか
- DB の変更に合わせて自動でドキュメントを生成できること
- 普段の業務と距離を近づけるために Git で管理できること
比較検討したサービス
- SchemaSpy
比較した軸
- CI との連携のしやすさ
- ドキュメント出力方法がシンプルであるか
- 設定変更のしやすさ
選定理由
上記の軸で比較したところ、どちらもドキュメントの出力方法はシンプルでしたが、最終的には以下の三点で tbls の方が要件に適していると判断し、導入を決めました。
- Docker イメージが公開されていて環境非依存で動くこと
- シングルバイナリであること
- 設定ファイルが YAML 形式であること
導入の成果
tbls の導入によりドキュメント管理の手間が減ったことで開発業務に集中できるようになりました。
また、ドキュメントを Git 管理できるようになったことで、コードを書きながら DB 全体を確認したいときや特定のテーブルについての情報を得たいときも即座に確認できるようになりました。
導入に向けた社内への説明
上長・チームへの説明
プロダクションコードとの依存関係がなく気軽に捨てられることから、特段の説明はせず、導入することだけを共有しました。
活用方法
GitHub Actions を利用し、DB マイグレーションの変更があったときにドキュメントを生成を行っています。
なお、生成したドキュメントはソースコードと同じリポジトリに push しています。
GitHub Actions の定義ファイルのイメージなどは弊社のブログで公開していますので、こちらも参考にしていただければと思います!
tbls + GitHub Actions で DB ドキュメント自動生成
よく使う機能
- ドキュメント生成
- Docker イメージの使用
ツールの良い点
- インストール方法が豊富で、それぞれの環境にあった方法を選べる
- Docker イメージもあるため、ローカルへのインストールをしなくても使用できる
- シングルバイナリなため、CI 導入が用意
- ドキュメントのテンプレートを定義できる
ツールの課題点
- DB の変更があった部分のみのドキュメント更新ができない
- 特定のカラムの除外ができない
- created_at などの業務にかかわらないカラムなどは除外したい
ツールを検討されている方へ
tbls はドキュメント生成だけでなく lint も実行できる大変優れたツールです!
ローカルでの実行であれば手軽且つ一切の費用無しで実行できるので、ぜひ一度試してみてはいかがでしょうか。
今後の展望
現在は ER 図が DB 全体に対するものしかないので、Viewpoints を利用したテーブルのグループ化をし、より理解しやすい ER 図とドキュメントの生成を行おうと考えています
BABY JOB株式会社 / H1R0
メンバー / バックエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
よく見られているレビュー
BABY JOB株式会社 / H1R0
メンバー / バックエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名