知識マップ: 業務アプリの和暦・祝日・締め日処理 ── 改元に強い設計とJapaneseCalendar・営業日計算の実務

記事「業務アプリの和暦・祝日・締め日処理 ── 改元に強い設計とJapaneseCalendar・営業日計算の実務」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

日本の業務アプリに特有の和暦・祝日・締め日は、いずれも「あとから変わる仕様」であり、コードではなくデータと変換層に隔離して設計するべきである。和暦はJapaneseCalendarに変換を任せて内部は西暦で統一し、改元への追従はOS更新に依存する一方、自前の元号ハードコードや和暦文字列での保存は改元のたびに取り残される。祝日は春分・秋分の確定時期や法改正・特別措置法で変わるため計算式では判定できず、内閣府CSVを取り込む祝日マスタと更新運用で持つ。締め日計算はAddMonthsの月末丸め仕様を理解したうえで、前回結果への累積を避け、基準日とDateTime.DaysInMonthから都度計算することでずれを防げる。

和暦・祝日・締め日処理の知識マップJapaneseCalendarによる和暦変換、内閣府CSVを使う祝日マスタ運用、AddMonthsの丸め仕様を踏まえた締め日計算という3つの日本特有の日付処理と、それぞれの落とし穴の関係を示す図利用する前提とするで構成できるで構成できる軽減する用いるのは非推奨原因になり得る原因になり得る防止する推奨される対応用いるのは非推奨利用する前提とする利用する利用するで構成できる利用する利用する利用する利用する利用する原因になり得る用いるのは非推奨利用するJapaneseCalendarクラス祝日マスタ締め日計算元号(和暦)Windows UpdateFormatJapaneseFirstYearAsANumberスイッチEnforceJapaneseEraYearRangesスイッチ存在しない和暦日付元号のハードコード和暦文字列での保存CultureInfo.CurrentCultureのユーザーオーバーライド保存データへの和暦混入CultureInfo.InvariantCulture祝日判定祝日のハードコード内閣府祝日CSV振替休日国民の休日暫定フラグ運用営業日判定(BusinessDayCalendar)会社休業日マスタAddMonthsの月末丸め仕様DateTime.DaysInMonthAddMonthsの累積(前回結果への加算)締め日のずれ(月末の連鎖崩れ)年度

概念間の関係(全24件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

JapaneseCalendarクラス
.NETで複数の元号(era)を扱える数少ないカレンダークラスの1つ。元号情報はOS側から供給され、書式指定子gで元号名を整形する。
祝日マスタ
祝日の日付と名称をデータとして保持し、フローの営業日判定に使う一覧。
締め日計算
「20日締め翌月末払い」のような取引先ごとの締め日・支払サイトの定義から、実際の締め日・支払期日を導く計算処理。
EnforceJapaneseEraYearRangesスイッチ
元号の年範囲チェックを厳格化する.NETの互換スイッチ。既定では緩和されており、「平成33年」のような実在しない年も受理され換算される。
元号のハードコード
「if (year >= 2019) era = "令和";」のような自前の元号変換テーブル・分岐や、帳票テンプレートに直接書かれた元号など、改元に自動追従しないアプリ側の実装。
和暦文字列での保存
日付を和暦文字列のままデータベース等に保存すること。元号をまたぐ文字列比較の破綻や、実在しない日付の混入を招く。
CultureInfo.CurrentCultureのユーザーオーバーライド
CultureInfo.CurrentCultureが既定でWindowsユーザーによる地域設定の変更を反映する挙動。OSのカレンダーの種類を「和暦」に変更したユーザー端末では、既定書式が和暦文字列を返すようになる。
CultureInfo.InvariantCulture
OSの地域設定(カルチャ)に依存しない数値・日付の書式変換に使う.NETのカルチャ。CSV出力での区切り文字との衝突回避だけでなく、和暦混入の防止やログ出力の検索性維持など、境界を越える日付・数値の文字列表現を固定したい場面で広く使われる。
祝日のハードコード
祝日の月日をソースコードに直書きして判定する実装。法改正のたびに全クライアントの再配布が必要になる。
内閣府祝日CSV
内閣府が「国民の祝日」ページで公表している、昭和30年(1955年)から翌年分までの祝日月日・名称のCSV。祝日マスタ更新の一次ソースとして使える。
営業日判定(BusinessDayCalendar)
土日でない、祝日マスタにない、会社休業日マスタにない、という3条件で営業日かどうかを判定する仕組み。
AddMonthsの累積(前回結果への加算)
毎月の締め日計算などで、前回の計算結果に対してAddMonthsを繰り返し加算していく実装。月またぎで丸めが発生すると、以後ずっと意図しない日にずれ続ける。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。