Skip to content

年度バージョニング戦略

税制改正に対応するため、計算ロジック・パラメータの両面で年度バージョニングを実施する。

→ データモデル: DM-802 TaxYearMaster

TaxYearMaster によるパラメータ外部化

年度ごとに変わりうる全パラメータを TaxYearMaster(→ DM-802)に集約し、計算ロジックからハードコードされた定数を排除する。

パラメータ区分変動頻度
所得税速算表税率区分・控除額(5%/10%/20%/23%/33%/40%)低(H27以降変更なし)
給与所得控除テーブル収入区分別の計算式、最低保障額(R6以前55万円/R7以降65万円)、上限195万円中(R7改正あり。物価スライド制導入でR9以降は毎年変動の可能性)
共通閾値 T扶養親族・同一生計配偶者の所得上限(R7: 58万円 / R8予定: 62万円)高(頻繁に改正)
基礎控除テーブル合計所得金額区分と控除額(R7: 本則58万円+加算額、9区分)高(物価スライド制、本則+租特法の二重構造)
配偶者特別控除テーブル配偶者の合計所得金額×本人の合計所得金額の2軸段階逓減テーブル
年齢境界16歳/19歳/23歳/70歳
復興特別所得税率2.1%(H25〜R19)低(R19で終了予定)
施行日R7の12/1施行のような年度途中施行への対応例外的

計算エンジンのインスタンス管理

年度ごとの計算エンジンは DI コンテナでファクトリ経由で管理する。

csharp
// 年度ごとの計算エンジンを生成するファクトリ
public interface ITaxCalculationEngineFactory
{
    ITaxCalculationEngine Create(int taxYear);
}

// 計算エンジンのインターフェース
public interface ITaxCalculationEngine
{
    TaxCalculationResult Calculate(TaxCalculationInput input);
    CategoryJudgmentResult JudgeCategories(
        TaxpayerFacts taxpayer,
        IReadOnlyList<FamilyMemberFacts> familyMembers);
}

// DI 登録(Presentation 層で実施)
services.AddSingleton<ITaxCalculationEngineFactory, TaxCalculationEngineFactory>();
// ファクトリ内部で年度に応じた TaxYearParameters をロードし、エンジンを生成・キャッシュ

年度途中施行への対応

R7(令和7年)の基礎控除見直し等は 12月1日に施行 される異例のケースであり、Tax Calculation Core は施行日パラメータを持つ。

シナリオ適用ルール
通常の年末調整(最終給与日が12/1以後)改正後の控除額・パラメータで計算
年途中退職等(最終給与日が11/30以前)改正前のパラメータで計算(改正後の適用を受けるには確定申告が必要)
「年始調整」(1月時点)全改正が施行済みのため、施行日の切り替えを意識する必要がない
csharp
// TaxYearParameters 内に施行日を保持
public record TaxYearParameters
{
    // ... 各種パラメータ
    public DateOnly EffectiveDate { get; init; }  // 施行日(R7: 2025-12-01)

    // 最終給与支払日との比較で適用パラメータを決定
    public TaxYearParameters ResolveForLastPayDate(DateOnly lastPayDate)
        => lastPayDate >= EffectiveDate
            ? this  // 改正後パラメータ
            : PreReformParameters;  // 改正前パラメータ
}

7年間の保持要件

法定保持期間(7年)に対応するため、過去年度の計算エンジンを維持する。

目的方式
過去データの表示保存済みの TaxCalculationResult(→ DM-501)をそのまま返却(再計算しない)
再年調当該年度の計算エンジンで全体再計算(事実データの訂正を反映)
計算エンジンの維持7年分の TaxYearParameters + 計算ロジックを保持。稼働頻度は低いが再年調のために必須

→ 確定後の不変性と再年調の設計方針: 確定後の不変性と再年調

改正ステージの管理

税制改正は段階的に確度が高まるため、各改正のステージを識別する必要がある。

ステージ確度意味
議論・検討中政府税調等で議論されているが具体的な改正案は未定
大綱決定中〜高与党大綱に盛り込まれた(国会審議で修正の可能性あり)
法案提出国会に法案が提出された
成立・公布確定法律として成立した
施行済み確定施行日を過ぎ、現行法として適用中

→ 税制改正の流れ: 税制改正の流れ → 大綱段階・未施行の改正: 今後の税制改正予定