GrapeCity.devlog

グレープシティ株式会社のDeveloper Tools〈開発支援ツール〉の最新情報をお届けします。製品のTIPSや発売情報、イベントのお知らせなどをいち早く発信中です。

開発ツールの新元号対応情報 ― システム改修準備は進んでる?

みなさまご存知の通り、2019年5月1日に新天皇陛下の即位・改元が行われる予定で、SNSでも新元号の予想合戦が行われるなど盛り上がりを見せています。

一方、システムエンジニアの方々にとっては、システムを新元号に対応させるための改修やテストがこれから控えており、まだはっきりしない新元号の発表のタイミングに戦々恐々としている方も多いはず。

弊社開発支援ツールをご利用のお客様からも新元号への対応に関するお問い合わせは多く、関心の高さがうかがえます。

そういった方々の作業や心配を少しでも軽減するため、弊社開発支援ツールの新元号への対応情報をまとめたサイトを公開しました。

新元号だけでなく、新天皇即位に伴い変わる祝日への対応方法も公開しているので、システムの改修を検討されているお客様は事前に確認しておくと安心です。

さて今回の記事では、上記サイトで公開している情報の中から、弊社の主力製品「ActiveReports」、「SPREAD」、「InputMan」を使用したWindowsフォームのアプリを新元号に対応させる場合の方法をピックアップしてご紹介したいと思います。

新元号への対応前の状態

今回は以下のようなWindowsフォームの業務アプリケーション風のサンプルを例にしてみたいと思います。

f:id:GrapeCity_dev:20180926134353p:plain:w450

以下のように各UIコントロールにSPREAD、InputManを使用し、ボタンクリック時にActiveReportsで帳票を出力します。

f:id:GrapeCity_dev:20180926135408p:plain

新元号に対する設定をしていない場合、InputManやSPREADのGcDateTime型セルは.NET Frameworkの機能に依存せず、製品独自の機能で和暦を出力するので、2019年5月のデータは今の元号のまま「平成31年5月」と出力されます。

f:id:GrapeCity_dev:20180926135426p:plain

ActiveReportsやSPREADの日付時刻型セルは、.NET FrameworkのJapaneseCalendarクラスを利用して和暦を出力するので、出力結果はWindows Updateの適用状況によって変わります。

今回の実行環境はWindows 10 April 2018 Updateを適用した環境(バージョン1803)なので、2019年5月以降のデータの元号には、レジストリに登録された仮の元号「??」が表示されています。

f:id:GrapeCity_dev:20180926142424p:plain

参考:Windows 10 機能更新プログラム (2018 Spring Release) における元号のレジストリ更新について

設定ファイルで一括対応

SPREADやInputManを新元号に対応させるには、アプリケーション構成ファイル(App.config)に定義を追加するだけです。

f:id:GrapeCity_dev:20180927154503p:plain:w300

ActiveReportsも2018年9月21日に公開されたバージョン12.0JのSP2で、元号を同ファイルで定義できるようになりました。(レジストリにも定義がある場合は、アプリケーション構成ファイルが優先されます。)

運用環境のWindows Updateやレジストリの状態を気にする必要はなく、アプリケーション毎に新元号に対応する/しないといった選択もできます。

また今回の3製品の場合、アプリケーション構成ファイルの定義は共通となっているので、製品ごとに定義やコードを追加する必要はありません。今回のサンプルアプリケーションの場合も、App.configに元号の定義を追加すれば対応完了です。

以下は新元号が「新規」という名前だった場合の例です。

App.config

<?xml version="1.0" encoding="utf-8" ?>
   <configuration>
     <configSections>
       <section name="GrapeCityEra" type="System.Configuration.NameValueSectionHandler"/>
     </configSections>
     <GrapeCityEra>
       <add key="1868 09 08" value="明治_明_M_1,M"/>
       <add key="1912 07 30" value="大正_大_T_2,T"/>
       <add key="1926 12 25" value="昭和_昭_S_3,S"/>
       <add key="1989 01 08" value="平成_平_H_4,H"/>
       <!-- 新元号の定義を追加 -->
       <add key="2019 05 01" value="新規_新_N_5,N"/>
     </GrapeCityEra>
   </configuration>

なお、App.configはプロジェクトをビルドするとEXEファイルと同じフォルダに「EXEファイル名.config」という名前でコピーされ、これをアプリケーションと一緒に配布することになります。

f:id:GrapeCity_dev:20180927151504p:plain:w300

すでに稼働中のアプリケーションであっても、この構成ファイルを差し替えるだけで新元号に対応することが可能です。

アプリケーション自体を再度ビルドしたり、差し替えたりする必要はないので、エンドユーザーへの影響も少なく、タイミングも自由です。

構成ファイルを更新し、再度アプリケーションを実行すると、2019年5月の元号は「新規」と表示されます。

f:id:GrapeCity_dev:20180926140508p:plain

おわりに

いかがでしたでしょうか。アプリケーションの仕様や、使用している製品にもよりますが、今回のサンプルでは驚くほど簡単に新元号に対応できました。

新元号への対応方法は、今回のように一括で対応できるものもあれば、製品によって方法が異なるものもあるので、詳しくは今回紹介したまとめサイトをご覧いただければと思います。

弊社製品の新元号対応について | Developer Tools - グレープシティ株式会社