データベース仕様書作成アプリケーション royle
Digeonで使っているデータベースの仕様書を自動で作成するアプリケーションを紹介します。

山﨑 祐太
CEO
2024-12-12
2024-12-12
山﨑 祐太
データベース仕様書作成アプリケーション royle
#mysql
#document
royleについて
royleは、データベースに接続してデータベース内にあるテーブル情報を取得、整形し、マークダウン形式で出力するコマンドラインアプリケーションです。
royleの使い所
ドキュメントの陳腐化を防ぐ
royleは時間のない開発者の味方です。royleはドキュメント作成を自動化でき、開発者がドキュメントを書く時間を節約できます。これにより、開発者やチームはドキュメントの保守に追われず、開発に時間を割くことができます。さらにCI/CDに組み込むことでドキュメントを最新の状態に保つことができます。
正確性の確保
開発者はmysqlサーバーを立ち上げ、ドキュメントとにらめっこする必要がなくなります。royleはドキュメントを生成するときに、mysqlのテーブル情報を毎回取得し正確な情報を提供します。さらに人の手が介在しないので書き間違いも起こりません。
お客様との情報共有
生成結果はpandocで処理できるため、マークダウン形式だけでなく、PDF形式やdocx形式に変換可能です。社内ドキュメントだけでなく、お客様への提出用のドキュメントの作成にも利用できます。
royleの使い方
royleはmysqlサーバーへの接続情報とデータベース名をコマンドに引数として渡すことで、指定したデータベース名のテーブル情報についてのドキュメントを作ることができます。
$ royle --host mysqlサーバーのホスト名 --port mysqlサーバーのポート番号 --database テーブル情報が欲しいmysqlサーバーのデータベース名 --user mysqlサーバーにログインするユーザー名 --password ユーザーのパスワード > out.md$ cat out.md# MySQL documentation## ordersStores basic information about orders| Name | Type | Nullable | Constraints | Referenced | Default | Extra | Comment || ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- || id | int | NO | PRIMARY KEY | | | auto_increment | || product_name | varchar(255) | NO | | | | | || user_id | int | YES | FOREIGN KEY | [users](#users) | | | || quantity | int | YES | | | 1 | | Quantity of the product being ordered, defaults to 1 |## user_detailsStores basic information about users details| Name | Type | Nullable | Constraints | Referenced | Default | Extra | Comment || ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- || user_detail_id | varchar(30) | NO | PRIMARY KEY | | | | || user_id | int | YES | FOREIGN KEY | [users](#users) | | | || name | varchar(255) | NO | | | | | || created_at | datetime(3) | YES | | | | | || updated_at | datetime(3) | YES | | | | | |## usersStores basic information about users| Name | Type | Nullable | Constraints | Referenced | Default | Extra | Comment || ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- || id | int | NO | PRIMARY KEY | | | auto_increment | || name | varchar(255) | NO | | | | | || email | varchar(255) | NO | UNIQUE | | | | |
内部の技術的な話
アーキテクチャ
このアプリケーションはパイプラインアーキテクチャを採用しています。パイプラインアーキテクチャーを採用した理由は、パイプラインアーキテクチャーを採用しているターミナルが、複数のコマンドをつなぎ合わせることで様々な表現ができるからです。royleもコマンドのように、様々なSQLやデータ成形関数、データ出力フォーマット関数を単一方向に組み合わせたアプリケーションです。将来的にはテーブル情報だけでなく、データベース内の多種多様なデータをドキュメント化できるように拡張しやすくなっています。

さいごに
このアプリケーションはOSSです。githubにソースコードを公開しています。コントリビューションをしてもらえるとうれしいです。
Author

山﨑 祐太
CEO
神⼾⼤学と神⼾⼤学⼤学院にて深層学習に関する研究を⾏い、⼤阪のAI ベンチャーで機械学習エンジニアとして従事。株式会社Digeonを創業。