Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[2023/09/15]ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
Search
tosite
September 21, 2023
Programming
890
0
Share
[2023/09/15]ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
7th長崎QDG
https://nagasaki-it-engineers.connpass.com/event/263690/
tosite
September 21, 2023
More Decks by tosite
See All by tosite
[2026-03-07]あの日諦めたスクラムの答えを僕達はまだ探している。〜守ることと、諦めることと、それでも前に進むチームの話〜
tosite
0
550
[2026-02-26]Road to NEXT CRE 〜SRE活動を通して見つけた、次世代CRE組織の在り方SP〜
tosite
0
180
[2026-12-12]あの日僕が見た胡蝶の夢 〜人の夢は終わらねェ AIによるパフォーマンスチューニングのすゝめ〜
tosite
0
920
[2025-02-07]生成AIで変える問い合わせの未来 〜チームグローバル化の香りを添えて〜
tosite
1
1.3k
[2024/10/25]CREの守護者たち 〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜
tosite
0
1.9k
[2024/07/11]Guardianとして生まれ変わった俺は攻めと守りの運用で無双する 〜守りの天才が考える、攻めの運用術〜
tosite
0
1.4k
[2024/04/23]tbls活用事例 〜 ビューポイントから データベースを整理してみた話 〜
tosite
0
690
[2022/12/07]この素晴らしいアプリケーションにテストコードを
tosite
0
81
[2022/03/25]コミュニティから学ぶエンジニアリング
tosite
0
550
Other Decks in Programming
See All in Programming
forteeの改修から振り返るPHPerKaigi 2026
muno92
PRO
3
270
TiDBのアーキテクチャから学ぶ分散システム入門 〜MySQL互換のNewSQLは何を解決するのか〜 / tidb-architecture-study
dznbk
1
160
Rethinking API Platform Filters
vinceamstoutz
0
11k
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
260
Don't Prompt Harder, Structure Better
kitasuke
0
700
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
930
存在論的プログラミング: 時間と存在を記述する
koriym
5
860
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
240
ファインチューニングせずメインコンペを解く方法
pokutuna
0
300
Coding at the Speed of Thought: The New Era of Symfony Docker
dunglas
0
4.8k
Radical Imagining - LIFT 2025-2027 Policy Agenda
lift1998
0
260
PHP でエミュレータを自作して Ubuntu を動かそう
m3m0r7
PRO
2
180
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
400
Paper Plane (Part 1)
katiecoart
PRO
0
6.6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
330
A Modern Web Designer's Workflow
chriscoyier
698
190k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
880
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
110
Faster Mobile Websites
deanohume
310
31k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
260
Balancing Empowerment & Direction
lara
6
1k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
53k
Transcript
ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜 株式会社マネーフォワード クラウド経費本部 プロダクト開発部 手島 尚人 /
tosite 2023-09-15 7th長崎QDG DEJIMAメッセ長崎
初めまして ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
None
株式会社マネーフォワード クラウド経費本部 プロダクト開発部 バックエンドエンジニア 手島 尚人 / tosite
趣味: キャンプ・登山・料理・ドライブ・温泉 三線 ← New!
福岡から来ました! 前々職の関係で5年ほど長崎に住んでいました ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
JaSST'23 Kyushu の実行委員長やってます! https://www.jasst.jp/symposium/jasst23kyushu.html
2023-11-02に 福岡で開催 予定なので興味ある方はぜひ! https://www.jasst.jp/symposium/jasst23kyushu.html
本題: 起 ここまで0:45
今年の8月 からマネーフォワードでの キャリアをスタートしました ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
皆さんは入社して まず何をしますか? ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
times芸人業ですね ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜 チームリーダーからの評価
…ですが 今日話したいのはその話ではなく… ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
まずやることは ドメイン知識を身につける ところからだと思います ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
では皆さんはどうやって ドメインを理解しますか? ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
仕様書やドキュメントを読む!
ドキュメントが充実している プロダクトならいざしらず、必要十分な ドキュメントがない場合もあります 理想と現実 ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
コードから全てを理解する
配属当初から全てのコードを網羅的に 読み込むのはなかなかに厳しいと思います 木は見えるけど森は見えない ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
じゃあどうするの?
データベースから 仕様を理解する ことが早いと思っています 私の経験に基づいた一例ですが… ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
そんな私がマネーフォワードに入社して1ヶ月 どのような取り組みをしてきたかを お話ししようと思います ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
本題: 承 ここまで2:00
データベースの仕様書と言えば 真っ先に思い浮かぶものがありますね ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
そう、ER図ですね ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
でも作るの大変だし 何よりメンテが大変… 大変じゃない? https://github.com/k1LoW/tbls
私は tblsというOSS をこの上なく愛しています https://github.com/k1LoW/tbls
端的に言えば データベースドキュメント 自動生成ツール 開発者の方は「Document as Code」というキーワードを使われています https://speakerdeck.com/k1low/phpconfuk-2023
https://github.com/k1LoW/tbls 参考: 出力イメージ
仕様理解・開発スピードの向上 を目的としてこのツールの導入を進めました ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
実装イメージ https://github.com/k1LoW/tbls
Phase 1. ローカルに ドキュメント生成環境を準備 https://github.com/k1LoW/tbls
Phase 1. ローカルにドキュメント生成環境を準備 ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜 tblsのインストールと ymlファイルを準備しただけ!
あとはMakefileに便利コマンドを 追加した程度の開発 1.ローカルのDBをマイグレーション ファイルから構築 2.tbls.ymlを作成 3.コマンドを実行してデータベース ドキュメントを生成
Phase 2. CIでドキュメントの ビハインドを検知する https://github.com/k1LoW/tbls
Phase 2. CIでドキュメントのビハインドを検知する ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜 CIで利用されるテーブルは常に 最新になることを利用
コミットされているドキュメントと 最新のドキュメントに差分がある 場合はCIを落とすようにした 1.CIのDBをマイグレーション ファイルから構築 2.CIのデータベースドキュメントを生成 3.CIとコミットしたデータベース ドキュメントの差分を検知
ER図が作られただけではなく データベースドキュメントが 最新の状態に保たれる 仕組みが構築できました ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
ドキュメントを最新の状態に 維持し続けていくのが一番難しい… ここを仕組みで解決しました ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
更にビハインド発生時の マニュアルを整備する ことで他の開発者向けに情報を残しました ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
これでデータベース ドキュメントについては完璧! ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
本題: 転 ここまで4:00
…というわけではなく、 まだまだ課題は残っています ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
テーブルごとの意味を持つまとまりを どう表現するかが課題です 例えばユーザーの基本情報が格納されているテーブル群だったり 契約情報がまとまっているテーブル群だったり… ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
tblsには「ラベル」 という概念があります ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
テーブルにラベルを付与して ラベル単位でもドキュメントを出力する 仕組みを検討しています 更に開発者フレンドリーなドキュメントが生成できますね ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
他にも「Viewpoints」という 概念を用いてドキュメントを追加する こともできるでしょう https://speakerdeck.com/k1low/phpconfuk-2023?slide=34
また、他のアプローチとして モデルに定義されている 定義を機械的に収集した上で 反映させることもできそうです https://speakerdeck.com/k1low/phpconfuk-2023?slide=34
ツールを入れて終わり ではなく ドキュメントを整備し続ける ことが大事ですね https://speakerdeck.com/k1low/phpconfuk-2023?slide=34
本題: 結 ここまで4:30
以上の取り組みによって アプリケーションの仕様を データベースから理解する ことができるようになりました ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
ドキュメントは宝の山 だと思っています ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
今回取り入れた仕組みを通して オンボーディングの高速化などに 役立てばいいなと思っています ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
みなさんもドキュメント化 やっていきましょう💪 ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
終わりに ここまで4:50
マネーフォワード福岡拠点では 一緒に働ける仲間を募集しています! https://hrmos.co/pages/moneyforward/jobs?category=1666323298559537153 ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
福岡開発拠点のサイトもあるので ぜひご覧ください! https://fukuoka.moneyforward.com ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
一緒にドキュメント化を 進めていきたいという方は ぜひお声がけください ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜
ご清聴ありがとう ございました! ER図クエスト 過ぎ去りしドキュメントを求めて 〜複雑性に眠る秘宝〜