初めまして、サービス開発部プロダクトエンジニアの篠倉と申します。
2024年12月、弊社プロダクト『ミキワメ』で新機能をリリースしました。
この機能の開発では、20テーブル以上のデータベース設計を行う必要がありました。大規模なER図を効率的に作成し、レビューをスムーズに進めるために試行錯誤した手法と得られた知見を共有します。
直面した課題
今回のER図設計では、以下の3つの要件を満たすことが課題となりました。
- テーブル名やリレーションを明確に表現する
- カラム情報(型、NULL可否、外部キー等)を適切に記載する
- 効果的なレビューを実現し、スムーズにフィードバックを受けられる環境を整備する
検討過程と採用した方法
最初にNotionとMermaidの組み合わせを検討しましたが、以下の2つの理由で採用を見送りました。
※Mermaidとはマークダウンに近い書き方でフローチャート、シーケンス図、ER図を書ける記法です
- コメントがコード上にしか書けず、レビューが非効率になる
- リレーションを詳細に記載すると文字が小さくなり、視認性が低下する
検討を重ねた結果、PlantUMLを用い以下の方法を採用しました
※PlantUMLとはオープンソースのツールです。Mermaidと同様フローチャート、シーケンス図、ER図を書くことができます。
- PlantUMLを使用してER図を作成
- 作成したER図をMiroに添付
- Miro上でチームメンバーがコメントを付与
この方法により、大規模なER図に対する効果的なチームレビューが可能になりました。
感じた利点と課題
- 利点
- テーブル名、リレーション、カラム情報を一元管理できる
- Miro上で拡大縮小ができ、全体像と詳細の両方を確認しやすい
- ER図上に直接コメントを残せるため、レビューがスムーズになる
- 課題
- 大規模なER図では複雑になり、視認性が低下する
- 図を修正するとコメントが消えるため、やり取りのログが残らない
今回のER図作成を振り返ってみて
今回は上記の「直面した課題」の解決を実現するため、PlantUMLとMiroを用いた方法を使ってER図の作成とレビューでテーブル設計を行いました。課題はありつつも一定解決できたと感じました。
しかし、仮にまた同様のER図作成を行う場合は以下の方法を試したいと考えています。
- Notion + Mermaidで全体のER図を作成し、シンプルにリレーションを表現する
- 機能ごとに詳細なER図とテーブルの説明をNotionにまとめる
このような記載方法のメリットとしては全体像と詳細を分けて表現できる点です。全体ER図で構造を把握しやすくし、機能別の詳細ページで深い理解が可能になります。
まとめ
大規模なデータベース設計では、ER図の作成とレビューの方法が開発のスムーズさを左右します。今回採用したPlantUML + Miroの手法は、一定の成果を得られましたが、より柔軟な管理を実現するための改善点も見つかりました。
同様にER図の作成とレビューの方法についての課題に直面している方は、自社の開発環境に応じて最適な手法を検討してみてください。