フューチャー技術ブログ

A5:SQL Mk-2に回帰した話

はじめに

TIG/DXチームの宮崎将太です。

みなさま、ER図を作成するとき、どんなツールを使っていますか?

タイトル通りの出オチですが、数度の輪廻転生を経て私はA5:SQL Mk-2(以下A5M2)を使用しています。ツールをお勧めする記事は多数ありますが、意外と現場のリアルな事情を踏まえた投稿は見当たらなかったので、経験を踏まえてER図作成ツールの比較検討していきたいと思います。

What’s A5M2

真面目な比較検討は後述しますが、文脈の都合上最低限度の情報としてA5M2が何者か記載しておきます。

  • 無料のER図作成ツール兼SQLクライアント
    https://a5m2.mmatsubara.com/
  • 古くは2007年から開発が続けられており、ER図作成ツールとしては超古参。
    内部的には1997年から脈々と開発が続けられています。
    最近(2022/1/23)も大幅なUpdateが加えられました。
    https://a5m2.mmatsubara.com/document/history.txt
  • 対応OSはWindowsのみ(超重要)
    これが原因で道に迷う方も多いのではないかと思います。
    私が輪廻転生を遂げるきっかけもこの事象が原因です。
A5M2

経緯

そもそも何故ER図作成ツールで輪廻転生しているのか簡単にご説明です。
ざっくり↓の遍歴です。

7年前から5年程WindowsでA5M2使用

当時のプロジェクト標準になっていたこともありA5M2を使用していました。

この時は会社通じてWindowsメインだった(Mac調達もできたけど標準PCではなかった)ので、どこのプロジェクトに行ってもだいたいA5M2だったかなと思います。

※プロジェクトサイズが超大規模になると、テーブル管理がエクセルになったり諸々あり。今思うとこの時点でA5M2が浸透していたのは偉大な先人の知恵であり、余計な手間からメンバを守ってくれていたのだなとしみじみ思います。

2年前にWindows→Macに乗り換え

2~3年前くらいのタイミングで会社標準PCとしてMacが選択可能になったこともあり、メインマシンをMacに交換しました。

開発含む普段の操作は圧倒的にMacの方が軽快でしたが、お察しの通りA5M2が使えなくなりました。

私と同じ理由でMacに交換するメンバーも多く、なんとかMacでDBモデリングをするツールを探そうとし始めます。

ツールに迷走する

都合の良い代替製品は見つかりませんでしが、当時PostgreSQLを使用していたこともあり、pgModelerを使用し始めました。

Mac版もWindows版もあり、かつ自前でビルドしてあげれば無料で使用でき、ぱっと見困りごとはなさそうでしたが↓のような問題が発生します。

  • リレーションを貼るとFK制約が勝手に作成され、かつ削除できない
    細かいですが、こういうちょっとした仕様で余計なコストをくらい続けます。
    DBのお作法的には全く正しいのですが、既に稼働しているシステムの定義には合わせざるを得ないので、DDLにしてから手動で削除するなど対応が必要になります。
    DB純正のツールはこういった事情が多いイメージです。
  • git上で差分がわからない
    ファイル拡張子は.dbmですが、実体はzip形式のバイナリファイルです。
    git pushしたところで差分がわからず、いちいちローカルに持ってきて確認するコストが発生します。
  • 根本的に他DBに対応できない
    個人的にはこれが一番モチベーション的に辛かった記憶があります。
    なんとかツール仕様に対応したところで、たとえばMySQLを使用する場合はMySQL Workbenchに乗り換えが必要だったり。
    使用するDBが変わってもツールは統一したくなります。

上記のような問題を解決するため、プロジェクトが変わるたびに頭を悩ませて新ツールに挑戦するのですがなかなか満足のいくツールはありませんでした。

有料版にまで手を出し、迷走と言って全く過言ではない状態だったのを覚えています。

※↓pgModeler操作画面。posgreSQL本家が出しているだけあり、UIはとてもおしゃれ。
pgModeler操作画面

ER図作成ツールに求められる要件

さて、前置きが長くなりましたが、本題です。
前述のような状態からA5M2に転生するのですが、その時考えた内容をまとめておきます。

想定する環境

