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
dbtで家計簿アプリ作ってみた
Search
ゲンシュン
January 20, 2025
Technology
1
130
dbtで家計簿アプリ作ってみた
2025/01/20に開催された「datatech-jp Casual Talks #6」の登壇資料です
https://datatech-jp.connpass.com/event/337374/
ゲンシュン
January 20, 2025
Tweet
Share
More Decks by ゲンシュン
See All by ゲンシュン
本が全く読めなかった過去の自分へ
genshun9
0
1.2k
再現性のある成果を出すデータエンジニアになりたい
genshun9
0
14
2023年のしくじりと学び
genshun9
0
15
データ基盤 今に至るまで
genshun9
0
17
Other Decks in Technology
See All in Technology
kintone開発チームの紹介
cybozuinsideout
PRO
0
73k
Goss: New Production-Ready Go Binding for Faiss #coefl_go_jp
bengo4com
0
1.1k
KiroでGameDay開催してみよう(準備編)
yuuuuuuu168
1
130
AIエージェントの開発に必須な「コンテキスト・エンジニアリング」とは何か──プロンプト・エンジニアリングとの違いを手がかりに考える
masayamoriofficial
0
410
小さなチーム 大きな仕事 - 個人開発でAIをフル活用する
himaratsu
0
120
生成AI利用プログラミング:誰でもプログラムが書けると 世の中どうなる?/opencampus202508
okana2ki
0
190
モダンフロントエンド 開発研修
recruitengineers
PRO
3
410
どこで動かすか、誰が動かすか 〜 kintoneのインフラ基盤刷新と運用体制のシフト 〜
ueokande
0
190
JavaScript 研修
recruitengineers
PRO
3
230
認知戦の理解と、市民としての対抗策
hogehuga
0
370
トヨタ生産方式(TPS)入門
recruitengineers
PRO
3
270
Postman MCP 関連機能アップデート / Postman MCP feature updates
yokawasa
1
150
Featured
See All Featured
The Invisible Side of Design
smashingmag
301
51k
A Modern Web Designer's Workflow
chriscoyier
695
190k
RailsConf 2023
tenderlove
30
1.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
We Have a Design System, Now What?
morganepeng
53
7.7k
What's in a price? How to price your products and services
michaelherold
246
12k
Code Review Best Practice
trishagee
70
19k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Rails Girls Zürich Keynote
gr2m
95
14k
Transcript
©︎ 2025 gen_shun dbtで家計簿アプリ作ってみた ゲンシュン 1
©︎ 2025 gen_shun ⚫自己紹介 ⚫データエンジニアリングの上げ方 ⚫家計簿アプリについて ⚫学び/感想 お品書き 2
©︎ 2025 gen_shun 3 自己紹介
©︎ 2025 gen_shun データエンジニアやってます、ゲンシュンです。昨年9月に現職へ転職 自己紹介 4
©︎ 2025 gen_shun 全てのアウトプットgen_shunでやってるので、よかったらフォロー! 自己紹介 5
©︎ 2025 gen_shun みん強の企画・運営・司会やってます〜来週開催です! 自己紹介 6
皆さんは普段どうやって データエンジニアリング力を 高めてますか!? 7
©︎ 2025 gen_shun ⚫普段の業務 ⚫書籍を読む ⚫勉強会 / コミュニティでの活動 ⚫OSS活動 ⚫アプリ自作
皆さんはどうやって高めてますか? データエンジニアリングの上げ方 8
©︎ 2025 gen_shun ⚫普段の業務 ◼当たり前。課題を技術で解決出来るとキレイですよね〜 ⚫書籍を読む ⚫勉強会 / コミュニティでの活動 ⚫OSS活動
⚫アプリ自作 皆さんはどうやって高めてますか? データエンジニアリングの上げ方 9
©︎ 2025 gen_shun ⚫普段の業務 ⚫書籍を読む ◼社内/社外で輪読会を色々実施したが、具体例を交えた議論が出来て良き ⚫勉強会 / コミュニティでの活動 ⚫OSS活動
⚫アプリ自作 皆さんはどうやって高めてますか? データエンジニアリングの上げ方 10
©︎ 2025 gen_shun ⚫普段の業務 ⚫書籍を読む ⚫勉強会 / コミュニティでの活動 ◼今回のような場への登壇や、イベント参加で話を聞いたり現地で喋ったり ⚫OSS活動
⚫アプリ自作 皆さんはどうやって高めてますか? データエンジニアリングの上げ方 11
©︎ 2025 gen_shun ⚫普段の業務 ⚫書籍を読む ⚫勉強会 / コミュニティでの活動 ⚫OSS活動 ◼やったことない!今年やりたい
⚫アプリ自作 ◼データ周りでアプリ作ったことないな 皆さんはどうやって高めてますか? データエンジニアリングの上げ方 12
©︎ 2025 gen_shun ⚫前職データ基盤安定後は、プロダクト戦略や事業企画業務が中心 だったので、技術にあまり触れられなかった ⚫データモデリングしたいし、久しぶりにdbtゴリゴリ触りたい〜 ⚫一方現在転職直後だし、現職dbt使っていないしdimensional modeling導入は当分先かな〜 ⚫自分で触るしかねぇ!! ⚫でも、データ周りの自作アプリってあんまり記事見ないな・・?
⚫じゃ自分で作ってみるしかねぇ!! 今の自分の状況 データエンジニアリングの上げ方 13
©︎ 2025 gen_shun 14 てことで、家計簿アプリ作ってみた
©︎ 2025 gen_shun ⚫目的 ⚫データ抽出 ⚫インフラ基盤 ⚫dbtでモデリング ⚫MLする ⚫looker studioで可視化
こんな感じで話します 家計簿アプリを作ってみた 15
©︎ 2025 gen_shun ⚫俺の出費の可視化と妻アラートの導入。 ◼家計簿アプリを見れば済むとか言わない ⚫自分が触ったことない技術を、なるべくたくさん触ってみる ⚫基盤プロジェクト立ち上げのテンプレコード確立できたら良いな 今回の目的はこれ! 家計簿アプリを作ってみた 16
©︎ 2025 gen_shun ⚫妻が管理してきた家計簿アプリから、直近5年のデータをcsv出力。 ◼普段自分見てません、ごめぇん! ◼てか丁寧に管理されたおかげでデータが整ってる!あたたけぇ! ◼このcsvエクスポート機能のためだけに、今回課金した ⚫API周りが結構面倒だったので、ここは手動での出力で妥協 データ抽出について 家計簿アプリを作ってみた
17
©︎ 2025 gen_shun ⚫インフラリソースはterraformで全部管理 ◼データセット、サービスアカウント、role周り ⚫データ基盤はdbtで作り、データはBigQueryへ ⚫github actions経由で、terraform applyとdbt runを実行させる
◼github × WorkloadIdentity周りを対応 ◼mainブランチ取り込み時にterraform applyとdbt run発射させる インフラ基盤について 家計簿アプリを作ってみた 18
©︎ 2025 gen_shun インフラ基盤について。terraform周り(今回モジュールは細かい粒度で) ※諸事 情によ り今回 のアプ リ名c old_waveです
家計簿アプリを作ってみた 19
©︎ 2025 gen_shun インフラ基盤について。github actions周りの雰囲気だけ 家計簿アプリを作ってみた 20
©︎ 2025 gen_shun ⚫stg層:日付の変換や、税や利息などの面倒いデータ除去 ⚫int層:口座間のお金のやり取り(振替)や、各カテゴリの整理 ◼口座A(個人)→口座B(家計)に食費出す場合、全体的にはお金の動きは±0 なのに、単体口座で見ると謎の出費や収入に見える ⚫mart層:dim_categoryとfct_billing_xxxを作り、カテゴリごとの 出費をまとめる モデリングは一旦雑に作る
家計簿アプリを作ってみた 21
©︎ 2025 gen_shun 家計簿アプリを作ってみた 22
©︎ 2025 gen_shun モデリング。dbt docsのリネージはこんな感じ 家計簿アプリを作ってみた 23
©︎ 2025 gen_shun ⚫dbt-osmosisを使ってみた ◼ymlのドキュメント入力補完、結構良い! ⚫dbt exposuresを使ってみた ◼データ利用状況をdbt docsに追記できるやーつで便利! ⚫dbt_mlを使ってみた
◼後述 dbt周りの今回のチャレンジ 家計簿アプリを作ってみた 24
©︎ 2025 gen_shun ⚫リネージで繋がってるテーブルのドキュメントを補完 ⚫左の状態からコマンド実行で右の状態に!すげぇ! dbt-osmosis使ってみた 家計簿アプリを作ってみた 25
©︎ 2025 gen_shun ⚫業務でガッツリMLやったことないので、BQML触ってみる ◼まずは「やってみる」のはじめの一歩が大事! ⚫直近4年のデータを渡し、来月の自分の出費の予測出せばOK ◼精度とかそういうのは無視! ◼欲しいものがあれば買うので、多分ちゃんとした予想無理(笑 dbt_ml使ってみた 家計簿アプリを作ってみた
26
©︎ 2025 gen_shun ⚫ソースコードと来月の出費予想データ。 ◼BQMLサクッとできてすごい〜 dbt_ml使ってみた 家計簿アプリを作ってみた 27
©︎ 2025 gen_shun ⚫LookerStudioで可視化する ⚫データソースはdim_xxxとfct_xxxを参照、レポートを作成してご にょごにょ ⚫接続はサービスアカウント使う ビジュアライゼーション 家計簿アプリを作ってみた 28
©︎ 2025 gen_shun 29 完成したぞ!
©︎ 2025 gen_shun 直近数年の各カテゴリごとの出費。「その他」多すぎ・・ 家計簿アプリを作ってみた 30
©︎ 2025 gen_shun 「その他」を細かい粒度のカテゴリに分解してみたが、うーん。。。? 家計簿アプリを作ってみた 31
©︎ 2025 gen_shun 先月と先々月の出費カテゴリ割合。ほぼモバイルSuicaやんけ!! 家計簿アプリを作ってみた 32
©︎ 2025 gen_shun ヒートマップ的なテーブル作ってみた。こんな感じか〜 家計簿アプリを作ってみた 33
©︎ 2025 gen_shun BQMLによる来月の出費予想!ほぼモバイr(ry 家計簿アプリを作ってみた 34
©︎ 2025 gen_shun 今度は家計の推移を追ってみる。2021年の凹んでる部分はデータの欠損です恐らく 家計簿アプリを作ってみた 35
©︎ 2025 gen_shun ケータイ変更による「携帯電話代」がガクッと下がってるのがわかる!すごい〜 家計簿アプリを作ってみた 36 以前の ケータイ代 安くなってる!!
©︎ 2025 gen_shun 37 学び/感想
©︎ 2025 gen_shun ⚫WEBアプリは個人で作る際に色んな技術やライブラリを触るチャ ンスだが、データ周りはそういうイメージが個人的には無かった ◼デー周りも自作アプリでも全然いろんな技術触ることできる! ◼本で読んだモデリング、業務で試せないなら個人アプリで試すのはあり! ⚫terraform、dbt、開発フロー周りの開発テンプレみたいなの個人 的にできたので満足 ◼そのうちzenn.dev書きます
学び/感想 38
©︎ 2025 gen_shun ⚫気になってた技術とか個人的に一回触れられた! ◼ライブラリやdbtの機能 ◼BQML周りとか ⚫dbtやっぱり最高〜楽しい〜 ⚫ぶっちゃけお題ミス。家計簿アプリを見るで良k(ry 学び/感想 39
©︎ 2025 gen_shun 40 おわり ゲンシュン/genshun