開発アクティブ
法人税XTX生成エンジン 開発ロードマップ
背景
税理士事務所の業務において、会計帳簿作成よりも電子申告データ作成が最大のボトルネックであることが判明。
- 会計ソフトからの出力 → 手入力で申告書作成 → e-Tax送信
- この「手入力」部分を自動化することで大幅な効率化が可能
XTX形式調査 および 技術仕様調査 の結果、XTX生成までは実装可能と判断。
ゴール
会計データ → [XTX生成エンジン] → XTXファイル → e-Taxソフトで署名・送信
電子署名・直接送信はe-Taxソフトに委譲し、XTX生成に集中する。
Phase 1: 基盤構築
1.1 XSDスキーマ解析ツール
目的: 国税庁のXSDファイルからTypeScript型定義を自動生成
成果物:
- XSDパーサー(TypeScript)
- 型定義生成スクリプト
- 生成された型定義ファイル(
types/etax/hojin.ts等)
対象スキーマ:
| スキーマ | 説明 | ファイル数 |
|---|---|---|
| HOA110 | 別表1(各事業年度の所得) | 14バージョン |
| HOA140 | 別表4(所得金額計算) | 複数 |
| HOA150 | 別表5(利益積立金等) | 複数 |
| General | 共通型定義 | 1 |
1.2 入力データ構造設計
目的: 会計ソフトからの入力を受け付ける統一的なデータ構造
interface HoujinzeiInput {
// 基本情報
company: {
name: string;
nameKana: string;
address: string;
representative: string;
fiscalYearStart: Date;
fiscalYearEnd: Date;
capital: number;
taxOfficeCode: string;
};
// 決算データ
financials: {
revenue: number; // 売上高
costOfSales: number; // 売上原価
grossProfit: number; // 売上総利益
sgaExpenses: number; // 販管費
operatingIncome: number; // 営業利益
ordinaryIncome: number; // 経常利益
netIncome: number; // 当期純利益
};
// 税務調整項目
taxAdjustments: TaxAdjustment[];
// 前期データ(繰越欠損金等)
previousYear?: PreviousYearData;
}
Phase 2: 計算エンジン
2.1 別表4 - 所得金額の計算
入力: 決算書の当期純利益 + 税務調整項目 出力: 課税所得金額
計算ロジック:
当期純利益
+ 加算項目(損金不算入)
- 交際費等の損金不算入額
- 役員給与の損金不算入額
- 減価償却超過額
- 引当金繰入超過額
- ...
- 減算項目(益金不算入)
- 受取配当等の益金不算入額
- ...
= 所得金額(または欠損金額)
2.2 別表5(1) - 利益積立金額の計算
入力: 前期末利益積立金 + 当期の増減 出力: 期末利益積立金額
2.3 別表5(2) - 租税公課の納付状況
入力: 法人税・住民税・事業税の納付データ 出力: 租税公課明細
2.4 別表1 - 法人税額の計算
入力: 別表4の所得金額 出力: 納付すべき法人税額
計算ロジック:
所得金額 × 税率 = 法人税額
- 税額控除
- 中間納付額
= 差引確定法人税額
2.5 別表間の連動
別表4 → 所得金額 → 別表1(1)欄
別表5(1) → 利益積立金期末残高 → 別表4検算
別表5(2) → 租税公課 → 別表4加減算
別表1 → 確定法人税額 → 別表5(2)
Phase 3: XTX出力
3.1 XML生成モジュール
入力: 計算済みの各別表データ 出力: e-Taxソフトで読み込み可能なXTXファイル
function generateXTX(data: {
beppyo1: Beppyo1Data;
beppyo4: Beppyo4Data;
beppyo5_1: Beppyo5_1Data;
beppyo5_2: Beppyo5_2Data;
}): string {
// XMLBuilder使用
// スキーマバリデーション
// UTF-8エンコーディング
return xtxContent;
}
3.2 バリデーション
- XSDスキーマによる構造検証
- 必須項目チェック
- 計算整合性チェック(別表間の連動確認)
3.3 e-Taxソフト連携テスト
- 生成したXTXをe-Taxソフトで読み込み
- エラーがないことを確認
- 表示内容が正しいことを確認
成功基準
Phase 1完了基準
- XSDから型定義が自動生成できる
- 入力データ構造が確定している
- サンプルデータで型チェックが通る
Phase 2完了基準
- 別表4の計算が正しく動作する
- 別表1の計算が正しく動作する
- 別表間の連動が正しく動作する
- 単体テストが全てパスする
Phase 3完了基準
- XTXファイルが生成できる
- e-Taxソフトでエラーなく読み込める
- 3件以上の実データでテスト完了
技術スタック
| 用途 | 技術 |
|---|---|
| 言語 | TypeScript |
| XMLパース | fast-xml-parser |
| XML生成 | fast-xml-parser (XMLBuilder) |
| スキーマ検証 | libxmljs2 または xsd-schema-validator |
| テスト | Vitest |
| 型生成 | 自作スクリプト(XSD → TypeScript) |
リスクと対策
| リスク | 影響 | 対策 |
|---|---|---|
| スキーマの年次更新 | 毎年メンテナンス必要 | 型生成を自動化し、更新作業を最小化 |
| 計算ロジックの誤り | 税額が間違う | 実際の申告データと突合テスト |
| e-Taxソフトとの互換性 | 読み込みエラー | 早期に実機テスト実施 |
| eLTAX未対応 | 地方税は手動 | Phase 4で対応検討 |
関連ドキュメント
次のアクション
- 今すぐ: Phase 1.1 XSDパーサーの実装開始
- その後: 別表4の計算ロジックをTypeScriptで実装
- 検証: サンプルデータで計算結果を検証