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
52
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
2
2023年のしくじりと学び
genshun9
0
2
データ基盤 今に至るまで
genshun9
0
3
Other Decks in Technology
See All in Technology
Pwned Labsのすゝめ
ken5scal
1
340
AIエージェント入門
minorun365
PRO
30
17k
RemoveだらけのPHPUnit 12に備えよう
cocoeyes02
0
260
エンジニアが加速させるプロダクトディスカバリー 〜最速で価値ある機能を見つける方法〜 / product discovery accelerated by engineers
rince
4
560
依存パッケージの更新はコツコツが勝つコツ! / phpcon_nagoya2025
blue_goheimochi
3
210
データベースの負荷を紐解く/untangle-the-database-load
emiki
2
490
【詳説】コンテンツ配信 システムの複数機能 基盤への拡張
hatena
0
220
2/18 Making Security Scale: メルカリが考えるセキュリティ戦略 - Coincheck x LayerX x Mercari
jsonf
0
160
大規模アジャイルフレームワークから学ぶエンジニアマネジメントの本質
staka121
PRO
3
1.1k
入門 PEAK Threat Hunting @SECCON
odorusatoshi
0
150
サイト信頼性エンジニアリングとAmazon Web Services / SRE and AWS
ymotongpoo
7
1.4k
クラウド食堂とは?
hiyanger
0
110
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Producing Creativity
orderedlist
PRO
344
40k
Docker and Python
trallard
44
3.3k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
10
510
GraphQLとの向き合い方2022年版
quramy
44
14k
A better future with KSS
kneath
238
17k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
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