概要
- IRSが新しい Tax Withholding Estimator (TWE) をリリース
- TWEは オープンソース で、初めて 一般からの貢献 を受け入れ
- XMLによる宣言的な仕様 で税計算ロジックを記述
- Fact Graph エンジンを利用し、計算の透明性と追跡性を実現
- JSONよりもXMLが適している理由 を解説
IRS新Tax Withholding Estimator (TWE)の概要
- 2026年3月13日、IRSが新しい Tax Withholding Estimator (TWE) を発表
- TWEは 無料かつオープンソース、初めて一般からのコントリビューションも歓迎
- 利用者は 収入や控除額 などを入力し、年末の納税額を推定・給与天引き額を調整可能
- TWE開発を通じて得られた パブリックセクターソフトウェア開発の知見 の共有
- 本記事は 個人の立場 で執筆、公式見解ではない点を明記
XMLの再評価とFact Graphの仕組み
- XML は古臭い・冗長との評価が多いが、 宣言的な仕様言語 として現代でも有用
- Fact Graph は、税法を Fact Dictionary(事実辞書) としてXMLで記述し、依存関係をもとに計算
- 例:/totalOwedは/totalTaxから/totalPaymentsを引いた値として定義
- XML例:
<Fact path="/totalOwed"> <Derived> <Subtract> <Minuend> <Dependency path="/totalTax"/> </Minuend> <Subtrahends> <Dependency path="/totalPayments"/> </Subtrahends> </Subtract> </Derived> </Fact>
- XML例:
- 冗長だが構造が明快 で、数式の意味を直感的に把握可能
具体的なXML定義例とその意義
- リファンダブルクレジット (還付可能税額控除)は複数の控除を合算
- ノンリファンダブルクレジット は税額をゼロまで減らせるが、マイナスにはならない
- <GreaterOf>演算子で「ゼロまたは差額の大きい方」を選択
- 入力値 は<Writable>で定義、金額なら<Dollar/>, 真偽値なら<Boolean/>を指定
- Fact同士の依存関係 により、最終的な税額を導出
宣言的仕様のメリット
- JavaScriptなどの 命令型言語 では計算過程や中間値が失われやすい
- 例:const totalOwed = totalTax - totalPayments
- 宣言的なFact Graph では「何をどう計算するか」のみ記述し、計算順序や実装詳細を意識しない
- 監査性・追跡性 が高く、「なぜその値になったか」を容易に説明・検証可能
- 例:TurboTaxの“Tax Knowledge Graph”も同様の思想だが、IRSのFact Graphは オープンソースかつパブリックドメイン
- 複雑な税制ロジック の透明性・拡張性を確保
XMLとJSONの比較
- 計算ロジックの 宣言的表現 にはXMLが適している
- JSONは データ転送や設定ファイル には良いが、複雑なDSL(ドメイン固有言語)には不向き
- XMLは 階層構造・拡張性 に優れ、Fact Graphのような複雑な依存関係を扱う用途に最適
- JSONによる同等の記述は 冗長で可読性が低下 しやすい
まとめ:パブリックセクター開発におけるXMLの意義
- 税制のような複雑なビジネスロジック は宣言的DSLで明示的に表現すべき
- XMLベースのFact Graph は、拡張性・透明性・監査性が高い
- オープンソース化 により、誰でも仕様を確認・拡張・修正可能
- 今後の 公共ITシステム開発 において、XMLと宣言的設計思想の活用が期待