Tech Racho エンジニアの「?」を「!」に。
  • 開発

Unicodeにおける日本の元号の開始日・終了日の定義について

天皇陛下の生前譲位の話題がしばらく前に上がりました。
技術分野でも、改元されると元号を扱っているプログラムを改修する必要が出るとか、元号の「㍻」のような合字はブラウザで縦書きのときに縦に積みなおした合字にするのか、など様々な話題があります。

今回はその中でも、もっと基本的な部分についてチェックしてみようと思います。

元号の開始日付と終了日付は正しくないのではないかという指摘

この問題に気付いたのは「Unicode Standardの元号の説明の問題は変わっていなかった」という個人ブログの記事です。Unicode Standardにおける日本の各元号の開始日付・終了日付がおかしい、という指摘ですね。

Unicode Standardでの定義

そこで、元号に関する説明をUnicodeコンソーシアムのサイトでチェックしてみました。
http://www.unicode.org/standard/standard.htmlの「Latest Version」>「Full Text pdf for Viewing」をクリックして表示される『The Unicode Standard version 9 - Core Specification』というPDFに記載されています。1000ページを超える超大作の仕様です。

同PDFの目次xxixページ(PDFだと29ページ)にある「Table 22-8. Japanese Era Names ... 819」をクリックし、819ページの該当のテーブルを開きます。

unicode-japanese-era-names

平成の開始日は1989年1月7日、という記述になっています。

ICUでの記述

ついでに判明したのですが、国際化関連のライブラリICU-Project(International Components for Unicode)の記述においても、Unicode Consortiumと同様の、ずれた日付が使われています。一方が他方を参照しているか、両者が同じ資料を参照しているのでしょう。

Note that in the year of an imperial ascension, there are two possible sets of year and era values: that for the old era and for the new. For example, a new era began on January 7, 1989 AD. Strictly speaking, the first six days of that year were in the Showa era, e.g. "January 6, 64 Showa", while the rest of the year was in the Heisei era, e.g. "January 7, 1 Heisei". This class handles this distinction correctly when computing dates. However, in lenient mode either form of date is acceptable as input.

In modern times, eras have started on January 8, 1868 AD, Gregorian (Meiji), July 30, 1912 (Taisho), December 25, 1926 (Showa), and January 7, 1989 (Heisei). Constants for these eras, suitable for use in the ERA field, are provided in this class. Note that the number used for each era is more or less arbitrary. Currently, the era starting in 1053 AD is era #0; however this may change in the future as we add more historical data. Use the predefined constants rather than using actual, absolute numbers.
Class JapaneseCalendar

法律での定義と政令での記載: 平成

実際はどうだったでしょうか。平成が始まってすでに28年が経ち、我々の記憶もあやふやになっています。
1月7日に始まったと言われれば、そうかもしれないし、と思ってしまいますが、まずはWikipediaをチェック。

1989年(昭和64年)1月7日に昭和天皇が崩御して、皇太子明仁親王が即位した(今上天皇)。これを受け、元号法に基づき1989年(昭和64年)1月7日に元号法に基づき改元の政令がだされ、「平成元年1月8日」と改元がなされた。
Wikipedia: 平成

というわけで、1月8日というのが平成の始まりのようです。オフィシャルな文献も見てみましょう。元号は法律『元号法』で定められており、オンラインで参照できます。

1  元号は、政令で定める。
2  元号は、皇位の継承があつた場合に限り改める。

   附 則
1  この法律は、公布の日から施行する。
2  昭和の元号は、本則第一項の規定に基づき定められたものとする。

元号法(昭和五十四年六月十二日法律第四十三号)

これによって昭和64年1月7日に公布されたのが、『元号を改める政令』です。

 内閣は、元号法 (昭和五十四年法律第四十三号)第一項 の規定に基づき、この政令を制定する。

 元号を平成に改める。
   附 則
 この政令は、公布の日の翌日から施行する。
元号を改める政令(昭和六十四年一月七日政令第一号)

公布日は1月7日、附則にある施行日は「翌日から」となっていますので、平成の開始日は1月8日ということになりますね。

平成以外の元号

ほかの元号についても、Wikipediaを見てみます。

新暦・1868年1月25日(旧暦・慶応4年1月1日/明治元年1月1日)から1912年(明治45年)7月30日までの期間を指す。
Wikipedia: 明治

とあります。2日間もの違いがあります。ただし、これは大正元年の初日ともオーバーラップしています。
オーバーラップするのかどうか確信の持てるソースが見つかりませんでしたが、

朕菲德ヲ以テ大統ヲ承ケ祖宗ノ靈ニ誥ケテ萬機ノ政ヲ行フ茲ニ
先帝ノ定制ニ遵ヒ明治四十五年七月三十日以後ヲ改メテ大正元年ト爲ス主者施行セヨ
御名御璽
明治四十五年七月三十日
Wikisource: 明治四十五年七月三十日以後ヲ改メテ大正元年ト爲ス

を見る限りでは「以後を改めて」と記載されていますので、期間をオーバーラップせずに7月30日を大正元年の初日とするのが正しい解釈に見えます。

大正から昭和についても、

朕皇祖皇宗ノ威靈ニ賴リ大統ヲ承ケ萬機ヲ總フ茲ニ定制ニ遵ヒ元號ヲ建テ大正十五年十二月二十五日以後ヲ改メテ昭和元年ト爲ス
御名御璽
大正十五年十二月二十五日
Wikisource: 昭和ト改元

と、やはり「以後を改めて」と記載されていますので、12月25日は昭和元年の初日に属するのが正しい解釈に見えます。

なお、昭和→平成のみ改元に遡及がないという指摘がYahoo!知恵袋にありました。

もし正しく再定義すると

上の記述に基いてUnicode Standardの定義を改めてみると、以下のようになります。

U+337B square era name heisei 1989-01-08 to present day
U+337C square era name syouwa 1926-12-25 to 1989-01-07
U+337D square era name taisyou 1912-07-30 to 1926-12-24
U+337E square era name meizi 1868 to 1912-07-29

明治元年も1867年ではなく1868年が正しいので、合わせて直してあります。

わかりやすくするため、BeyondCompareというツールで文字単位のdiffで示すと以下のようになります。左が現状、右が正しいと考えられる定義です。
160927_1241_wTKdbj

この問題について、2016年9月7日のunicode.orgのメーリングリストにも投稿しました。本日までの時点で回答はない模様。回答があり次第続報を記事にします。

追伸

Twitterでご指摘いただきました。質問の送信に失敗していた可能性がありますので、確認いたします。

続報: その後再登録のうえ返信をいただきましたので、フォームで正式にエラーを報告し、以下の返信をもらいました:

Rick McGowan to me
1 Oct
This is just to let you know that your report was received on the
reporting form, and will be sent to the editors.
Regards,

予想ですが、順調にいけばhttp://unicode.org/errata/に掲載ののち、Unicode10あたりで反映されるのではないでしょうか。

追記

結局Unicode10では反映されなかったようです。

関連記事


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。