まず前提として、想定される環境です。
FutureのDXチームだと↓のような状況が多く、対応できるツールを模索していました。

  • Windonws/Mac混在
    • MacOSはCatalina
  • 中規模以上開発
    • 設計/開発者10人以上
    • エンティティ数50以上
  • DBはプロジェクトごとに異なる
    • PostgreSQL/MySQL/SQL Server/(最近あまりないけど)Oracle
    • RedShift/BigQuery etc…

求められる要件

議論の余地はあると思いますが、求められるであろう要件一覧です。

MUST/WANTは現場によって変わるので、都度フィッティングする必要はあると思います。ほぼ全てMUSTになっていますが、あくまで主観です。

機能(仕様) MUST/WANT 説明
GUI作図機能 MUST 当然ですがER図をGUIで作図する機能です。
世の中にはCUIベースでしか作図できないツールもあるので、求められる機能にカウントしておきます。
DBオブジェクト管理 MUST 最低限のDBオブジェクトの管理機能です。(スキーマ/テーブル/インデックス/シーケンス/ビュー)
テーブル項目だけで、シーケンスやインデックスを管理できないと実運用上は立ちいきません。
型桁管理 MUST これも当然ですが、カラムの型桁設定機能です。
使用するDBに依存するのではなく、自由記述ができるものが望ましいです。
必須/PK/FK/その他制約設定もここに含みます。
論理名/物理名管理(日本語対応含む) MUST 日本語表示を含めた論理名/物理名の管理機能です。
海外製だと日本語表示ができないことがあるので、必要機能としてカウントしておきます。
ER図自体の表示を論理名/物理名で切り替えられるとなお良しです。
DBドメイン管理 MUST この辺りから当たり前機能ではなくなってくる印象がありますが、DBドメインの管理機能です。
カラムの型桁を論理的に意味のある形式に定義します。
ex)
型桁: varchar(255) ドメイン: メールアドレス
型桁: int ドメイン: 会員ID

プロジェクトサイズが大きくなるとドメイン管理がデータモデルの足腰になるので、個人的には外せない機能です。
DDL生成機能 MUST テーブル定義からDDLを生成する機能です。
作図だけでDDL生成はできない物も存在するので、忘れずに要件カウントします。
対応OS MUST 前項で述べましたが超重要要素、windows/mac両対応か否かです。(通常業務用途なので、Linux系は考えません。)
設計/開発マシンをどちらかに限定する発想もあるかとは思いますが、 windows onlyだった時代からのエンジニア的な良い流れを止めたくないのでMUST要件として考えます。
静的解析/加工可否 MUST ER図ファイルを解析/加工できるか・しやすいか否かです。(≒テキストファイルか否か)
同じく個人的に超重要要素で、例えば↓のような対応が可能になります。
 ・エディタでER図ファイルを開いて一括置換 
 ・CIで禁止文言ないかなどチェックをかける
 ・同じくCIで他設計書と整合性が取れているかチェックをかける
 ・自動で論物変換をかける
ER図設計作業は細かな設定作業も多く、人力チェックだけではミスも発生してしまいます。
プロダクト品質を決める重要要素なのでMUST要件としています。
標準SQL対応 MUST 生成されるDML/DDLが特定のDBに依存した記述になっていないかどうかです。
SQLには標準仕様が存在するので、その仕様に則ることでDBが変わってもツールを変更することなく設計が可能になります。
標準SQLに則っていなくとも、生成されるSQLそのものをカスタマイズできれば要件的にはOKです。
共同編集可否 WANT スプレッドシートのようにweb上で共同編集できる機能です。 設計立ち上げ期でこういったことができると迅速に立ち上げが可能になります。 個人的には必須ではないと考えますが、昨今のツールはこの手のものも多いので検討要素にはあげておきます。
価格 WANT 最後が価格です。
当然ですが安ければ安いほど良く、無料が望ましい。
ただし、ITプロジェクト全体からすると微々たる費用なので、必要であれば購入しても良いと思います。

ツールごとの比較

要件をもとにしたツールごとの比較です。

要件 MUST/WANT pgModeler MySQL Workbench Draw.io LucidChart DBDiagram.io A5M2
GUI作図機能 MUST ×
DBオブジェクト管理 MUST ×
型桁管理 MUST ×
論理名/物理名管理(日本語対応含む) MUST ×
DBドメイン管理 MUST × × ×
DDL生成機能 MUST ×
対応OS MUST ×
静的解析/加工可否 MUST × × ×
標準SQL対応 MUST × × ×
共同編集可否 WANT × × ×
価格 WANT

