株主資本等変動計算書の変動事由を仕訳の形から自動で決めるChrome拡張を作った
決算書の中で、この表だけが手入力だった
法人の決算書を作ると、貸借対照表と損益計算書は仕訳から自動で出る。株主資本等変動計算書だけが違う。マネーフォワード クラウド会計(以下 MF)の決算書の画面を開くと、当期首残高と当期純利益と当期末残高は灰色のセルで自動で埋まり、その間にある「新株の発行」「剰余金の配当」「利益準備金の積立て」の行だけが白い入力欄になっている。期末から期首を引いた差額と入力の合計が合わないと、列の下に「金額が不一致」と赤く出る。
期首と期末と当期純利益はソフトが埋め、変動事由の行だけが空いたまま「金額が不一致」になる。仕訳に事由の属性が無いので、ソフト側では差額の置き場所を決められない。
これは MF の手抜きではない。freee も弥生も、公式のヘルプで同じことを書いている。期首と期末と当期純利益は自動で転記するが、変動事由は連携しないので手入力してくれ、と。3社が揃って同じ作りなのには理由がある。仕訳の行が持つ属性は、科目、補助科目、部門、税区分、取引先、金額、摘要、メモ、タグで、その中に「この行はどの変動事由か」という項目が無い。仕訳を集計しても、差額をどの行に置くかは決まらない。
毎年、決算のたびにここへ数字を手で入れていた。配当を決議した年は配当額と準備金の積立額、増資した年は資本金と資本準備金への払込額。数は少ないが、貸借対照表と突き合わせながら入れるので、決算書の中でここだけ作業の質が違う。
事由は仕訳の相手科目に書いてある
手元の検証用の法人に、6月の配当決議の仕訳が1本ある。借方が繰越利益剰余金695,200円、貸方が未払配当金632,000円と利益準備金63,200円の、片側だけの行が3つ並ぶ複合仕訳だ。

判定に使うのは、この3行の科目と金額と貸借だけ。付いているタグ「CF教材」は見ない。
この仕訳を見れば、人は迷わない。未払配当金が立っているから配当で、利益準備金が増えているから積立てだ。つまり事由は仕訳の中に無いのではなく、相手科目の組み合わせに書いてある。純資産の科目がどう動き、相手が何かを見れば、配当も増資も自己株式の取得も区別できる。決まらないのは、繰越利益剰余金と預金のような「純資産と非純資産」の組み合わせで配当以外のもの、たとえば前期損益修正くらいだ。
だから補助科目は要らない。補助科目で事由を持たせる案も考えたが、補助科目の残高は貸借対照表と推移表と次年度の繰越に載ってしまう。年度末に振り戻さないかぎり事由別の残高が積み上がり、期首残高の意味が壊れる。事由は取引の属性であって、科目の属性ではない。
要るのは仕訳の持ち方の約束で、3つに絞った。配当は未払配当金を経由すること。1本の仕訳を1つの「型」に収めること。型で決まらない事由は仕訳のタグで明示すること。この3つを守れば、変動事由の行は仕訳から自動で作れる。
科目の「側」と「決算書科目」はどこから来るか
仕訳の行を「純資産側」と「相手側」に分けるには、その行の科目が純資産の科目かどうかを知る必要がある。この情報は、MF の各種設定にある勘定科目の画面と同じ科目マスタから取る。

