今年、平成が終わる。天皇陛下が4月30日に退位され、翌日の5月1日に皇太子殿下が即位される日程は一昨年の12月に決定されていたこと、本稿で改めて説明するまでもないが、あと4カ月で平成が終わるとなるとあれこれ考えずにはいられない。日本の行く末もさることながら、目下のところ「改元」が自分の身の回りでスムーズに進行するかどうか。もちろん、身の回りとはmacOSだ。

macOSの暦に関する実装は、シェル/UNIXコマンドというBSDレイヤー向けと、GUI(Aqua)向けの2系統が存在する。前者は標準Cライブラリ(libc)の機能として提供されるロケールであり、「cal」や「date」といったコマンドを利用すれば確認できる。後者は「NSCalendar」フレームワークとして実装され、カレンダー(Calendar.app)などのアプリケーションで利用されるほか、システム環境設定の「言語と地域」パネルで暦法 -- 西暦や和暦、イスラム暦など -- を切り替えることができる。

  • 「cal」や「date」もロケールの切り替えには対応しているが……

Macにとっては、どちらの実装も欠かせない存在だが、多くのユーザにとってより大きく影響するのは後者のNSCalendarだ。BSDレイヤーもロケールに応じた暦法を選択できるようにすることは可能だが、macOSでは和暦(平成○○年)に関する実装がない。「○月」や「○曜」など日本語で暦を表示することはできても、西暦に限定されている。

なお、RedHat LinuxなどGNU C Library(glibc)を利用するOSには、明治以降の元号を表示する仕組みが用意されている(たとえば1989年1月8日以降は平成)。macOSでは、/usr/share/locale/ja_JP.UTF-8ディレクトリ以下を探し回っても元号に関するデータは見つからないため、和暦を表示する場合にはNSCalendarに頼ることになる。

  • システム環境設定「言語と地域」パネルを利用すると、NSCalendarを使用するアプリが和暦になる

NSCalendarでは、和暦として「NSJapaneseCalendar」クラスが定義されている。ここにはしっかりとした元号データベースがあり、昭和や大正、明治はもちろんのこと、天保(1831-1845)や享保(1716-1736)、応仁(1467-1469)や建武(1334-1336)といった歴史教科書級の元号まで網羅されている。

NSJapaneseCalendarでは、大化(645-650)以降の元号をカバーしているが、これを確認するための手ごろなツールはそう多くない。カレンダーアプリの「日付を移動」機能を利用すると、年月日を入力して該当のカレンダーを一足飛びに表示できる(そうでなければ延々と画面をスクロールするはめになる)ので、試してみるといいだろう。ただし、入力できる年月日はグレゴリオ暦では1000年1月1日が最古だ。

折角だから(?)ということで、西暦1000年より前の元号を表示すべく手作業でカレンダーを遡ってみたが、確かに延喜(901-923)や大同(806-810)といった元号が表示された。脱線ついでに4文字の元号が正しく表示されるかどうかも確認してみたが、天平宝字(757-765)などいずれもバッチリ。もし次の元号が4文字だとしても安心だ。

しかし、大化1年以前まで遡るとカレンダーアプリの表示は崩れてしまい、1月の暦しか表示されなくなった。元号の表記も、大化1年以前は大化0年、大化-1年、大化-2年……などとマイナス表記になってしまう。疲れたので大化-24年で止めてしまったが、特殊な使いかたであることを鑑みると、Appleに不具合を報告すべきかどうか迷うところだ。

  • カレンダーアプリの「日付を移動」ダイアログ。和暦を選択している場合、元号の最初の文字が目印として表示される

  • 平成、昭和はもちろん天平宝字もしっかり表示できた(イベントは登録しないだろうが)

このように、大化以降はしっかりとしているmacOS(NSCalendar)の和暦だが、1月9日現在Appleはなんのアナウンスも実施していない。4月1日に新元号が発表されてから日を置かず、ソフトウェア・アップデートを提供することでNSJapaneseCalendarの更新を促す腹づもりなのだとは思うが、実際のところどうなのだろう。兄弟分のiOSも含め、動向を見守りたい。

なお、MicrosoftはWindows 10の新元号対応をどのように実施するか、公式ブログで概要を説明している(リンク)。記事によれば、Windows 10ではすでにレジストリに新元号用の場所が確保されているとのことなので、対応は速そう。macOSともども、スムーズに新元号対応が進むことを願う次第だ。

  • 大化以前に遡るとカレンダーの表示がおかしくなるが、不具合報告すべきかどうか迷うところ