総評

それぞれ以下の評価です。
満点のツールは存在しないので、短所を何かしらで埋めてあげる対応が必要があります。

  • pgModeler
    https://pgmodeler.io/
    冒頭で記載したPostgreSQLネイティブツールです。
    DB依存なのと、ファイル形式がバイナリな点が無視できないマイナス要素。
    自力でzip解凍すればxmlが現れるので、頑張れば解析できなくもありませんが、書き換えは厳しそう。
  • MySQL Workbench
    https://www.mysql.com/jp/products/workbench/
    MySQLのネイティブツールです。
    評価はpgModelerと同様。
  • LucidChart
    https://www.lucidchart.com/pages/ja
    クラウドベースのER図作成ツールで、メインどころのDBには対応しています。(MySQL、PostgreSQL、SQL Server や Oracle)
    DB管理としては若干機能不足&静的解析は無理そうなので、シビアな現場にはfitしにくそうです。
    速度優先でガンガン変更を本番に反映していくサービスであれば採用の可能性はあるかと思いますが、
    どこかのタイミングでしっかりしたツールに乗り換える必要がある印象です。
    フリー版もありますが、縛りがきびしいので最低でも月額800円程度支払う必要があります。
  • DBDiagram.io
    コードベースでER図を記載できるwebベースツールです。
    個人で使う分にはありなのですが、GUIでの定義ができない点がチーム展開には厳しいと感じました。
    また、定義中に日本語を使用することができなく、コメントで対応する必要がありました。
    無料でも使えますが、バージョン管理など積むと月額9ドル必要です。
  • A5M2
    https://a5m2.mmatsubara.com/
    件のwindows向けER図作成ツールです。
    Macで使えないのと、共同編集不可な点以外は全て要件を満たしています。

MacでA5M2を使う

wineで解決

A5M2の問題はMac版がリリースされていないことですが、wine(Macでexeを使用できるようにするツール)を使用することで解決しました。
https://bottoms-programming.com/archives/a5sql-mk-2-after-mac-catalina.html

日本語が文字化けする問題や、そもそも操作感大丈夫なのか?という疑念がMAXで実験的に使ってみたんですが悪くない触り心地でした。

普通のMacアプリだと保存キーが⌘-Sのところ、Ctrl-Sになっているなど、WindowsとMacのキーバインド問題はありますが、自前の設定でなんとかなる範疇です。(Ctrlに置き換える程度で解決)

(2022.02.26追記) A5:SQL Mk-2開発者の松原さんからコメントいただきました。

Arm Mac (M1 Mac) 上で Wine を使ってA5:SQL Mk-2を動作させる方法 というエントリーもぜひ確認ください。

なお、この記事が出るより前にwine上で動かすことにトライしたため、コメントを貰うまで記事の存在に気が付きませんでした。すれ違い..。

A5M2戻ってみて

以下、いざA5M2に戻ってみてざっと感じたことです。

  • リレーション/ドメイン管理の自由度が高い
    良いのか悪いのかは微妙ですが、変な制約なしに思った通りにリレーションやドメイン管理が可能です。
    プロダクトのディープな事情についていける点がとても嬉しい。
  • ファイル直接操作可能
    なんと言ってもこの恩恵が大きいです。
    エディタでgrep置換、スクリプトで論物変換、名称揺れチェック、解析してソースコード生成etc…
    体感、一回りプロダクトの品質が向上したことを感じます。
  • Macで目立ったトラブルもない
    複数プロジェクトで1年程度wine運用していますが、特段のトラブルもなくER図管理ができています。
    環境構築も面倒とまではいかないので、プロジェクトメンバへの導入で躓くということもありませんでした。

最後に

ER図作成ツールの比較した結果全てを満たすツールが見当たらなかったのでMac+wineでA5M2を使用することにしましたが、そもそもMac対応版がリリースされればもっと幸せだったり、webベースツールでもっと良いものが出ればそちらを使用する選択肢が出てくると思います。

あまり脚光を浴びない割に日進月歩で進化しているので、定期的にウォッチして良いものがあれば別記事を書こうかなと思います。