開発完了
XTX生成 実装可能性分析
結論: 実装可能
e-Tax XMLスキーマを解析した結果、XTX生成エンジンの実装は技術的に可能と判断。
1. スキーマ解析結果
1.1 ファイル構成
19XMLスキーマ/
├── general/ # 共通型定義
│ ├── General.xsd # 基本データ型
│ ├── zeimoku.xsd # 税目コード
│ └── zeimusho.xsd # 税務署コード
├── hojin/ # 法人税(7,153ファイル)
│ ├── HOA110-*.xsd # 別表1(各事業年度の所得)
│ ├── HOA120-*.xsd # 別表2系
│ └── ...
├── shohi/ # 消費税
├── gensen/ # 源泉所得税
└── ...
1.2 スキーマの特徴
| 項目 | 内容 |
|---|---|
| 名前空間 | http://xml.e-tax.nta.go.jp/XSD/hojin |
| エンコーディング | UTF-8 |
| 要素命名規則 | AAA00010 のようなコード形式 |
| 項目名 | xsd:appinfo で日本語定義 |
| バージョン管理 | 属性 VR で管理 |
1.3 データ型(General.xsd)
| 型名 | 説明 | 内部型 |
|---|---|---|
kingaku | 金額 | xsd:long(15桁まで) |
gaika | 外貨金額 | xsd:decimal |
name | 名前 | xsd:string |
address | 住所 | xsd:string |
yymmdd | 日付 | 年月日形式 |
kubun | 区分コード | 列挙型 |
2. 別表1(HOA110)の構造
<HOA110 VR="1.0" softNM="..." sakuseiNM="..." sakuseiDay="...">
<AAA00000> <!-- 納税者等部 -->
<AAA00010>...</AAA00010> <!-- 提出年月日 -->
<AAA00020>...</AAA00020> <!-- 提出先税務署 -->
<AAA00070>...</AAA00070> <!-- 法人名 -->
...
</AAA00000>
<AAB00000> <!-- 法人税額の計算 -->
<AAB00010>...</AAB00010> <!-- 所得金額又は欠損金額 -->
<AAB00020>...</AAB00020> <!-- 法人税額 -->
...
</AAB00000>
</HOA110>
主要項目マッピング
| コード | 項目名 | 別表での位置 |
|---|---|---|
AAA00010 | 提出年月日 | ヘッダー |
AAA00070 | 法人名 | ヘッダー |
AAB00010 | 所得金額又は欠損金額 | (1) |
AAB00020 | 法人税額 | (2) |
AAB00040 | 差引法人税額 | (4) |
AAB00170 | 差引所得に対する法人税額 | (12) |
AAB00190 | 差引確定法人税額 | (14) |
3. 実装アーキテクチャ
3.1 推奨構成
┌─────────────────────────────────────────────────────┐
│ 入力層 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 会計ソフト │ │ CSV入力 │ │ 手入力 │ │
│ │ API │ │ │ │ UI │ │
│ └─────┬────┘ └─────┬────┘ └─────┬────┘ │
│ └──────────────┼──────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 統一入力データ構造(TypeScript型) │ │
│ │ interface HoujinzeiInput { │ │
│ │ company: CompanyInfo; │ │
│ │ fiscalYear: FiscalYear; │ │
│ │ financials: FinancialData; │ │
│ │ taxAdjustments: TaxAdjustment[]; │ │
│ │ } │ │
│ └─────────────────────┬───────────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 計算エンジン │ │
│ │ - 別表4: 所得金額計算 │ │
│ │ - 別表5-1: 利益積立金額計算 │ │
│ │ - 別表1: 法人税額計算 │ │
│ └─────────────────────┬───────────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 出力生成 │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ XTX生成 │ │ PDF生成 │ │ CSV出力 │ │ │
│ │ │(e-Tax用) │ │(印刷用) │ │(確認用) │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
3.2 XTX生成モジュール
// スキーマから自動生成する型定義
interface HOA110 {
VR: "1.0";
AAA00000: { // 納税者等部
AAA00010?: string; // 提出年月日
AAA00020?: ZeimushoCode; // 提出先税務署
AAA00070?: string; // 法人名
// ...
};
AAB00000: { // 法人税額の計算
AAB00010?: number; // 所得金額又は欠損金額
AAB00020?: number; // 法人税額
// ...
};
}
// XTX生成関数
function generateXTX(data: HOA110): string {
const builder = new XMLBuilder({
declaration: { encoding: 'UTF-8', standalone: 'no' },
format: true
});
return builder.build({ HOA110: data });
}
4. 実装工数見積もり
4.1 MVP(別表1, 4, 5-1, 5-2, 15)
| タスク | 見積もり |
|---|---|
| XSDからTypeScript型生成ツール | 1週間 |
| 計算エンジン(5帳票) | 2週間 |
| XTX生成モジュール | 1週間 |
| バリデーション | 1週間 |
| テスト・検証 | 1週間 |
| 合計 | 約6週間 |
4.2 制約事項
- 電子署名は含まない - e-Taxソフトで実施
- 送信機能は含まない - e-Taxソフト経由
- eLTAXは別途対応 - 仕様開示申請が必要
5. 次のアクション
- XSDパーサーの実装(TypeScript型自動生成)
- 別表4の計算ロジック実装
- 別表1の計算ロジック実装
- XTX生成モジュール実装
- e-Taxソフトでの読み込みテスト
参考: スキーマファイル格納場所
apps/web/content/2026-01-10/etax-specs/xsd/19XMLスキーマ/
├── hojin/HOA110-*.xsd # 別表1
├── hojin/HOA140-*.xsd # 別表4
├── hojin/HOA150-*.xsd # 別表5
└── general/General.xsd # 共通型定義