Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
tblsはいいぞ(第44回 PostgreSQLアンカンファレンス@オンライン)
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
majimaccho
December 19, 2023
410
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
tblsはいいぞ(第44回 PostgreSQLアンカンファレンス@オンライン)
majimaccho
December 19, 2023
More Decks by majimaccho
See All by majimaccho
TypeScript サーバーサイドエンジニアが関数型から学 ぶべき 3 つのアイディア
majimaccho
4
770
Result 型、自前で書くか、ライブラリ使うか
majimaccho
5
1.1k
graphql-rdb-mismatch
majimaccho
0
74
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
6.3k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
770
Ethics towards AI in product and experience design
skipperchong
2
410
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
700
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
340
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
860
Marketing to machines
jonoalderson
1
5.9k
Raft: Consensus for Rubyists
vanstee
142
7.7k
Six Lessons from altMBA
skipperchong
29
4.5k
Code Review Best Practice
trishagee
74
20k
Become a Pro
speakerdeck
PRO
31
6.3k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
420
Transcript
tblsはいいぞ 第44回 PostgreSQLアンカンファレンス @オンライン
この間のPostgreSQLConference Japan 2023が 初参加でとても楽しかったので勢いで LTさせていただいています 社外のLTは初めてなので暖かい目で見ていただけると幸いです お名前:まじまっちょ X(旧Twitter):@majimaccho_ お仕事:医療系未上場企業のアプリケーションエンジニア 好きなもの:美味しいお酒とお肉
自己紹介
tblsはいいぞ🦍
tblsとは • 既存のDBスキーマ、テーブルコメント、カラムコメントからDBのドキュメントを生成 • Markdown形式なのでGitHubから参照でき、ホスティングが不要 • カラムコメント、テーブルコメントの有無などを検証 • CIへの組み込みが容易 https://speakerdeck.com/k1low/phpconfuk-2023?slide=7
プチアピール ちょっとだけ私もコントリビュートしてます
なんのためにDBのドキュメンテーションを行うか • 再来月の全て忘れた自分が思い出すため • 開発チームに新規参加したメンバーがキャッチアップするため • 運用チームがSQLでDBにアクセスしてトラブルシュートするため • 解析チーム、データ基盤チームが既存のDBの内容を理解するため 釈迦に説法すぎてすいません…
よくあるDBドキュメンテーションの課題 • メンテナンスされない • 存在が知られていない • ER図が大きすぎて読めない • そもそも存在しない
tblsによって生成されるドキュメント
tblsによって生成されるドキュメント • トップのドキュメント(全体像) ◦ Viewpoints(後述) ◦ テーブル一覧(テーブルコメント) ◦ ER図 •
テーブル詳細 ◦ 概要(テーブルコメント) ◦ カラム一覧(カラムコメント) ◦ Viewpoints(後述) ◦ 制約一覧 ◦ インデックス一覧 ◦ ER図 • Viewpoint詳細(後述) ◦ 概要 ◦ 内包するテーブルの一覧 ◦ 内包するテーブルのER図
Viewpointはいいぞ🦍
Viewpoint(s)とは • tbls独自の概念 • DBのスキーマを任意のまとまりに分割 • DDLでの設定ではなく、tblsの設定ファイルのYAMLに記述 https://speakerdeck.com/k1low/phpconfuk-2023?slide=34
Viewpointがあると - トップのドキュメント • 全体像を表すトップのドキュメント にViewpointの一覧がくる • ここでデータの種類・利用のされ方 の概要が掴める •
名前がViewpointのリンクになって いて個別のViewpointの内容に飛 べる
Viewpointがあると - Viewpoint詳細 • データのまとまりごとにテー ブル一覧が見られる • 意味的なまとまりの範囲を 伝えられる •
ER図がViewpointの単位に できて見やすい
• 個別のテーブルがどの Viewpointから参照されている のかわかる • Viewpoint⇔個別のテーブルを 行来するとDB設計の理解が進 む Viewpointがあると -
テーブル詳細
Viewpointの設定の仕方 キー 説明 name Viewpointの名前 desc Viewpointの説明 tables Viewpointに含まれるテーブ ルの一覧
• requireColumnComment(カラムコメントの必須化) ◦ カラムコメントが設定されていないカラムがあるとリントエラーになります。 ◦ どのカラムに設定されていないかを出力してくれます。 ◦ オプションでid, created_atなど任意の名前のカラムを対象外にできます。 •
requireTableComment (テーブルコメント必須化) ◦ requireColumnCommentのテーブルコメント版です。 ◦ テーブルコメントが設定されていないテーブルがあるとリントエラーになります。 • requireViewpoints (Viewpoints必須化) ◦ 一つもViewpointに属していないテーブルがあるとリントエラーになります。 tblsのリント機能
PostgreSQLならViewもマテビューも見やすく! Viewもマテビューも テーブルとして扱われ るが、タイプから見分 けられる Viewpointに含めて関 連するデータと一緒に ドキュメンテーションで きる
PostgreSQLならViewもマテビューも見やすく! 詳細からはViewとマテビューは作成時の SQLが参照できる! 参照しているテーブルも一覧が出る! すいません…勢い駆動LTにつき、ポスグレ関係で 何かないかと思って無理やりここを足しました。 🐘
おまけ
実際に見てみよう https://github.com/majimaccho/prisma-tbls
今日の内容をもう少し詳しく書いたのでよろしければ見てやってください DBスキーマはtblsのViewpointsで整理しよう