4.元号変換プログラム
ずいぶん前ですが、元号変換プログラムを作ったりしていました。
これは元々は仕事でそのようなものをVisual Basic 6.2で作っていたのですが、
新たにC#で作り直しました。そして、VB6.2で作った時よりも改良しました。

データベースには元号とフリガナ、開始年月日、終了年月日、南北朝フラグ
といったデータを用意しました。開始年月日、終了年月日ですが、
年、閏月フラグ、月、日と項目を分け、整数型で持っています。
日付型にすると閏月が対応できなくなるのと、昔の日付は持てないことから
日付型は避けて整数型で持ちました。閏月というのは旧暦に登場する月で
通常は12ヶ月なのですが、閏月がある月は13ヶ月になります。

そして、この元号変換プログラムですが、南北朝時代があったことによる
調整が難しかったです。データベースには「元徳」と「建武」という元号が
二つあります。それはなぜかと言うと、この2つの元号は南朝と北朝とで
改元時期が違うため南朝用と北朝用と2つ用意しておく必要があります。
あとは南北朝フラグを使って分けています。
あと、1333年に元号「正慶」が廃止され、「元弘」に統一されたことへの対応
があります。これは、「元弘」を南朝用と北朝用と2つ用意して北朝が
選択されているかつ「元弘」の場合、南朝に合わせるため年を2足しています。

あと、最初とデータを変えたのは、「白雉」と「朱鳥」という元号の
終了年月日ですかね。それぞれ、孝徳天皇、天武天皇が崩御した時点で
使われなくなったのでその日を終了年月日とする調整をしました。

元号については、最初は個人サイトを参考に見てデータを作りましたが
でもそれは良くないと思い、吉川弘文館から出版されている
「歴代天皇・年号事典」を参考にしました。

こんな感じで、元号変換プログラムを作りましたが、やはり元号とか暦とか
そういった歴史が絡んでくるものをプログラミングするのはなかなか
面白いものですね。今回は特に南北朝時代が元号を通して見えてきたのが
面白かったです。また面白いものがあれば何か作ってると思います。
write:2016/10/02 rewrite:- update:2016/10/09


Back

Archive