Skip to main content

Freee Accounting - 会計

freee API から仕訳帳データと勘定科目データを取得しています。

前提

主なデータの利用用途

  1. 会計レポート
    • 役員が会計データを確認するため
    • 経理の方がデータ入力時に確認するため

データの更新頻度

データの取得に 1 時間ほどかかるので、毎日実行はしません。

  1. 毎月 25 日 ~ 31 日
    • 経理の方が毎月 24 日までにデータを入れるので、そのタイミングに合わせて実行します
      • 役員会が毎月 25 日にあるので、24 日までだそうです
      • 土日が被るとデータが入らない可能性があるので、25 日以降毎日実行しています
  2. 毎週月曜日
    • 役員会以外でも定期的にみる可能性があるので、毎週月曜日に実行するようにしています

データ責任者

オーナー所属責任者(現在)前任
テクニカルオーナーand roots堀 順郎-
ビジネスオーナーand roots--

関連サービス

項目名所有者説明
freee 会計フリークラウド型会計ソフト。
Cloud Functionsand rootsサーバーレス環境で関数実行している。
BigQueryand rootsデータの格納先。テーブル名は、Raw_<MultiTenant>_freee_<StreamId>_<TableName>に格納。
TROCCOprimeNumberETL ツール。
Slackand rootsデータ連携結果の通知先。

データフロー図(簡易)

データの取り込みから加工までの簡易的な流れです。

TROCCO

パラメータ設定

  • ワークフロー設定のクエリを参考にしてください
    • SQL で取り込み対象と、取り込みに必要な情報を抽出しています

スケジュール設定

データの更新頻度に合わせて設定しています。

  1. 毎月 25 日 ~ 31 日
  2. 毎週月曜日

Cloud Functions

README.mdに記述しています。

BigQuery

命名規則

Raw_[MultiTenant]_freee_[Stream]_[Table]

[MultiTenant]は、その会社全てに紐づくテナントを記述してください。

dbt

リネージ(簡易図)

詳細は dbt のソースコードを確認してください。

OpeningBalanceについて

  1. 開始残高を設定している会社のみ作成しています
  2. API がないので手動でデータを取得しています
    • 開始残高の変更は基本的に起きないので、定期取得の必要はありません。
    • データ取得方法はtools/README.mdを参考にしてください

エラー対応

データインジェスチョン

データへのアクセス権限がないとき(アカウントの変更)

  1. and roots 事業所の開発用アプリの Web 認証 URL に、対象事業所のアクセス権を持った freee アカウントからアクセスし認証コードを取得する
    ※ freee アカウントを経理部門に貸してもらう必要があります
  2. 認証コードから refresh_token を取得する
    参考サイトの"トークンの取得方法"を参考にしてください
  3. Stream テーブルにある、対象事業所の refresh_token を手動で更新する
  4. TROCCO を実行し、実行の可否を確認する

その他調査のポイント

  • TROCCO と Cloud Functions のログからエラーの原因を探ってください

dbt

テナントが追加された時

テナントが追加されるとエラーを出すようにしています(テナント全部を会社に紐付ける設計なので)。

  • エラーメッセージ: not_null_Report_All_FreeeAccounting_fiscal_year_end
  • 対応:
    1. 対象会社のテーブル名(Raw)を変更
      • Raw_[MultiTenant]_freee_[Stream]_[Table]MultiTenant に、追加されたテナント名を結合してください
    2. TenantStream テーブルにテナント分のレコードを insert
    3. SourceTable テーブルの対象レコードを update
      • table_name カラムと、_TENANT_ID カラム
    4. dbt のファイルを追加・変更

勘定科目名が変更された時

取得期間外の仕訳帳データの勘定科目名が変更されないので、テストでエラーを出すようにしています。

  • エラーメッセージ: dbt_utils_relationships_where_から始まるメッセージ
  • 対応
    1. エラーが出た会社を全期間取得してください

それ以外の場合の調査ポイント

  • dbt の runs のログを確認してください
  • OpeningBalance のデータや勘定科目名が正しいか確認してください

参考サイト

freee API