税理士事務所の月次業務の中心は、顧問先の帳簿を毎月確認する「月次監査」です。残高がおかしくないか、税区分が合っているか、前月・前年と比べて説明のつかない増減がないか。決算期にはこれに加えて、決算調書や申告書のチェックが載ります。
この仕事は経験に左右されます。同じ帳簿でも、見る人によって気づく点が違う。当法人ではこの「見る」工程を、マネーフォワード クラウド会計(以下MF)とAPIで連携するスプレッドシート群と、その結果を判断してくれるAIの2階建てに作り替えました。
シリーズ最終回は、社内でいちばん規模の大きいこの仕組みの話です。実装はこれまでと同じく、AIコーディングツール「Claude Code」と一緒に進めています。
2階建ての考え方
| 層 | 何をするか | 何で動くか |
|---|---|---|
| 1階:機械チェック層 | MFから帳簿データを取り込み、ルールに従って「見るべき仕訳・科目」を絞り込む | GAS(Google Apps Script)+スプレッドシート+MF API |
| 2階:判断層 | 1階の検出結果を、税理士の判断基準に照らして「問題なし/要修正/確認要/経過観察」に仕分けし、報告書の下書きを作る | Claude Code の「スキル」(判断基準を書いたMarkdown群) |
大事なのは、2階は1階のチェックをやり直さないことです。機械でできる照合は機械が確実にやり、AIは「その検出をどう判断するか」だけに集中します。役割を混ぜると、どちらも中途半端になります。
1階:毎月、無人で走る11ステップ
月次管理のスプレッドシートに顧問先を登録しておくと、決められた日に時間トリガーで次の処理が走ります。
- その会社の設定シートを作る
- MFから仕訳・残高・推移表を一括取得する
- 勘定科目・取引先などのマスタを取得する
- 前期比較レポートを作る
- 仕訳チェック(金額の閾値、摘要の未入力、税区分の相違、重複仕訳)
- 売掛・買掛の消込確認(1対1の照合に加えて、複数の入金を合算して一致するかも探す)
- 勘定科目別の税区分集計表
- 期末の未払経費・未払債務の抽出
- 期間外の経費・債務の抽出
- 結果を「月次レビュー結果」シートに集約
- Backlogに、その会社の月次確認タスクとして起票
これとは別に、月次の異常検出として「月次平均に対して±20%以上、かつ差額1万円以上の科目」を推移表から拾う処理、決算期には決算調書(残高証明書・固定資産台帳・借入金返済予定表など)のAIチェック、申告書の税制適用漏れチェック(22項目)も走ります。
規模だけ書いておくと、GASのコードは81ファイル・約61,400行、自動テストが63本、これまでの変更記録(コミット)は383回です。税理士事務所の中の1システムとしては、たぶん大きいほうだと思います。
2階:AIが「判断」の下書きを作る
1階が出した検出結果は、そのままでは「数字が並んだシート」です。ここからが2階の仕事です。
Claude Codeに、/mc-run 顧問先名 2026-07 のようにコマンドを打つと、次の順で進みます。
- その会社の月次チェックのスプレッドシートを特定し、事業者番号で照合する(別の会社のデータを読まないための主キー)
- 前回の指摘のフォロー状況を確認
- 1階の検出事項を1件ずつ仕分け(トリアージ)
- 貸借対照表の残高レビュー、損益計算書のレビュー、消費税の論点、期ズレ・網羅性、定期タスクとの照合
- 重要度「高」の項目を深掘り
- 報告書の下書きを作る → 人が承認
- 承認後に格納・通知・実施記録
判断基準は「貸借対照表の残高レビュー」「消費税」など項目ごとにMarkdownで書かれていて、合計で約4,300行あります。たとえば消費税なら、基準期間の課税売上高から来期の課税方式(原則か簡易か)を自動で判定し、届出の期限を月次のフォロー項目に載せる、インボイスの経過措置や2割特例の適用条件を確認する、といった内容です。
AIに守らせている規律
AIに判断の下書きをさせるとき、いちばん気を使ったのは「もっともらしく書かない」ことです。ルールとして次を固定しています。
- 出典のない数値を書かない。推測で数値を補わない。分からなければ「【要確認】」と書く
- 「問題なし」と判断するときは理由を必ず書く
- 「判定0件」を「異常なし」と言わない。比較していないのに合格に見えるのが、消費税チェックで最も危険な失敗だからです
- 営業日の判定に必要な祝日データが引けなければ、推測せず「【要確認】」にする
- 重要度(高・中・低)や判断区分の言葉を、同義語で言い換えない(報告書の版ごとに表現が揺れると、読む側が比較できなくなる)
- 下書きを人が承認するまで、格納も通知もしない
「AIが賢いかどうか」より、AIが黙って推測しないための約束事が、実務ではずっと重要でした。
動かして分かった、API制限と実行時間との戦い
この仕組みは、作るより「安定して動かし続ける」ほうが難しいものでした。ブログ向けにいくつか残しておきます。
「1時間に1回」の壁で、3社が黙って消えた GoogleのアドオンとしてGASを動かす場合、時間トリガーは1時間に1回までという制約があります。ある日、1社目の処理に4分54秒かかって時間の予算を使い切り、残り3社を次のトリガーに引き継ごうとしたところ、Googleに拒否されました。問題は例外が出たことより、残り3社が通知もログもなく消えたことです。しかもこの「引き継ぎ」の経路は、それまでトリガーが123回すべて「今日は該当なし」でスキップされていたため、本番で一度も動いたことがなかった。今は、失敗したら必ず通知が出るように直しました。
ログを送る処理が、本体を遅くしていた マスタの一括取得が93秒かかっていたので調べたら、実作業は20秒で、約73秒(78%)は進捗ログを送る待ち時間でした。ログを1行送るたびに1.5秒待っていたためです。ログの送り先を変えて解消しました。
アクセス制御が「名前一致」で通っていた どの会社のデータを誰が触ってよいかを、MF側の事業者番号で照合するつもりが、こちらの一覧では番号の先頭の0が落ちて数値になっており、74社すべてが番号ではなく会社名の一致だけで通っていたことが分かりました。厳格に切り替える前に見つかったのが救いで、以後は番号を文字列として扱っています。
二重登録との戦い 処理が途中で打ち切られると、ブラウザが同じデータで自動的に再送し、MFに仕訳が二重登録される(=帳簿の二重計上)ことがありました。「送信前に残枠を減らす」「処理中の印を立てる」「送信前に締切を確認する」の3段構えで防いでいます。
AIの「自信」は正しさではない 通帳や領収書のOCRにGeminiを使っていますが、モデルが返す「確からしさ」の値は文章の流暢さの指標であって、読み取りが正しいことを保証しません。実際、全項目が埋まっていても取引先名が揺れる例がありました。今は印字残高の増減と入出金の向きを検算することを主軸にし、入出金が逆に読まれていれば自動で反転します。ただし確定できない不整合は補正せず警告に回します。誤った補正は誤った登録と同罪、という方針です。
freeeへの水平展開で見えたこと
同じ仕組みを、freee会計を使う顧問先向けにも移植しました(約19,100行、テスト26本)。移植して初めて「MF固有の前提だった」ことが見えるのが面白いところです。
- 税区分のチェックは、freeeのほうが堅牢に作れた。MFでは税区分の略称と正式名称を名前で突き合わせる必要がありましたが、freeeはコードで照合できます
- freeeには補助科目がないので、補助元帳を「勘定科目×取引先」で作り直しました
- 固定資産の種類コードが判定できない明細は、無理に既定値を当てずCSVに出さないようにしました。種類コードを間違えると耐用年数まで間違うので、人が仕分けるほうが安全です
Claude Codeとの分担で効いたこと
規模が大きいぶん、AIとの付き合い方も変わりました。
ルールブックが「設計台帳」になった
Claude Codeに渡すルールブック(CLAUDE.md)は121KBになりました。ファイルごとの責務、壊してはいけない前提、そして上に書いたような事故の実測値が日付付きで書いてあります。別のAI用に同じ内容を複製していた時期があり、片方だけ更新されて193行ずれたことがあったので、今は1か所にしか置かず、もう一方はそこへのポインタだけです。
テストを「規約の番人」にした 「列の番号を直書きしたら失敗するテスト」「結果のログを進捗ログに混ぜたら失敗するテスト」のように、過去の事故を再現しないためのテストを置いています。半年後にAIが「ここは簡略化できそう」と提案しても、テストが止めてくれます。
個人情報の混入を機械で止める コードを共有リポジトリに送る前に、社内ドメインのメールアドレスやスプレッドシートIDのパターンを検出して止めるチェックを走らせています。AIが作業ログや例をコードに書き込むことがあるためです。
顧問先にとって何が変わったか
- 月次のチェックが、担当者の経験に依存せず同じ観点で行われる
- 検出→判断→報告の流れが記録として残るので、「前月に指摘した点がどうなったか」を翌月に必ず追える
- 決算期に慌てて見つかるはずだった論点(来期の消費税の方式、期ズレ、未払の漏れ)が、月次の段階で挙がる
最終的な判断と対外的な責任は、これまでどおり担当の税理士が負います。AIは「見落としを減らし、判断の下書きを速く作る」役です。
シリーズを終えて
4回にわたって、当法人の社内システムを紹介してきました。共通しているのは、「AIに何をさせるか」より「AIに何をさせないか」を先に決めたことです。
- 判定できないファイルは動かさない(第1回)
- 削除は自動でやらない(第3回)
- 出典のない数字を書かせない(第4回)
この考え方は、お客様のバックオフィスをクラウド化・自動化するときにも、そのまま持ち込んでいます。
シリーズ
- e-Taxの控えを共有ドライブへ自動振り分けし、Backlogで報告する仕組み
- AppSheet(スプレッドシート)×GAS×Backlogで顧問先管理とタスク起票を自動化した話
- 自動化で起きた3つの事故と、壊れにくい設計に変えるまで
- 月次監査・決算監査ツール:マネーフォワード連携スプレッドシート+AIの2階建て(本記事)

