coconala社におけるDataformを利用したイミュータブルデータモデル新会計システム
レビュー投稿日の情報になります
株式会社ココナラ / 犬の方の犬
メンバー / バックエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
最終更新日投稿日
| 利用プラン | 利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
|---|---|---|---|---|
ー | ー | 10名以下 | 2025年7月 | B to C C to C |
| 利用プラン | ー |
|---|---|
| 利用機能 | ー |
| ツールの利用規模 | 10名以下 |
| ツールの利用開始時期 | 2025年7月 |
| 事業形態 | B to C C to C |
アーキテクチャ

アーキテクチャの意図・工夫
- 「事実(Fact)」と「解釈(Derived)」をレイヤーとして完全に分離することを意図した。
- Data Lake層は絶対に加工せず「事実」として保存し、Data Mart層でそれを「解釈」する。
- これにより、Data Lakeの事実データからいつでも再計算が可能という安心感を担保する。
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
- 弊社では新規事業が急速に立ち上がるなかで、それぞれに対応した会計システムの構築が急務であった。しかし、既存の会計システムのアプローチには以下の課題があり、短工期・少人数での対応が困難な状況だった。
- メンテナンスと品質担保のコスト増大: 既存システムでは巨大なSQLのメンテナンスが必要であり、デグレードの懸念があった。
- システム負荷とコスト: 会計DBが本体DBと同じRDSインスタンスに同居しており負荷が高く、また、RDSからBigQueryへの通信コストも無視できない状態だった。
- 調査の困難さ: 科目の振替などの複雑なロジックの密結合により、トレーサビリティが極めて悪い状態だった。
どのような状態を目指していたか
- 開発スピードと品質の両立: 複雑なロジックを分割統治し、シンプルでメンテナンス性の高いデータ基盤を構築すること。
- コストと負荷の最適化: プロダクトDBへの負荷を分離し、BigQuery上で完結させることでコストを抑えたワークフローを実現すること。
- 監査性の担保: 会計データとしての信頼性を確保するため、「事実(Fact)」と「解釈(Derived)」を分離し、過去の取引履歴を正確に追跡できる状態にする。
比較検討したサービス
- 特になし(BigQueryを中心としたエコシステム内での選定)
比較した軸
- SQLベースであること: 将来的に別の言語やツールへ移行したくなった場合でも、移植が容易である点。
- 依存関係の管理: 複雑になりがちなデータ加工のパイプラインをコードで管理できる点。
- コスト効率: インクリメンタルな更新が可能で、処理コストを抑えられる点。
選定理由
- BigQuery上で完結するワークフローとイミュータブルデータモデルの実現。
- Dataformを採用することで、データの加工(Transform)プロセスを管理可能なコードとして定義でき、BigQueryのパワーを活かしたELT処理が実現できる点が決め手となった。
- また、TM理論やイミュータブルデータモデルの考え方を取り入れ、状態更新(Update)を行わず「事実」を積み上げる設計と相性が良い点も魅力的だった。
導入の成果
改善したかった課題はどれくらい解決されたか
- 非常に高いレベルで解決された。
- ロジックの簡素化・局所化: 以前は巨大だったSQLが、最長でも80行程度に収まり、規模としては1/10以下になった。
- 負荷の分離: プロダクトDBと分析基盤が完全に分離されたため、会計都合で本体システムに負荷がかかることがゼロになった。
- トレーサビリティの向上: Delete / Updateの原則禁止、事実を抽出するレイヤーと加工のレイヤーを分割、集計時にロジックを介入させないことにより明細の追跡が容易になった。
- 連携の効率化: BigQueryから直接CSVやスプレッドシートを出力できるため、会計SaaSへの連携作業が大幅に楽になった。
どのような成果が得られたか
- 上述の通り、既存の会計システムで感じていた課題を解決出来た。
- 今回構築したアーキテクチャは別事業でも同様の考え方で使い回すことができ、Scrap & Buildが非常に容易になるという副次的効果も得られた。
導入時の苦労・悩み
- 既存の会計システムの考え方からの脱却と、イミュータブルデータモデルへの思想の転換が必要だった。
- プロダクトのエンジニアだけでなく経理チームとも出力レイアウトやデータ要件を事前にすり合わせる必要があった。
導入に向けた社内への説明
上長・チームへの説明
- PoCとして新規の会計システムに新しいアーキテクチャを適用することを提案した。具体的には、下記の3点を強調して伝えた。
- BigQuery上で完結させることで通信コストを削減できる点。
- Dataformによる依存関係解決により運用負荷が下がる点。
- イミュータブルデータモデルによりトレーサビリティが向上し、監査上のリスクを低減できる点。
活用方法
- プロダクトのデータからユーザー情報などを除外した上でBigQueryへ転送し、Dataform上で仕訳の作成や必要なレポートの集計を行っている。
- 日々のデータ更新はDataformのインクリメンタル更新機能を利用し、差分のみを処理することで効率化している。
よく使う機能
ref()関数: テーブル間の依存関係を自動で解決してくれるため、実行順序を意識せずにロジック記述に集中できる。type: "incremental": 日々追記される会計データ(仕訳イベント)に対して、差分更新を行うことで処理コストと時間を削減している。
ツールの良い点
- パイプラインのコード化: SQLを書くだけでなく、依存関係や設定をコードで管理でき、ワークフローに乗せられる点。
- 依存関係の自動解決:
ref()を使うだけでテーブル作成順序を自動制御してくれるため、複雑な依存関係も管理が容易。 - コスト最適化: BigQueryとの親和性が高く、インクリメンタル更新なども簡単に実装できるため、大規模データでもコストを抑えられる。
ツールの課題点
- アサーションの活用: リコンサイル(照合)でデータ品質を担保している部分があるため、今後活用を進めたい。
- メタデータ管理: データの出自や意味を管理するメタデータの作り込みは手作業で行う必要がある。
ツールを検討されている方へ
- 会計データのように「整合性」が命となる領域において、Dataformとイミュータブルデータモデルの組み合わせは非常に強力である。
- 「事実」と「解釈」を分けることで、システムも心も平穏になる。SQLベースで始められるため、特定の言語にロックインされたくないチームにもおすすめ。
今後の展望
- 今後は、DataformのAssertion機能をより効果的に活用し、データ品質の自動監視を強化したいと考えている。また、ロード時の個人情報削除などの権限・セキュリティ設定の精緻化や、データエンジニア的な考え方を組織全体に浸透させていくことにも取り組んでいきたい。
株式会社ココナラ / 犬の方の犬
メンバー / バックエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
よく見られているレビュー
株式会社ココナラ / 犬の方の犬
メンバー / バックエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法


