狠狠撸

狠狠撸Share a Scribd company logo
データベース定義書の更新っ
て再考の仕事ですよね!
やすだあつし
この発表は、rails アプリ
を作っているとある開発者
に起きたフィクションです
「データベース定義書」
とは?
こういうの
俺たちの贰虫肠别濒
作らなくてよくね?
DHH「ドキュメント?書かな
いよ?そんなん頑張るなら、もっ
といいコード書けば?」(意訳)
せやな
データベース定义书の更新は再考の仕事
100+ tables
(仮)
?同人誌のネット印刷サービスで、ページ
ごとに用紙とカラー?白黒を変えられる。
?で、その印刷申し込み時に記録された発
注書のページごとの用紙?カラー記録テー
ブル
print_order_sheet_pap
er_items
データベース定义书の更新は再考の仕事
日本語、便利だね。


((ただし日本人に限る))
migration_comments
annotate_models
データベース定义书の更新は再考の仕事
RDoc ならこんな感じ
YARD ならこんな感じ
rails-erd
データベース定义书の更新は再考の仕事
これで见やすいかな?
※「これじゃ開発者しか見な
いよね?」
※「エクセルでください」
仕方がないので
rake task を書く。
(Gem にしたかったけど時間が足りな
くてできなかったとか言えない)
https://gist.github.com/ayasuda/
d5c03783e29f3ddb21b9
klasses	
 ?=	
 ?	
 ?
Dir[“app/models/**/*.rb”].	
 ?
reject{|f|	
 ?f[‘concens/‘]}.	
 ?
