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

DBのメタデータを管理する文化を作る

 DBのメタデータを管理する文化を作る

第31回中国地方DB勉強会の発表資料です。
情報格差を減らす取り組みとして、テーブル・カラムにコメントを追加していきました。それまでの経緯と、実際にコメントを追加するときに使った手法、その効果などを発表します。
スライドの最後に、具体的にどうやったかを書いたブログへのリンクや、途中で紹介したオープンセミナー岡山2020のページへのリンクを載せています。
ご興味のある方は是非ご覧ください。

patorash

April 02, 2021
Tweet

More Decks by patorash

Other Decks in Programming

Transcript

  1. 目次 • 自己紹介 • 会社紹介 • 担当製品紹介 • 元々あった課題について •

    新たな課題について • 情報格差を解消するためにやっていること • なぜカラムにコメントをつけるのか? • データベースのカラムにコメントを付けるためにやったこと • まとめ
  2. 自己紹介 名前:尾古 豊明(おこ とよあき) twitter: @patorash 所属:株式会社リゾーム システム企画・開発部 役職:専門職 仕事内容:

    ショッピングセンターに関連するサービス開発 Ruby on Railsで自社サービスの開発・運用(8年目) 近況:歯の親知らずを抜いたが痛みが思ったより長く続いて苦しんでいる。 20代のうちに抜いとくほうが治りも早くて良いらしい。 ちなみに今月もう一本抜くので怖い。
  3. 情報格差を解消するために取り組んでいること • 朝会・夕会をする • バックログから作業チケットを作る際に私が作成しておく • ハマったらすぐテレビ会議してもOKとする • 場合によってはVSCode LiveShareでペアプロする

    • リファクタリングデーを設ける • ライブラリを管理するファイルにコメントを付ける • データベースのテーブル・カラムにコメントを付ける
  4. モチベーションを高めたい • Mackerelでコメントの入っているカラム数を計測する仕組みを作る。 ◦ テーブル+ビュー数 ◦ カラム数 ◦ コメント数 •

    実装については、ブログを読んでください。 (最後のスライドに載せています) • 計測した結果…
  5. 流石に楽をしたい… • メタプログラミングで国際化(I18n)のデータがある場合はそれをコメントとして入れ るようにして、約70%のコメントを埋めることができた # == Schema Information # #

    Table name: prefs # # id(都道府県ID) :integer not null, primary key # region_id(地方ID) :integer not null # name(都道府県名) :string(255) not null # # Indexes # # index_prefs_on_name_and_region_id (name,region_id) UNIQUE # class Pref < ApplicationRecord
  6. 残り30%を埋めたい • どのテーブルのどのカラムにコメントがないのか?プログラムで調べる。 • プログラムでコメント追加用のコードを生成させた。 • あとは無心にtoのところにコメントを書いていくのみ。 # table_with_columnsは、テーブル名をキーとする Hashオブジェクト

    table_with_columns.each do |table, columns| columns.each do |column| puts "change_column_comment(:#{table}, :#{column.name}, from: nil, to: '')" end end # => 出力は以下のように …。これをマイグレーションファイルにコピー &ペーストする change_column_comment(:posts, :id, from: nil, to: '') change_column_comment(:posts, :title, from: nil, to: '') change_column_comment(:posts, :content, from: nil, to: '') change_column_comment(:tags, :id, from: nil, to: '') change_column_comment(:tags, :name, from: nil, to: '')
  7. リンク • DBのテーブル数、カラム数、コメント数をMackerelに登録するrake task作った - patorashのブログ • I18nのデータを基にDBのカラムにコメントを追加する - patorashのブログ

    • メタプログラミングでActiveRecord::Enumの値についてカラムにコメントする - patorashのブログ • コメントのないカラムを抽出してマイグレーション処理を生成する - patorashのブロ グ • カラムだけでなく、テーブルにもコメントを追加する - patorashのブログ • オープンセミナー2020@岡山 - connpass