ホーム / ナレッジ / 既存Excel様式を自動生成するときの品質保証|「ファイルがある=検算済み」を仕組みにする
帳票や資料を自動生成すると、間違った数字の資料が黙って出てくるのが怖い。この記事は、ファイルが存在すること自体を検算合格の証明にする設計、壊し方を注入して検出できるかを試すテスト、結論を知らない担当がゼロから再現する独立照合の3点を、実際の月次資料エンジンの実測値つきで整理します。「検算しています」が何も保証していない形と、検査を増やしても埋まらない限界まで含めます。
著者: 村山 悠太(ゴムマリ) 最終更新: 2026年8月
帳票や資料の自動生成で本当に怖いのは、処理が止まることではありません。間違った数字の資料が、何事もなかったように出てくることです。止まれば気づきますが、出てきた資料を疑う人はいません。この記事は、既存のExcel様式をプログラムで自動生成するときに、その事故を仕組みで防ぐ方法を書きます。読み手は、帳票・資料の自動化を導入したい決裁者と推進担当です。柱は3つ、ファイルが存在すること自体を検算合格の証明にする設計、壊し方を注入して検出できるかを試すテスト、結論を知らない担当がゼロから再現する独立照合です。数字は、実際に運用している管理会計の月次資料エンジンで実測したものを使います。
自動生成の提案には、たいてい検算機能の説明が付きます。確かめるべきは検算の中身ではなく、検算の結果が出力を止められるかどうかです。次の4つは、検算していると説明できて、実際には何も保証していない形です。
検算の結果が出力に反映されない。 資料を保存してから検算する作りでは、不合格でも正式なファイル名の資料がフォルダに残ります。画面に不一致の件数が出ていても、運用する人はファイルの存在を見て完成と判断します。プログラムの終了コードが検算の結果と連動していない実装も、同じ結末になります。
検証と出力が別のコードを通っている。 検証用の集計と、ファイルに書き込む集計が別々に書かれていると、「検算100%一致」と表示しながらファイルには別の数字が入るという状態が成立します。既存の実証済みロジックには触らないという配慮で検証だけを足すと、この形になりやすい。数字を決める場所を1箇所に集約し、出力も検証もその値だけを使うのが対処です。
恒等式を検算している。 小計の合計が総合計と一致するかという検査は、総合計を小計から作っている限り必ず合格します。式を変形しただけのものは検査ではありません。検算は、出力を作った経路とは別の経路で値を作り、突き合わせて初めて意味を持ちます。生データを別の切り口で足し直す、実務上成り立つべき別の等式を使う、といった形にします。
検査していない状態が合格に見える。 対象の月をプログラムに直接書くと、翌月は条件に当たらず警告なしで通過します。突合の相手データがない月は、不一致0件と表示されます。検査するファイルの指定を間違えれば、すでに完成している過去の資料を検査して合格が出ます。どれも画面上は合格です。
最も効くのは、検算の結果を人が読んで判断する経路をなくすことです。手順は3つです。
検算の結果が出力の存否を決めるこの仕組みを、以下では品質ゲートと呼びます。この形にすると「その名前の資料が存在する=検算を通っている」が構造として成立します。運用する人が画面のログを読み違えても、手順書の書き方が悪くても、結論は変わりません。ファイルの改名はOSの機能として一息に行われるため、途中の状態の資料が正式な名前で残ることもありません。
読み直す工程は省けません。書いたつもりの値ではなく、ファイルに実際に入った値を検算するためです。
実務の落とし穴が1つあります。一時的な名前を「資料.xlsx.partial」のように拡張子の後ろに付けると、Excelを扱うライブラリが拡張子で形式を判定して読み直しに失敗します。「資料.partial.xlsx」のように、拡張子は正しい位置に残す名前にします。
あわせて、出力ファイル名に対象月を入れます。対象月が名前にないと、前の月に作られた同名のファイルがその月の成果物として扱われても、名前では気づけません。
検査が働いていることは、合格の実績では証明できません。何も検査していなくても合格は出るからです。証明できるのは、壊れた入力を与えたときに止まることだけです。
注入する壊し方は、たとえば次のものです。
実際の月次資料エンジンでは、この形の障害注入テストを約40ケース・約320項目の検査まで積み、全ケースで違反ゼロを確認しています。あわせて、検査そのものが働いているかを見る逆向きのテストを10通り用意し、10通りとも検出されました。
最も直接的な証拠は、検査を入れる前の版と後の版に、同じ注入を当てて比べることです。実際の月次資料エンジンで測ると、検査を入れる前は終了コード0(正常終了)で「全ゲート合格」と表示して資料が生成され、入れた後は異常終了して作成物が1つも残りませんでした。この差が、その検査が出力を止めていることの証明になります。
テストデータの作り方にも注意が要ります。数式エラーを注入するために対象のExcelをライブラリで開いて保存し直すと、数式の計算結果として保持されているキャッシュ値がまとめて失われます。狙った1箇所以外も壊れ、テストの結果が読めなくなります。Excelファイルの実体はZIPなので、中のXMLを直接差し替えて、狙った箇所だけを壊します。
最後に、何を検査していて何を検査していないかを1つの文書にまとめます。一覧が散らばっていると、増やしたつもりで同じ場所を二重に見ていたり、抜けている軸に誰も気づかなかったりします。
作った本人の見直しは、同じ思い込みを2回通すだけです。自分の設計を検証条件にしてしまうため、設計が見落としている軸はそのまま素通りします。
そこで、最終結果を知らない担当が、元データから別実装で同じ資料を作り、セル単位で突き合わせます。実際の月次資料エンジンでは、この独立照合で約7.4万セルの一致率100%を確認しています。作った本人を監査に入れない考え方は、発注明細の費目分類のやり方の工程5と同じです。
独立照合にも落とし穴が2つあります。
「独立」が別のコードを通っているだけのことがある。 同じ列番号や同じ読み取り前提を共有していれば、元データの列構成が変わったときに本体も照合側も同時に外れます。別実装とは、元データの読み方から作り直すという意味です。
照合の対象がすり替わることがある。 照合するプログラムが、いま作った生成物ではなく、過去に完成した同名の資料を見に行っていれば、いつまでも合格が出ます。照合したファイルのフルパスを出力させ、生成物と一致することを機械で確かめます。
外注するなら、独立照合を誰が担当したかを確認します。実装した本人が兼務しているなら、それは見直しであって照合ではありません。
止めるだけでは運用は回りません。止まった画面に、何が合わなかったか(項目・シート・セル位置・行ラベル)、期待した値と実際の値、次に何を確認すればよいかが並んでいる必要があります。利用者に読ませる部分と、開発側が原因を追うための情報は、仕切りを入れて分けます。
対応できない条件は、実行前に断ります。データが揃っていない月や範囲外の引数は、走らせずに理由を出して止めます。できないことを仕様として宣言するほうが、それらしい数字が出るより安全です。
実際の月次資料エンジンの運用初月に、品質ゲートが2度働いて出力を止めました。
1件目は、元データにだけ存在する1行が原因です。前の月に確定した取引が後から計上されており、会計側のデータと突き合わせると金額が合いませんでした。ゲートが止めたため資料は作られず、代わりに利用者への確認事項が1つ増えました。
2件目は、その月に初めて出てきた2つの勘定科目です。照合に使う対応表にその科目がなく、独立照合が不合格になって資料が作られませんでした。対応表を更新して再実行し、全項目合格になりました。
どちらも、間違った数字の資料が利用者に届く代わりに、確認と小さな改修が発生した形です。毎月必ず全部の資料が出ることより、出たものは信用できることのほうが、運用の総コストは下がります。
全部の検査を通っても検出できないものが残ります。代表は、列の構成は同じで値の意味だけが変わる変更です。報告通貨の切り替えや、コードの採番ルールの変更がこれに当たります。列の位置も型も変わらないため全部の検査が合格し、金額の桁だけが静かに変わります。
列そのものがずれる変更なら、突合が大量に不一致になるので検出できます。検出できないのは、機械から見て正常なデータが、意味だけ別物になっている場合です。この範囲は、データを受け取る時点の人の確認に残ります。
線引きを先に文書にしておくと、利用者に何を約束できるかが決まります。実際の月次資料エンジンでは、この限界があるため、利用手順書に「間違った数字の資料がお手元に渡ることはありません」とは書いていません。書けるのは、検査した範囲でこう止まる、という事実だけです。約束を検査の範囲より広げた瞬間、仕組み全体の信頼が落ちます。
自動生成を外注・導入するとき、見積もりを比べる前に確認するのは次の6点です。
これが仕様にない自動生成は、速さを約束していても正しさは約束していません。完了基準を先に数字で置き、同じ物差しで測り直す設計は、LLMの精度評価は「評価セット」で決まると同じ構造です。導入後にこの検査を回し続ける体制の作り方はAIエージェントの運用・保守にあります。
まず、いま人が作っている資料について、完成品が正しいことを何で確かめているかを聞いてください。答えが「担当者が目で見て確認している」なら、自動化で置き換わるのは計算だけで、検算は新しく設計する必要があります。この3点を組み込んだ実例は管理会計の月次資料づくりを決定論エンジンへにあります。自社の帳票でどこまで検査を機械化できるかは、相談からご連絡ください。
関連記事: 発注明細の費目分類のやり方/LLMの精度評価は「評価セット」で決まる/AIエージェントは作って終わりではない
国産大手ERPベンダーで新卒からERPのエンタープライズ営業・プリセールス・導入コンサル、外資系SaaSでパートナーセールス部門の立ち上げ、国内大手放送局で新規事業開発(通販カタログ事業)、AIスタートアップ2社でビジネスサイドの要職を歴任。2024年10月から生成AIを自ら実装し、2025年にゴムマリ株式会社を設立。
現在は自らAIエージェントを実装するFDE。評価セット設計・専門家監修・Go/No-Go判定、CRM・会計・社内DBとの統合、減った時間の実測まで一貫します。要件から、運用まで——AIエージェントが、現場で成果を出す仕組みを。
FAQ
検算の中身より先に、検算の結果が出力を止めるかを確認してください。資料を保存してから検算する作りでは、不合格でも正式なファイル名の資料がフォルダに残ります。運用する人はファイルの存在を見て完成と判断するため、画面に出た不一致の表示は届きません。
一時的なファイル名で書き出し、いったん閉じて読み直してから検算し、合格したものだけを正式な名前に改名します。不合格なら一時ファイルを削除して異常終了します。これで、その名前の資料が存在すること自体が検算に通った証明になります。
正常なデータではなく、壊したデータを与えて止まるかを確かめるテストです。数式をエラー値に置き換える、元データにない値を様式に書き込む、ファイル名の月と中身の月をずらすといった壊し方を用意します。検査を外した版に同じ注入を当てて素通りすることまで見せられれば、その検査が実際に出力を止めていると言えます。
実装した本人以外が、元データから別実装で同じ資料を作れるなら可能です。難しいのは人の手配より独立性のほうで、同じ読み取り前提を共有していると本体と照合側が同時に外れます。実装者が自分の結果を見直す作業は、見直しであって照合ではありません。
原因が解消するまで出ません。実際の月次資料エンジンでは、運用初月に元データ側の後発計上と、新規に出てきた勘定科目の2件でゲートが働き、いずれも資料は作られませんでした。間違った数字の資料が配られる代わりに、確認と小さな改修が発生する形です。
なりません。列の構成が同じで値の意味だけが変わる変更、たとえば報告通貨の切り替えやコードの採番ルールの変更は、全部の検査を合格したまま金額だけを変えます。この範囲はデータを受け取る時点の人の確認に残るため、検査していない範囲を先に文書化しておきます。