勘定科目の画面は、勘定科目を「決算書科目」でまとめて並べている。この決算書科目が、株主資本等変動計算書の列と同じ粒度になっている。
拡張は画面を読むのではなく、この画面の元になっている内部の API を読む。返ってくるのは決算書科目ごとにまとめた勘定科目の一覧で、1科目につき次の4つが入っている。
{ "categoryName": "資本金",
"items": [{ "label": "資本金", "style": "capital", "side": "cr", "id": "o0oEg…" }] }
{ "categoryName": "その他流動負債",
"items": [{ "label": "未払配当金", "style": "liability", "side": "cr", "id": "omXP7…" }] }
{ "categoryName": "現金及び預金",
"items": [{ "label": "普通預金", "style": "asset", "side": "dr", "id": "GWYj1…" }] }
- label:勘定科目名。「その他の資本剰余金」のように画面と同じ表記
- categoryName:決算書科目。「その他資本剰余金」「積立金等」のように、勘定科目名と少し違うことがある
- style:貸借対照表と損益計算書のどの部に属するか。資産、負債、純資産、収益、費用の5つで、純資産は
capital - side:借方科目か貸方科目か。資本金は貸方科目、自己株式は借方科目
style が capital の科目の行を純資産側、それ以外を相手側に分ける。純資産側は決算書科目(categoryName)と増減で見る。増減は科目の本来の側で数えるので、資本金は貸方に立てば「増」、自己株式は借方に立てば「増」になる。相手側は決算書科目か勘定科目名で見る。預金は「現金及び預金」という決算書科目で、未払配当金と未払金は科目名で照らす。決算書科目で見るのは、事業者ごとに勘定科目の名前や数が違っても効くようにするためだ。科目の id は事業者ごとに違うので、型の表には書かない。
型の表と一致の条件
事由は、仕訳1本の全行をこの形に直したものを、型の表に照らして決める。型は「純資産側の行のグループ」と「相手側の行のグループ」の組で、各グループに入れる行の条件と最低本数を持つ。
一致の条件は2つ。仕訳の全行がどこかのグループに入ること、各グループが最低本数を満たすこと。余る行が1本でもあれば、その型には一致しない。配当の相手が未払配当金ではなく預金と源泉所得税の預り金だった場合、預金と預り金の行に入るグループが無いので、配当の型は通らない。
型は15本ある。読み方は、「1本以上」がそのグループに少なくとも1本要ること、「任意」が無くてもよいこと、相手側が「無し」の型は相手側に行が1本でもあれば一致しないこと、の3つだ。
| 型 | 純資産側の行 | 相手側の行 | 配分 |
|---|---|---|---|
| 新株の発行 | 資本金 増 か 資本準備金 増 か 新株式申込証拠金 減(1本以上) | 現金及び預金(決算書科目) 借方(任意) | 各行をそのまま「新株の発行」に |
| 新株式申込証拠金の払込 | 新株式申込証拠金 増(1本以上) | 現金及び預金(決算書科目) 借方(1本以上) | 各行をそのまま「新株式申込証拠金の払込」に |
| 剰余金の配当 | 繰越利益剰余金 減 か その他資本剰余金 減(1本以上) | 未払配当金(科目名) 貸方(1本以上) | 各行をそのまま「剰余金の配当」に |
| 剰余金の配当(準備金の積立てを伴う) | 繰越利益剰余金 減 か その他資本剰余金 減(1本以上) + 利益準備金 増 か 資本準備金 増(1本以上) | 未払配当金(科目名) 貸方(1本以上) | 準備金の行を「科目名の積立て」の対にし、残りを「剰余金の配当」に |
| 利益準備金の積立て | 繰越利益剰余金 減(1本以上) + 利益準備金 増(1本以上) | 無し | 準備金の行を繰越利益剰余金との対に(残りは0) |
| 利益準備金の取崩し | 繰越利益剰余金 増(1本以上) + 利益準備金 減(1本以上) | 無し | 同上 |
| 積立金の積立て | 繰越利益剰余金 減(1本以上) + 積立金等 増(1本以上) | 無し | 同上(事由名は科目名から「別途積立金の積立て」のように作る) |
| 積立金の取崩し | 繰越利益剰余金 増(1本以上) + 積立金等 減(1本以上) | 無し | 同上 |
| 準備金から資本金への振替 | 資本準備金 減 か 利益準備金 減(1本以上) + 資本金 増(1本以上) | 無し | 各行をそのまま「準備金から資本金への振替」に |
| 資本金から剰余金への振替 | 資本金 減(1本以上) + その他資本剰余金 増 か 資本準備金 増(1本以上) | 無し | 各行をそのまま「資本金から剰余金への振替」に |
| 資本準備金から剰余金への振替 | 資本準備金 減(1本以上) + その他資本剰余金 増(1本以上) | 無し | 各行をそのまま「資本準備金から剰余金への振替」に |
| 欠損填補 | その他資本剰余金 減(1本以上) + 繰越利益剰余金 増(1本以上) | 無し | 各行をそのまま「欠損填補」に |
| 自己株式の取得 | 自己株式 増(1本以上) | 現金及び預金(決算書科目) 貸方 か 未払金(科目名) 貸方(1本以上) | 各行をそのまま「自己株式の取得」に |
| 自己株式の処分 | 自己株式 減(1本以上) + その他資本剰余金 増 か その他資本剰余金 減(任意) | 現金及び預金(決算書科目) 借方(1本以上) | 各行をそのまま「自己株式の処分」に |
| 自己株式の消却 | 自己株式 減(1本以上) + その他資本剰余金 減 か 繰越利益剰余金 減(1本以上) | 無し | 各行をそのまま「自己株式の消却」に |
15本すべてと照らし、一致がちょうど1つのときだけ確定する。0本なら型に無い仕訳、2本以上なら型が絞れない仕訳で、どちらも「要確認」にして金額を割り当てない。推定はしない。配当の仕訳は「剰余金の配当(準備金の積立てを伴う)」だけに一致する。「剰余金の配当」は利益準備金の行を許さず、「利益準備金の積立て」は相手側の行を許さないからだ。
型の表は JSON にして拡張に同梱し、仕訳を書く側のリポジトリにも同じものを置いた。事業者が増えて新しい形の仕訳が出たら、表に1本足してテストを添える。
配分は「そのまま」か「対にする」か
一致した型が決まれば、次は金額の配分だ。やり方は2通りしかない。
大半の型は「そのまま」で、純資産側の各行を、その行の科目の列にその型の事由で載せる。増資なら資本金の列と資本準備金の列に、それぞれの払込額が「新株の発行」として入る。「対にする」のは準備金や積立金の積立てと取崩しだけで、準備金の行の金額を、繰越利益剰余金の列にも逆符号で載せる。配当を伴う型では、繰越利益剰余金の減少から対にした分を引いた残りを配当にし、その残りが未払配当金の額と一致することを確かめる。合わなければ要確認だ。
この配分の規則は、計画書を Codex にレビューさせて作り直したものだ。最初の案は、純資産どうしの行を先に相殺し、残った行を相手科目で振り分ける、というものだった。配当の仕訳では正しく分かれる。崩れる例を Codex が出した。自己株式100,000円を80,000円で処分した仕訳は、借方が預金80,000円とその他の資本剰余金20,000円、貸方が自己株式100,000円になる。処分差損はその他の資本剰余金から減らすからだ。ここで行を対にして消すと、その他の資本剰余金の減少20,000円と自己株式の減少20,000円が「自己株式の消却」に見え、残りの80,000円だけが「処分」になる。本当は全体が処分だ。
金額の配分と事由の判定は別の問題だった。事由は仕訳全体の形で決まる。判定を型の表との照合にしたのはこの指摘からで、処分の型には、処分差額としてその他の資本剰余金の増減が同じ仕訳に並ぶことを織り込んである。この例はテストに残した。
タグは型を上書きしない
型で決まらない事由に付けるタグ「SS:事由名」も、同じレビューで扱いを直した。最初はタグを型より優先する案だった。すると配当の仕訳に「SS:剰余金の配当」を付けた人がいたとき、積立ての63,200円まで配当になる。タグは1本の仕訳に1事由しか表せない。
タグが効くのは、型に一致しなかったときだけだ。前期損益修正のように繰越利益剰余金と預金が相手になる仕訳は、どの型にも一致しないので、タグ「SS:前期損益修正」を付ければその事由で確定する。型に一致していてタグと事由が食い違えば要確認、SS のタグが2つ付いていても要確認にする。書く側の約束は「型で決まらない仕訳にだけ、1本1事由でタグを付ける」で済む。
推移表の隣に3つ目のタブ
置き場所は年次推移表にした。貸借対照表の純資産の部に、株主資本等変動計算書に要る期末残高が年度ごとに並んでいて、繰越利益剰余金の下には「(うち当期純利益)」の行まである。期首は前の年度の列の期末だ。期首と期末と当期純利益は、この表を読めば6年度ぶん揃う。
期首と期末と当期純利益は推移表から、事由は仕訳から取り、計算は純粋関数に閉じる。残差が0でないところだけ人が見る。
ひとつ罠があった。繰越利益剰余金と(うち当期純利益)の2行は、勘定科目の行に見えて科目のidも元帳へのリンクも持っていない。表示額が元帳の残高に当期純利益を足したもので、ソフトが仕訳の無い当期純利益を足して見せている行だからだ。既存の読み取りはidの無い行を捨てていたので、この2行だけはラベルの文字列で拾うことにした。
最初の版は仕訳を読まない。貸借対照表のタブと損益計算書のタブの隣に「株主資本等変動計算書」を足し、科目ごとに期首、当期純利益、期末を並べ、期末から期首と当期純利益を引いた残りを「事由未確定」として赤く出す。利益準備金や積立金の増減が繰越利益剰余金の逆向きの差額で説明できるときだけ「積立て」の対にして、点線の「推定」を付けた。
これだけでも見えるものはある。2022年度の繰越利益剰余金が当期純利益より29,091円少ない。2025年度に自己株式が200,000円増え、その他の資本剰余金が120,000円増えている。差額は「説明のつかない変動がある」とは教えてくれるが、説明はしてくれない。
タブを開いたとき、拡張がすること
次の版で当期の仕訳を読ませた。純資産科目は12科目あるが、年に動く仕訳は数本しかない。全仕訳を舐めるのではなく、純資産科目ごとに元帳のAPIで取引Noを集め、その番号だけ仕訳のAPIで全行を取る。開始仕訳は元帳に出ないので、自然に外れる。
読むのは科目マスタと元帳と仕訳だけで、判定は拡張の中で閉じる。外へ書くのは決算書への書き戻しだけで、それも差分を見せてから1件ずつ送る。
タブを開くと、検証用の2026年度で仕訳が1本読まれ、配当の仕訳が「剰余金の配当 −632,000」と「利益準備金の積立て +63,200 と −63,200」に分かれた。利益準備金と繰越利益剰余金の残差はどちらも0になり、事由未確定は10件から9件に減った。右側のペインには、仕訳ごとにどの型に一致したかと、要確認ならその理由が出る。

