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
49
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
2023年のしくじりと学び
genshun9
0
1
データ基盤 今に至るまで
genshun9
0
2
Other Decks in Technology
See All in Technology
リーダブルテストコード 〜メンテナンスしやすい テストコードを作成する方法を考える〜 #DevSumi #DevSumiB / Readable test code
nihonbuson
11
7.3k
レビューを増やしつつ 高評価維持するテクニック
tsuzuki817
1
730
なぜ私は自分が使わないサービスを作るのか? / Why would I create a service that I would not use?
aiandrox
0
750
インフラをつくるとはどういうことなのか、 あるいはPlatform Engineeringについて
nwiizo
5
2.6k
株式会社EventHub・エンジニア採用資料
eventhub
0
4.3k
Developer Summit 2025 [14-D-1] Yuki Hattori
yuhattor
19
6.2k
30分でわかる『アジャイルデータモデリング』
hanon52_
9
2.7k
明日からできる!技術的負債の返済を加速するための実践ガイド~『ホットペッパービューティー』の事例をもとに~
recruitengineers
PRO
3
410
利用終了したドメイン名の最強終活〜観測環境を育てて、分析・供養している件〜 / The Ultimate End-of-Life Preparation for Discontinued Domain Names
nttcom
2
200
オブザーバビリティの観点でみるAWS / AWS from observability perspective
ymotongpoo
8
1.5k
次世代KYC活動報告 / 20250219-BizDay17-KYC-nextgen
oidfj
0
260
速くて安いWebサイトを作る
nishiharatsubasa
10
13k
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Building Your Own Lightsaber
phodgson
104
6.2k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
366
25k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.4k
Music & Morning Musume
bryan
46
6.3k
Typedesign – Prime Four
hannesfritz
40
2.5k
Designing Experiences People Love
moore
140
23k
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