map{|f|	
 ?f.gsub(/^/app/models/(.+?).rb$/,	
 ?‘1’).	
 ?
map{|m|	
 ?ActiveSupport::Inflector.camelize(m)}.	
 ?
map{|k|	
 ?ActiveSupport::Inflector.constantize(k)}
こんな感じのコードで
ActiveRecord なクラスは取
れるので???
if	
 ?klass	
 ?<	
 ?ActiveRecord::Base	
 ?&&	
 ?
	
 ?	
 ?!klass.abstract_class?	
 ?&&	
 ?
	
 ?	
 ?klass.table_exists?
klass.columns.first.name	
 ?
table_comment	
 ?=	
 ?
klass.connection.retrive_table_comment(klass.table
_name)	
 ?
column_comments	
 ?=	
 ?
klass.connection.retrive_column_comments(klass.tab
le_name)
あとはklass.columns とかからいろい
ろ取得すればOK.
MigrationColumns 入れてれば、コメ
ントもこれで取れます。
あとは、
rubyXLで、テンプレー
トにあたい埋め込み
or axlsx で定義書作成
$rake dbdoc
データベース定义书の更新は再考の仕事
こんな感じ?(できる
かな)
まとめ
? エクセルなんてなくなればいいのに
? はやくマイクロサービス化して、1アプリあたり20
テーブル程度にしようぜ。そうすればこんな面倒なこ
とにならなかったと思うんだよね。やっぱり、文書
化ってなんかSEくさくて良くないとおもうんだ。
? サンプルコードは willnet/awesome_events を使わ
せていただきました。本当に有難うございました!
Ad

Recommended

cocos2d ? OpenOffice
cocos2d ? OpenOffice
Kazunori Nanji
?
厂蚕尝ドリルの话(仮)
厂蚕尝ドリルの话(仮)
Yuuki Tan-nai
?
骋笔鲍と戯れる
骋笔鲍と戯れる
Serverworks Co.,Ltd.
?
ここが変だよ顿补濒惫颈办仮想マシン
ここが変だよ顿补濒惫颈办仮想マシン
Takuya Matsunaga
?
颁辞肠辞补勉强会201302
颁辞肠辞补勉强会201302
Satoshi Oomori
?
顿蝉濒からのコート?シ?ェネレーションて?楽々辫濒补测开発
顿蝉濒からのコート?シ?ェネレーションて?楽々辫濒补测开発
Yoshiteru Takeshita
?
なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景
Tatsuo Kudo
?
ID連携概要 - OpenID TechNight vol.13
ID連携概要 - OpenID TechNight vol.13
Nov Matake
?
Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
?
DevOps with Database on AWS
DevOps with Database on AWS
Amazon Web Services Japan
?
モバイルゲームの「大规模な开発」かつ「高频度の更新」を実现するための开発环境整备の取り组み
モバイルゲームの「大规模な开発」かつ「高频度の更新」を実现するための开発环境整备の取り组み
MorioImai
?
顿叠スキーマもバージョン管理したい!
顿叠スキーマもバージョン管理したい!
kwatch
?
12 13-lecture
12 13-lecture
Rindou Katsura
?
Introduction to cocoa sql mapper
Introduction to cocoa sql mapper
mavelph
?
A HUGE CHANGE RAILS 5 IS APPROACHING FAST
A HUGE CHANGE RAILS 5 IS APPROACHING FAST
Kenichi Tachibana
?
社会ネットワーク分析第7回
社会ネットワーク分析第7回
Satoru Mikami
?
Heroku Postgres
Heroku Postgres
Salesforce Developers Japan
?
名前重要 超重要
名前重要 超重要
baban ba-n
?
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨
?
低レイヤから见た谤耻产测フ?ロク?ラミンク?
低レイヤから见た谤耻产测フ?ロク?ラミンク?
よしだ あつし
?
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
mametter
?
Integral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common Lisp
fukamachi
?
Rails基礎講座 part.2
Rails基礎講座 part.2
Jun Yokoyama
?
骋辞言语ってどんな言语? 导入実绩や気になるトレンド
骋辞言语ってどんな言语? 导入実绩や気になるトレンド
Atsushi Yasuda
?
负债返済の下準备「コメント付与まつり?準备编」
负债返済の下準备「コメント付与まつり?準备编」
Atsushi Yasuda
?
モテ?ル设计を适当にやるとと?うなるのか
モテ?ル设计を适当にやるとと?うなるのか
Atsushi Yasuda
?
コート?を削除し続けるという习惯
コート?を削除し続けるという习惯
Atsushi Yasuda
?
苦いお酒が好きな人のためのコードの苦味の味わい方
苦いお酒が好きな人のためのコードの苦味の味わい方
Atsushi Yasuda
?

More Related Content

Similar to データベース定义书の更新は再考の仕事 (17)

Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
?
DevOps with Database on AWS
DevOps with Database on AWS
Amazon Web Services Japan
?
モバイルゲームの「大规模な开発」かつ「高频度の更新」を実现するための开発环境整备の取り组み
モバイルゲームの「大规模な开発」かつ「高频度の更新」を実现するための开発环境整备の取り组み
MorioImai
?
顿叠スキーマもバージョン管理したい!
顿叠スキーマもバージョン管理したい!
kwatch
?
12 13-lecture
12 13-lecture
Rindou Katsura
?
Introduction to cocoa sql mapper
Introduction to cocoa sql mapper
mavelph
?
A HUGE CHANGE RAILS 5 IS APPROACHING FAST
A HUGE CHANGE RAILS 5 IS APPROACHING FAST
Kenichi Tachibana
?
社会ネットワーク分析第7回
社会ネットワーク分析第7回
Satoru Mikami
?
Heroku Postgres
Heroku Postgres
Salesforce Developers Japan
?
名前重要 超重要
名前重要 超重要
baban ba-n
?
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨
?
低レイヤから见た谤耻产测フ?ロク?ラミンク?
低レイヤから见た谤耻产测フ?ロク?ラミンク?
よしだ あつし
?
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
mametter
?
Integral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common Lisp
fukamachi
?
Rails基礎講座 part.2
Rails基礎講座 part.2
Jun Yokoyama
?
Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
?
モバイルゲームの「大规模な开発」かつ「高频度の更新」を実现するための开発环境整备の取り组み
モバイルゲームの「大规模な开発」かつ「高频度の更新」を実现するための开発环境整备の取り组み
MorioImai
?
顿叠スキーマもバージョン管理したい!
顿叠スキーマもバージョン管理したい!
kwatch
?
Introduction to cocoa sql mapper
Introduction to cocoa sql mapper
mavelph
?
A HUGE CHANGE RAILS 5 IS APPROACHING FAST
A HUGE CHANGE RAILS 5 IS APPROACHING FAST
Kenichi Tachibana
?
社会ネットワーク分析第7回
社会ネットワーク分析第7回
Satoru Mikami
?
名前重要 超重要
名前重要 超重要
baban ba-n
?
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨
?
低レイヤから见た谤耻产测フ?ロク?ラミンク?
低レイヤから见た谤耻产测フ?ロク?ラミンク?
よしだ あつし
?
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
mametter
?
Integral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common Lisp
fukamachi
?
Rails基礎講座 part.2
Rails基礎講座 part.2
Jun Yokoyama
?

More from Atsushi Yasuda (9)

骋辞言语ってどんな言语? 导入実绩や気になるトレンド
骋辞言语ってどんな言语? 导入実绩や気になるトレンド
Atsushi Yasuda
?
负债返済の下準备「コメント付与まつり?準备编」
负债返済の下準备「コメント付与まつり?準备编」
Atsushi Yasuda
?
モテ?ル设计を适当にやるとと?うなるのか
モテ?ル设计を适当にやるとと?うなるのか
Atsushi Yasuda
?
コート?を削除し続けるという习惯
コート?を削除し続けるという习惯
Atsushi Yasuda
?
苦いお酒が好きな人のためのコードの苦味の味わい方
苦いお酒が好きな人のためのコードの苦味の味わい方
Atsushi Yasuda
?
寿司x職人 10年働いて思いを馳せるすし職人とエンジニアの共通項
寿司x職人 10年働いて思いを馳せるすし職人とエンジニアの共通項
Atsushi Yasuda
?
たまにはこんな厂耻蝉丑颈も如何て?しょう?
たまにはこんな厂耻蝉丑颈も如何て?しょう?
Atsushi Yasuda
?
I love bug
I love bug
Atsushi Yasuda
?
click するとどうなるのか
click するとどうなるのか
Atsushi Yasuda
?
骋辞言语ってどんな言语? 导入実绩や気になるトレンド
骋辞言语ってどんな言语? 导入実绩や気になるトレンド
Atsushi Yasuda
?
负债返済の下準备「コメント付与まつり?準备编」
负债返済の下準备「コメント付与まつり?準备编」
Atsushi Yasuda
?
モテ?ル设计を适当にやるとと?うなるのか
モテ?ル设计を适当にやるとと?うなるのか
Atsushi Yasuda
?
コート?を削除し続けるという习惯
コート?を削除し続けるという习惯
Atsushi Yasuda
?
苦いお酒が好きな人のためのコードの苦味の味わい方
苦いお酒が好きな人のためのコードの苦味の味わい方
Atsushi Yasuda
?
寿司x職人 10年働いて思いを馳せるすし職人とエンジニアの共通項
寿司x職人 10年働いて思いを馳せるすし職人とエンジニアの共通項
Atsushi Yasuda
?
たまにはこんな厂耻蝉丑颈も如何て?しょう?
たまにはこんな厂耻蝉丑颈も如何て?しょう?
Atsushi Yasuda
?
click するとどうなるのか
click するとどうなるのか
Atsushi Yasuda
?
Ad

データベース定义书の更新は再考の仕事