仕訳ごとに、一致した型と、分かれた先の科目と事由と金額が並ぶ。開始仕訳は「対象外」として除かれる。
同じ事由でも、仕訳で確定した年度と差額から推定した年度は行を分けた。1行に混ぜると、推定の印がどの年度のものか分からなくなる。
決算書へ書き戻す口は画面のフォームしかない
表示だけなら読み取り専用で済むが、決算書に手で写すなら意味が半分だ。手元にある公式APIの整理を見ると、仕訳と科目と帳票は取れても、株主資本等変動計算書を書く口が無い。決算書の画面は、セルの1つ1つが小さなフォームで、入力欄から離れると値を送り、返ってきた表のHTMLで全体を差し替える作りだった。変動事由の行を足すのも別のフォームで、JSONの口は無い。
拡張の書き戻しも、この画面と同じ送り方にした。ボタンを押すと決算書の表を読み、事由と科目ごとに「いまの値」と「書く値」を並べて、新規か上書きか同じかを示す。上書きはチェックを入れないと送らない。実行すると、無い事由の行を先に作り、値を1件ずつ送って、応答の表でidを埋めながら進む。送り終えたら表を読み直し、「金額が不一致」が残っていないかを示す。
検証用の2026年度に3件を送った。決算書の画面を開き直すと、剰余金の配当に −632,000、利益準備金の積立てに 63,200 と −63,200 が入り、出ていた「金額が不一致」がすべて消えていた。

