Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[2024/04/23]tbls活用事例 〜 ビューポイントから データベースを整理してみた話 〜

tosite
April 23, 2024

[2024/04/23]tbls活用事例 〜 ビューポイントから データベースを整理してみた話 〜

Money Forward Tech LT大会 vol.1
https://moneyforward.connpass.com/event/296578/

tosite

April 23, 2024
Tweet

More Decks by tosite

Other Decks in Technology

Transcript

  1. tbls活用事例 〜 ビューポイントからデータベースを整理してみた話 〜 7th長崎QDGでデータベースの 
 ドキュメント化について 
 LTしてきました
 必見!?JaSST'23

    Kyushuの 
 舞台裏全部お見せしちゃいます 
 「ハンドラー」から見る 
 インシデント対応 
 ―起こってしまったその時に― 

  2. Phase 1. ローカルにドキュメント生成環境を準備 
 tbls活用事例 〜 ビューポイントからデータベースを整理してみた話 〜 tblsのインストールと 


    ymlファイルを準備しただけ! 
 
 あとはMakefileに便利コマンドを 
 追加した程度の開発 
 1.ローカルのDBをマイグレーション 
  ファイルから構築
 2.tbls.ymlを作成
 3.コマンドを実行してデータベース 
  ドキュメントを生成 

  3. Phase 2. CIでドキュメントのビハインドを検知する 
 tbls活用事例 〜 ビューポイントからデータベースを整理してみた話 〜 CIで利用されるテーブルは常に 


    最新になることを利用 
 コミットされているドキュメントと 
 最新のドキュメントに差分がある 
 場合はCIを落とすようにした 
 1.CIのDBをマイグレーション 
  ファイルから構築
 2.CIのデータベースドキュメントを生成 
 3.CIとコミットしたデータベース 
  ドキュメントの差分を検知 

  4. tbls活用事例 〜 ビューポイントからデータベースを整理してみた話 〜 # ER図をsvg形式で出力する 
 tbls out -t

    svg -o #{path}.svg --label #{label} -c .tbls.yml # Markdown形式でドキュメントを生成する 
 tbls out -t md -o #{path}.md --label #{label} -c .tbls.yml 幸いにも次のコマンドで
 ラベル単位のドキュメントが生成できたからです

  5.        |
    \  __  /
    _ (m) _ ピコーン
       |ミ|
  

      /  `´  \
      ('A`)    
      ノヽノヽ
       く く
 tbls活用事例 〜 ビューポイントからデータベースを整理してみた話 〜
  6. tbls活用事例 〜 ビューポイントからデータベースを整理してみた話 〜  models = ActiveRecord::Base .descendants.reject(& :abstract_class? )

     models.each do |model| model.reflect_on_all_associations.each do |reflection|   child_table = reflection.active_record&.table_name   parent_table = reflection.klass&.table_name pk = reflection.klass&.primary_key fk = reflection.foreign_key end  end
  7. 利用者からの声
 tbls活用事例 〜 ビューポイントからデータベースを整理してみた話 〜 入社してからプロダクトのキャッチアップを
 する際、また何か調査する際に
 めちゃくちゃお世話になってます!!!
 中でもテーブルやカラムのコメントが
 ありがたく、細かなRailsの実装を


    見なくとも、それらが何をしているのかが
 わかるのは本当にありがたいです🙏
 ER 図をシュッと見ることができて便利だと
 思いました。
 リレーションで困ったらすぐ活用してます。

  8. 入社してからプロダクトのキャッチアップを
 する際、また何か調査する際に
 めちゃくちゃお世話になってます!!!
 中でもテーブルやカラムのコメントが
 ありがたく、細かなRailsの実装を
 見なくとも、それらが何をしているのかが
 わかるのは本当にありがたいです🙏
 ER 図をシュッと見ることができて便利だと
 思いました。


    リレーションで困ったらすぐ活用してます。
 利用者からの声
 tbls活用事例 〜 ビューポイントからデータベースを整理してみた話 〜 複雑なリレーションを持つテーブルが
 視覚的に分かるのがとてもいいですね。
 有志が追加してくれているdescriptionも
 とても重宝しています。
 開発・調査で迷った際に
 参照させていただいています。

  9. 入社してからプロダクトのキャッチアップを
 する際、また何か調査する際に
 めちゃくちゃお世話になってます!!!
 中でもテーブルやカラムのコメントが
 ありがたく、細かなRailsの実装を
 見なくとも、それらが何をしているのかが
 わかるのは本当にありがたいです🙏
 複雑なリレーションを持つテーブルが
 視覚的に分かるのがとてもいいですね。
 有志が追加してくれているdescriptionも


    とても重宝しています。
 開発・調査で迷った際に
 参照させていただいています。
 ER 図をシュッと見ることができて便利だと
 思いました。
 リレーションで困ったらすぐ活用してます。
 利用者からの声
 tbls活用事例 〜 ビューポイントからデータベースを整理してみた話 〜 開発チームの時は、実装する前に
 リレーションがどうなっているか確認できて
 とてもよかったです!
 ガーディアンになってからは主に調査で
 活用させてもらいました!
 シュッと確認できるので、とても
 助かってます!ありがとうございます!

  10. 入社してからプロダクトのキャッチアップを
 する際、また何か調査する際に
 めちゃくちゃお世話になってます!!!
 中でもテーブルやカラムのコメントが
 ありがたく、細かなRailsの実装を
 見なくとも、それらが何をしているのかが
 わかるのは本当にありがたいです🙏
 複雑なリレーションを持つテーブルが
 視覚的に分かるのがとてもいいですね。
 有志が追加してくれているdescriptionも


    とても重宝しています。
 開発・調査で迷った際に
 参照させていただいています。
 ER 図をシュッと見ることができて便利だと
 思いました。
 リレーションで困ったらすぐ活用してます。
 利用者からの声
 tbls活用事例 〜 ビューポイントからデータベースを整理してみた話 〜 開発チームの時は、実装する前に
 リレーションがどうなっているか確認できて
 とてもよかったです!
 ガーディアンになってからは主に調査で
 活用させてもらいました!
 シュッと確認できるので、とても
 助かってます!ありがとうございます!
 ビューの機能がすごくありがたいです!
 膨大なコードベースなので対象の関心ごとを理解するのに
 すごく役立っています!
 また、CIで腐らないER図になっているところも非常に
 ありがたいです!
 既存のER図は手運用だったため網羅されていない点や、
 最新状態でないという点が大きな問題だったかと
 思っていますが、 tblsの導入でこれらの点が払拭
 されたと思っています!(入社のタイミングで欲しかった!)