91580
# 経緯

今までテーブル定義書を作成するときは、データベースに対してテーブルの修正・追加・削除を実行した後でWindowsでA5SQLの機能(↓)を使用して自動生成を行っていた

[DBクライアント：A5SQLのテーブル定義書自動生成機能](https://a5m2.mmatsubara.com/help/TableEditor/tableDefine.html)

※ 本質問内でテーブル定義書と呼んでいるのは、上記リンク先で表示されているようなドキュメントとご認識ください

# 知りたいこと

職場の都合により、開発環境がWindowsからMacに統一されることとなり、Windowsでしか利用できないA5SQL以外にテーブル定義書を出力する手段が必要となっている。  
今までずっと自動生成で行ってきたのを、今更手動でテーブル書を書く運用に戻ることで作業コストが上がってしまうのは避けたいが、Macで利用可能な良い手段が見つからず困っております。もし適切な手順をご存知のかたおられましたらご教示お願いします。  
管理対象のDBMSはpostgreSQLおよびMySQLです。

# 自分で調べたこと

## DBeaver

MacでA5SQLと同じような事をするツールとして、大体の機能は揃えているが、テーブル定義書を出力する機能は存在していない模様

## pgadmin

[pgAdminでPostgreSQLのテーブル定義書を出力する](https://blog.jhashimoto.net/entry/20110719/1311053856)
という記事を見ると「レポート作成」の機能によって実現できそうなのだが、最新版であるpgadminのバージョン4で試したところ、こちらの記事の手順に従って操作してもレポート出力のメニューが出てこない。この記事が10年前で比較的古い情報なため、最新のpgadminではできないのかもしれない？

## psql

psql のコマンド(\d)を利用してテーブル定義を出力するという手段も考えましたが、英語で`FOREGN KEY (hoge_id)
REFERENCES...`のように設計が表示されるのは、開発者である我々にとっては読みやすくても、上流をやっているマネージャークラスからすると読んで理解するのが厳しい…ということでこれも諦めました
CC BY-SA 4.0
2022-10-10T12:04:25.937
91530
2022-10-13T13:59:21.983
2022-10-11T02:44:22.540
3060
54781
question
macos データベース設計
テーブル定義書の自動生成をmacで行う方法はありませんか？
記事を書いた者です。

レポート出力はpgAdmin3でできることを確認しています。[PostgreSQL: Up and
Running](https://www.amazon.co.jp/PostgreSQL-Running-Practical-Advanced-
Database-
ebook/dp/B076C4WLBP)には「pgAdmin4はpgAdmin3を完全に書き直したもので、いくつかの機能はpgAdmin4には移植されていない」と記述があり、レポート出力も移植されていないのかもしれません。

代替案ですが、SQLでテーブルのメタデータを出力する方法があります。

[テーブル定義取得クエリ - Architect's
Log](https://blog.jhashimoto.net/entry/20101110/1289374163)

弊記事はSQL Serverをターゲットにしていますが、PostgreSQLやMySQLでも似たことはできると思われます。

また、Macをサポートしているかは確認してませんが、有償でよければテーブル定義を出力するツールがあるようです。

[5 Different Types of Tools You Can Use to Create a Data Dictionary - Dataedo
Blog](https://dataedo.com/blog/different-types-of-tools-you-can-use-to-create-
data-dictionary)

# 追記 (2022-10-11 06:00)

回答した後で思いついたのですが、開発環境と別にテーブル定義出力用のWindowsサーバーを立てるのはどうでしょうか。

尚、クラウドサービスの仮想サーバーなら、利用しないときは停止することで利用料を抑えられます。
CC BY-SA 4.0
2022-10-10T20:53:07.413
91535
2022-10-11T06:17:28.897
2022-10-11T06:17:28.897
4982
4982
91530
answer
[tblsというOSS](https://github.com/k1LoW/tbls)で自分のやりたい目的は果たすことができそうだとわかりました。Goで動作し、Mac,WindowsなどOSを問わず利用することができますし、出力されるテーブル定義書の表示の日本語化（というか表示を好きな言語に翻訳することができる）にも対応しているので、これで問題解決できそうです。

[日本語解説記事はこちら](https://qiita.com/k1LoW/items/2010413a8547b1e6645e)

すみません、自己解決してしまったのでこの質問はクローズさせていただこうと思います。ご回答頂いた方、ありがとうございました
CC BY-SA 4.0
2022-10-13T13:55:16.253
91580
2022-10-13T13:59:21.983
2022-10-13T13:59:21.983
3060
54781
91530
answer