拡張から送った3件が入り、当期変動額合計の行から「金額が不一致」が消えた。期首と期末と当期純利益は MF が自動で埋めたままで触っていない。
送る前に、もう1つ確かめる。MF では年度がセッションに紐付いていて、別のタブで年度を切り替えると、このタブの決算書も別の年度になる。送る直前に現在の年度を取り直し、タブを開いたときと違えば止める。
過年度は消込用に溜めた仕訳を使い回す
過年度の仕訳にも、同じセッションの壁がある。年度の指定をどう渡しても返るのは今の年度のデータで、過年度を読むには年度を切り替えるしかない。この壁は元帳の消込の紐付けで一度越えていて、切り替えて全仕訳を取り、ローカルに溜めて、必ず元へ戻す作りがある。溜めた仕訳には純資産科目の行も入っているので、株主資本等変動計算書はそれを使い回せばよい。保存の形に、開始仕訳を除くための種別とタグの2項目を足した。
5年度ぶんを取った。2023年度と2024年度は、差額から推定していた積立ての額がそのまま当たり、残りが配当だった。2024年度には投資家からの増資の仕訳もあり、資本金と資本準備金に500,000円ずつの「新株の発行」で確定した。2025年度は自己株式の取得500,000円と処分300,000円で、処分差益の120,000円がその他の資本剰余金に載っていた。差額だけでは「取得だけか、取得と処分の組み合わせか」が決まらなかった年度だ。

