どうする新元号問題 in .net Framework
きますよ大問題。対策してますか?
サクっとまとめます。
※.Net以外のことは知らんですがアプローチは似たような感じじゃないでしょうか。
・予想される障害
和暦を表示する機能のあるシステムにおいて、取得方法によっては平成が終わっても平成が続いちゃいます。具体的には2019/05/01以降も平成XX年と表示されます。
・対応箇所の選定
独自の元号マスタテーブルをDBに構築、対象日付に合わせて元号を参照するような仕組みの場合は問題ありません。新元号が分かり次第マスタに追加すれば完了です。
.Net Frameworkやvb6で提供されているメソッドを使用している箇所が対応箇所となります。具体的には↓のようなプログラムを検索します。
vb6
Format([日付],”g”)
Format([日付],”gg”)
Format([日付],”ggg”)
.Net
Tostring("gy年MM月dd日",[日本語のカルチャ])
Microsoft.VisualBasic.Compatibility.VB6.Format([日付],”g”)
Microsoft.VisualBasic.Compatibility.VB6.Format([日付],”gg”)
Microsoft.VisualBasic.Compatibility.VB6.Format([日付],”ggg”)
※formatのgは大文字も。
・対応内容
TostringについてはwindowsUpdateを行えばOKです。以下のレジストリ値を参照するようになります。試しに「豚喝」にしたところちゃんと返ってきました。
問題はvb6のFormatですが、Microsoft次第です。新元号対応されたランタイムライブラリが配布されればことなきを得ます。vb6プログラムなんて世に腐るほどあるだろうし、対応されるんじゃないかな。根拠はないです。もし対応されなかったら前述の元号マスタ参照に置き換える必要があります。想像するだけでテストが大変ね…
※vb6ランタイム、windows vista以前のOSはサポートしない宣言をMicrosoftがしていたと思います。たしか。
・どこまでやるのか
自前の元号マスタ参照でない限り、windowsUpdateによる新元号レジストリの更新やランタイムライブラリの取得と入れ替えが必要です。その配布時期が2019/05/01以降である可能性もあります。セキュリティ厳しいとこはwindowsUpdate禁じてるかもですし。一方、和暦表示なんてどうでもいいよってシステムもあるかもしれません。
まずはプログラムの精査と端末環境の棚卸。
それを基にどこまで対応するか方針固めてスケジューリング。
資料にまとめてお偉いさんにこんな感じっスと説明。
これを2018年内に完了しておけば優秀な部類ではないでしょうか。
っつーか和暦なんて誰が考えたんすかね。
おわり。