Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[freee] SaaSメトリクス開発の歴史から見るデータ品質要求への応答

Avatar for 中道舗彌 中道舗彌
November 05, 2025

[freee] SaaSメトリクス開発の歴史から見るデータ品質要求への応答

Data Engineering Summit (2025) 登壇資料
https://data-engineering-summit.findy-tools.io/2025

Avatar for 中道舗彌

中道舗彌

November 05, 2025

Other Decks in Technology

Transcript

  1.   4 中道 舗彌
 プロフィール ❏ 某SIer
 ❏ データエンジニア ❏

    freee
 ❏ データエンジニア ❏ アナリティクスエンジニア 
 特記事項
 ❏ 猫派
 
 
 
 アナリティクスエンジニア 
 Nakamichi Nobuya

  2. 6 freeeのメトリクス 概要
 Fact
 Product
 Product Group
 Customer Segment
 Revenue

    Owner Dept
 Charge Segment
 Charge State x Product Group
 … etc
 Dimension
 ARR
 └ Subsc ARR
 └ Transaction ARR
 └ OneTime ARR
 Renewal Rate
 Churn Rate
 Attachment Rate

  3. 7 freeeのメトリクス 概要
 Fact
 Product
 Product Group
 Customer Segment
 Revenue

    Owner Dept
 Charge Segment
 Charge State x Product Group
 … etc
 Dimension
 ARR
 └ Subsc ARR
 └ Transaction ARR
 └ OneTime ARR
 Renewal Rate
 Churn Rate
 Attachment Rate

  4. 8 freeeのメトリクス 概要
 Fact
 Product
 Product Group
 Customer Segment
 Revenue

    Owner Dept
 Charge Segment
 Charge State x Product Group
 … etc
 Dimension
 Snapshot
 ×
 Moment
 Time Axis
 ARR
 └ Subsc ARR
 └ Transaction ARR
 └ OneTime ARR
 Renewal Rate
 Churn Rate
 Attachment Rate

  5. 9 freeeのメトリクス 概要
 ARR
 └ Subsc ARR
 └ Transaction ARR


    └ OneTime ARR
 Renewal Rate
 Churn Rate
 Attachment Rate
 Fact
 Product
 Product Group
 Customer Segment
 Revenue Owner Dept
 Charge Segment
 Charge State x Product Group
 … etc
 Dimension
 Fact は限定的
 Dimension は豊富
 Snapshot
 ×
 Moment
 Time Axis

  6. 10 freeeのメトリクス 構造
 id
 created_at
 ARR
 0
 2022-04-01 11:00:00
 50


    1
 2022-04-01 16:00:00
 100
 id
 created_at
 ARR
 0
 2022-04-01 11:00:00
 50
 1
 2022-04-01 16:00:00
 100
 2
 2022-04-02 10:00:00
 200
 Snapshot
 Date (月末) 2025/4/30 2025/5/31 ・
 ・
 ・
 過去の各月数字fix 時点のソースデータ
 スナップショットを保 持
 s_date
 id
 created_at
 ARR
 group
 start_date
 end_date
 2025/4/30
 0
 2022-04-01 11:00:00
 50
 会計
 2025/1/1
 2025/12/31
 2025/4/30
 1
 2022-04-01 16:00:00
 100
 人事労務
 2025/3/1
 2026/2/28
 2025/5/31
 0
 2022-04-01 11:00:00
 50
 会計
 2025/1/1
 2025/12/31
 2025/5/31
 1
 2022-04-01 16:00:00
 100
 人事労務
 2025/1/1
 2026/2/28
 2025/5/31
 2
 2022-04-02 10:00:00
 200
 人事労務
 2025/5/1
 2026/4/30
 過去実績から今日まで1つのテーブルに積み上げ
 ARR、顧客数、契約数などYoY、MoMで一括計算可能

  7. 11 freeeのメトリクス 構造
 仕様補正など発生した際に過去断面の再集計を行う
 id
 created_at
 ARR
 0
 2022-04-01 11:00:00


    50
 1
 2022-04-01 16:00:00
 100
 id
 created_at
 ARR
 0
 2022-04-01 11:00:00
 50
 1
 2022-04-01 16:00:00
 100
 2
 2022-04-02 10:00:00
 200
 Snapshot
 Date (月末) 2025/4/30 2025/5/31 ・
 ・
 ・
 過去の各月数字fix 時点のソースデータ
 スナップショットを保 持
 s_date
 id
 created_at
 ARR
 group
 start_date
 end_date
 2025/4/30
 0
 2022-04-01 11:00:00
 50
 会計
 2025/1/1
 2025/12/31
 2025/4/30
 1
 2022-04-01 16:00:00
 100
 人事労務
 2025/3/1
 2026/2/28
 2025/5/31
 0
 2022-04-01 11:00:00
 50
 会計
 2025/1/1
 2025/12/31
 2025/5/31
 1
 2022-04-01 16:00:00
 100
 人事労務
 2025/1/1
 2026/2/28
 2025/5/31
 2
 2022-04-02 10:00:00
 200
 人事労務
 2025/5/1
 2026/4/30
 過去実績から今日まで1つのテーブルに積み上げ
 ARR、顧客数、契約数などYoY、MoMで一括計算可能
 アナリティクス
 エンジニアの力が
 必要!

  8. 12 s_date
 id
 created_at
 ARR
 group
 start_date
 end_date
 2025/4/30
 0


    2022-04-01 11:00:00
 50
 会計
 2025/1/1
 2025/12/31
 2025/4/30
 1
 2022-04-01 16:00:00
 100
 人事労務
 2025/3/1
 2026/2/28
 2025/5/31
 0
 2022-04-01 11:00:00
 50
 会計
 2025/1/1
 2025/12/31
 2025/5/31
 1
 2022-04-01 16:00:00
 100
 人事労務
 2025/1/1
 2026/2/28
 2025/5/31
 2
 2022-04-02 10:00:00
 200
 人事労務
 2025/5/1
 2026/4/30
 freeeのメトリクス 構造
 id
 created_at
 ARR
 0
 2022-04-01 11:00:00
 50
 1
 2022-04-01 16:00:00
 100
 id
 created_at
 ARR
 0
 2022-04-01 11:00:00
 50
 1
 2022-04-01 16:00:00
 100
 2
 2022-04-02 10:00:00
 200
 Snapshot
 Date (月末) 2025/4/30 2025/5/31 ・
 ・
 ・
 過去の各月数字fix 時点のソースデータ スナップショットを保 持
 アナリティクス
 エンジ(以下ry)
 ワイドテーブルライクな構造
 → スタースキーマ構造が求められつつある
 過去実績から今日まで1つのテーブルに積み上げ
 ARR、顧客数、契約数などYoY、MoMで一括計算可能

  9. 13 freeeのメトリクス 用途
 事業数値モニタリング 
 
 事業管理部門はじめ各部門における
 実績モニタリングのソースとして参照
 
 IR実績開示


    
 freeeの公開資料に掲載する
 具体的な数字情報のソースとして活用
 
 
 プロダクト連携 
 
 過去通算での契約状況や課金額といった
 情報をfreeeの各種プロダクトに提供
 オペレーションデータソース 
 
 請求書データへの属性付与 @収益管理部門
 売上/ARRの整合分析 @経理部門(予定)
 社内/社外におけるfreeeの実績数値データソースとして活用

  10. 15 SaaSメトリクス開発の歴史 
 第4世代 リリース予定 2025年
 ARR300億 2025年
 第3世代 リリース 2024年
 ARR200億 2023年
 第1世代

    リリース 201x年
 ARR100億 2021年
 マザーズ(現グロース)上場 2019年
 第2世代 リリース 2019年
 イマココ! 
 Redshift → BigQuery 移行 2022年

  11. 16 SaaSメトリクス開発の歴史 
 第4世代 リリース予定 2025年
 ARR300億 2025年
 第3世代 リリース 2024年
 ARR200億 2023年
 第1世代

    リリース 201x年
 ARR100億 2021年
 マザーズ(現グロース)上場 2019年
 第2世代 リリース 2019年
 イマココ! 
 Redshift → BigQuery 移行 2022年
 第1世代 リリース 201x年
 SaaSメトリクス開発の歴史 

  12. 17 第1世代: SQL オンリー
 開発者が素のSQLを実装
 
 digdag へデプロイ
 
 Redshift上で定期更新


    
 
 
 品質要求への応答 
 ❏ スケジュール実行
 ❏ GitHub・PR運用
 ❏ 自動デプロイ
 課題
 ❏ 単一オーソリティによるSQLの継ぎ接ぎ → 超難解SQL化
 ❏ No テストコード

  13. 18 SaaSメトリクス開発の歴史 
 第4世代 リリース予定 2025年
 ARR300億 2025年
 第3世代 リリース 2024年
 ARR200億 2023年
 第1世代

    リリース 201x年
 ARR100億 2021年
 マザーズ(現グロース)上場 2019年
 第2世代 リリース 2019年
 イマココ! 
 Redshift → BigQuery 移行 2022年
 第2世代 リリース 2019年
 SaaSメトリクス開発の歴史 

  14. 19 第2世代: Node.js + SQL
 品質要求への応答 
 ❏ Node.jsを併用し、超絶難解SQLを簡素化
 ❏

    重要パイプラインへ昇格
 ❏ unit test 導入
 課題
 ❏ システム補正とビジネスロジックの混在
 ❏ DWHモデルとしての不備
 ❏ トラッキング不可
 ❏ ユニークidの不備
 ❏ 中間レイヤーの物理排除
 ❏ 特定の集計粒度ニーズへの応答不可

  15. 20 SaaSメトリクス開発の歴史 
 第4世代 リリース予定 2025年
 ARR300億 2025年
 第3世代 リリース 2024年
 ARR200億 2023年
 第1世代

    リリース 201x年
 ARR100億 2021年
 マザーズ(現グロース)上場 2019年
 第2世代 リリース 2019年
 イマココ! 
 Redshift → BigQuery 移行 2022年
 第3世代 リリース 2024年
 SaaSメトリクス開発の歴史 

  16. 21 第3世代: PySpark + SQL with dbt
 品質要求への応答 
 ❏

    システムレイヤーとビジネスレイヤーの明確 な分離
 ❏ 分散処理による処理高速化
 課題
 ❏ システム・ビジネス責任分界による機動性の 欠如
 ❏ Spark 運用の知識不足と人員確保問題
 ❏ リネージを含むパイプライン運用の非統合 性

  17. 22 SaaSメトリクス開発の歴史 
 第4世代 リリース予定 2025年
 ARR300億 2025年
 第3世代 リリース 2024年
 ARR200億 2023年
 第1世代

    リリース 201x年
 ARR100億 2021年
 マザーズ(現グロース)上場 2019年
 第2世代 リリース 2019年
 イマココ! 
 Redshift → BigQuery 移行 2022年
 第4世代 リリース予定 2025年
 SaaSメトリクス開発の歴史 

  18. 23 第4世代: SQL with dbt
 品質要求への応答 
 ❏ transformをSQL一本化
 ❏

    認知不可とスキル水準の維持
 ❏ Stream Aligned な組織体制の移行を機に transform Architecture 見直し 
 ❏ システム/ビジネス分界の排除
 ❏ unittest の拡張
 ❏ データマネジメントおよびガバナンスへの適 合

  19. 24 第4世代: SQL with dbt (Layer Architecture)
 Marts/Intermediate
 DWH/Intermediate
 DWH


    Staging
 Lake
 Component
 Subcomponent
 Marts
 Medalion
 Blonze
 Silver
 Gold
 クレンジング処理
 ・リネーム
 ・重複排除
 ・不足断面の補填
 ・空文字null変換
 システムレベル補正
 ・レコード粒度調整
 ・スキーマ調整
 ・JOIN/FILTER/UNION OK
 
 データ拡張
 ・レコード増幅
 モデルを部品として配置するだけ
 
 Component
 モデル単体で業務エンティティ
 を表す
 
 Subcomponent
 Component 作成の補助モデル
 DWHのComponentを組み合わ せて錬成
 
 個別ビジネスロジック実装
 ・セグメント定義
 ・業務特殊補正
 末端 I/F

  20. 25 第4世代: SQL with dbt (テスト機構 )
 System Layer
 Business

    Layer
 Lake
 before
 after
 各モデルの
 単体testをPytestで 実装し品質担保
 他方ビジネスロジッ クは、スプレッドシー トの
 テストケースを突き 合わせ都度人力で 行われていた
 ◯
 △
 ✕
 Not Null、
 Unique、
 リレーション
 テストは担保
 ソースデータの
 テストは未実施
 (個別のチェック機構 が必要。だが、手が 回らず…)
 Lake
 Staging Layer
 DWH Layer
 (Int)
 Marts Layer
 (Int)
 従来行われていた Not Null、Unique、リレーションテスト
 → generic test で引き続き網羅的に担保
 
 ソースデータのテスト
 → 上記同様 generic test により大部分カバーできる公算
 
 ビジネスロジック
 → 参照をmockして中間(Intermediate)層時点でunittestを実装
 単一のテスト機構で
 パイプライン全体をテスト可
 

  21. 27 第4世代の課題感と展望 
 ❏ 現状のE2Eテスト構成によるロジック認知負荷
 ❏ テスト駆動に適したモデルへの再構築
 ❏ インシデント発生時の影響範囲特定遅延
 ❏

    ソースから分析I/Fまで一気通貫管理のリネージ運用
 ❏ 旧設計踏襲によるパイプラインのムダ
 ❏ システム/オペレーショナルメタデータをベースにアーキテクチャ再考
 ❏ 局所的シングルソース状態
 ❏ SaaSメトリクスだけでなく、その他実績メトリクスにも対応可能な本当の Single Source Warehouseへの進化と啓蒙

  22. 29 まとめ
 ❏ freeeは組織の進化に伴い メトリクスパイプラインについても変容を遂げてきた
 ❏ システム的、ビジネス的な品質要請に最速で応えることが目的
 ❏ (かなり遠回りをしてしまった感はあるが、)将来的な運用とデータマネジメント を見据え

    たアーキテクチャ選択が品質に結びつくと気付かされた
 ❏ 個の技術として優れているのは理解しつつ、統合がなされていない場合に発生する 認知不可とナレッジのロストは非常に根深い
 ❏ シングルソース化 の道は険しい
 ❏ 故にやりがいはある!(オモシロイヨ)