5年度ぶんの仕訳を読んだあとの表。事由未確定は2022年度の繰越利益剰余金に残る1件だけになった。
残ったその1件は −29,091円だった。2022年度の純資産の仕訳は新株の発行の1本で、開始仕訳が無い。MF の決算書の2022年度を開くと、期首残高が全列0になっている。2021年度の期末残高が2022年度に繰り越されていない。配当ではなく、繰越漏れだった。差額法が「説明のつかない変動」と指した1件は、仕訳を読んだら帳簿の不備として残った。
年度が勝手に変わる
過年度を取る前に、一度つまずいた。当期の仕訳を読ませたら0本になり、直前まで出ていた配当の仕訳が消えた。現在の年度を取ると2022年度で、タブを開いたときの2026年度ではなかった。
同じ検証用の法人で、別のセッションがAPIで仕訳を消して入れ直す実験を回していた。年度ごとに全仕訳の更新時刻が同じ時刻で揃っていて、年度を切り替えながら進めていたことが分かる。私が2026年度へ切り替えたことが、そちらの処理に影響した可能性もある。セッションはタブごとではなく、ログインした人ごとに1つしかない。書き込みと年度切替の前に現在の年度を照合する、という先の作りは、この事故から入れた。
もう1つ、拡張のリロードで空振りした。ファイルを直してリロードの合図を送っても、拡張のコンテキストが無効になった古いタブからの合図は黙って捨てられる。直前のリロード後に開いたタブから送らないと効かない。「直したのに変わらない」ときは、判定より先にいま動いている版を疑う、という前回の学びの変奏だった。
学び
- 変動事由は仕訳に無いのではなく、相手科目の組み合わせに書いてある。純資産の科目と相手科目の組で決まらないのは、前期損益修正のような例外だけだ
- 科目の「側」と「決算書科目」は、勘定科目の設定画面と同じ科目マスタが持っている。科目の id や名前ではなく決算書科目で照らせば、事業者が変わっても型の表はそのまま効く
- 事由の判定は行を対にして消すのではなく、仕訳全体の形で行う。型を先に網羅しておき、一致がちょうど1つのものだけを機械的に決算書へ載せる。残差が0になることは必要条件でしかなく、誤分類でも0になる
- 仕訳を書く側の約束は3つ。配当は未払配当金を経由する。1本の仕訳を1つの型に収める。型に無い事由はタグで1本1事由
- 差額法は「説明のつかない変動」の検出器として残す価値がある。仕訳を読んで最後に残った1件が、繰越漏れだった
- 決算書を書く口が画面のフォームしかなくても、同じ送り方をすれば拡張から書ける。ただし年度はセッションが持つので、送る直前に照合する