5月1日の改元と前後して、Windows OS向けに「令和」対応更新プログラム(パッチ)の提供が行われた。新元号に対応するとはどういった意味なのか、どのような変更が行われたのかについて解説する。
2019年5月1日に改元が行われ、新しい元号「令和(れいわ)」に切り替わった。日本国内では、元号を利用した日付表示(本記事ではこれを和暦と呼ぶ)が行われることも多く、コンピュータで和暦を扱うことがある。
こうしたコンピュータ、特にWindows OSで新しい元号「令和」に対応するには、各バージョンに対応した「令和」対応更新プログラム(パッチ)を適用する必要がある。本稿では、この更新プログラムがどのようなものなのか、適用によってどのような対応が行われるか、Windows OSに焦点を当てて解説する。
5月1日の改元を挟む連休直前から連休中にかけて、Windows OSに対する令和対応更新プログラムの配布が開始された。この更新プログラムを適用することで、Windows OSは、新元号「令和」に対応し、和暦表示にしているカレンダーなどでも5月1日以降の日付は、「平成」ではなく「令和」と表示されるようになる。
この更新プログラムの基本的な情報は、以下のMicrosoftのサポート情報ページを参照してほしい。
現在配布されている更新プログラムと各Windows OSの対応は、下表のようになる。
バージョン | 詳細情報(KB) | 更新後OSビルド |
---|---|---|
Windows 10バージョン1809 | KB4495667 | 17763.475 |
Windows 10バージョン1803 | KB4493437 | 17134.753 |
Windows 10バージョン1709 | KB4493440 | 16299.1127 |
Windows 10バージョン1703 | KB4493436 | 15063.1784 |
Windows 10バージョン1607 | KB4493473 | 14393.2941 |
Windows 10バージョン1511 | 提供なし | − |
Windows 10 RTM | KB4498375 | 10240.18187 |
Windows 8.1 | KB4493443 | − |
Windows 7.0 SP1 | KB4493453 | − |
各Windows OSと更新プログラムの対応 |
令和対応更新プログラムは、現在サポートが行われているWindows 7 SP1からWindows 10までが対象だが、Windows 10バージョン1511(November Update)のようにサポート切れのために、更新プログラムが提供されないものもある。
その前に公開されたWindows 10 RTM(いわゆる最初のWindows 10)が対象になっているのは、企業向けに長期間のサポートを保証する「LTSB(Long Term Support Branch。現在のLTSC、Long Term Support Channelに相当)」エディションになっているからだ。
Windows 10の場合、令和対応更新プログラムは、これまでの更新プログラムがまとめられた累積アップデートとなっているため、待っていれば自動的に適用される。
インストールが行われない場合、Microsoft Updateカタログで上表のKB番号(Windows 10 October 2018 Update向けならば「KB4495667」)で検索し、msuファイルをダウンロードして手動でインストールすることもできる(Microsoft Updateカタログを使った更新プログラムのダウンロード方法は、Tech TIPS「【Windows 10対応】更新プログラムを個別にダウンロードする」参照のこと)。
ダウンロードしたmsuファイルは、エクスプローラー上でダブルクリックすることでインストールが開始される。
Windows OSの製品別、バージョン別のダウンロードページのリストを下表に示す。なお、Windows Updateで更新プログラムの提供が行われないのには、何らかの問題がある可能性もあり、手動によるインストールは、ご自身の責任で行ってほしい。
バージョン | アップデート |
---|---|
Windows 10バージョン1809 | 2019-05 x86/x64/ARM64ベースシステム用Windows 10 Version 1809の累積更新プログラム(KB4495667) |
Windows 10バージョン1803 | 2019-04 x86/x64/ARM64ベースシステム用Windows 10 Version 1803の累積更新プログラム(KB4493437) |
Windows 10バージョン1709 | 2019-04 x86/x64/ARM64ベースシステム用Windows 10 Version 1709の累積更新プログラム(KB4493440) |
Windows 10バージョン1703 | 2019-04 x86/x64ベースシステム用Windows 10 Version 1703の累積更新プログラム(KB4493436) |
Windows 10バージョン1607 | 2019-04 x86/x64ベースシステム用Windows 10 Version 1607の累積更新プログラム(KB4493473) |
Windows 10 RTM/バージョン1507 | 2019-04 x86/x64ベースシステム用Windows 10 Version 1507の累積更新プログラム(KB4498375) |
Windows 8.1 | 2019-04 x86/x64ベースシステム用Windows 8.1向けマンスリー品質ロールアップのプレビュー(KB4493443) |
Windows 7 | 2019-04 x86/x64ベースシステム用Windows 7向けマンスリー品質ロールアップのプレビュー(KB4493453) |
各Windows OSとMicrosoft Updateカタログのリンク |
ここでは、Windows 10 October 2018 Update(バージョン1809)で令和対応更新プログラムを検証してみた。
他のバージョン向け更新プログラムでも修正内容はほぼ同じだが、修正箇所の記述には若干の違いがある。ただし、記述漏れなのか、本当に対応が行われなかったのかが不明だ。例えば、タッチキーボードの対応に関しては、October 2018 Update(KB4495667)とFall Creators Update(KB4493440)には記述があるのに対して、April 2018 Update(KB4493437)には記述がない。
常識的に考えると前後のバージョンで修正を行っているため、April 2018 Updateで修正が行われなかったというよりも、KB4493437で記述が漏れている可能性の方が高い。あるいはこのバージョンだけ修正を忘れた可能性もあるだろう。
Windows 10の過去バージョンの検証は困難なため、ここでは、Windows 10 October 2018 Update(バージョン1809)に対してのみ見ていくことにする。また、令和対応更新プログラムに未対応の環境を考慮し、「令和合字」(U+32FF)に関してはフォントを直接使わず「令和合字」として表現する。
Windows 10 October 2018 Update(バージョン1809)の令和対応更新プログラムは、実のところ連休中に2回配信されている。
1つは、ほぼ令和対応のみの「KB4501835」である。こちらは、Windows Updateでは自動的にインストールが行われず、手動でのインストールが必要だった。
その後、現在配布中の「KB4495667」の配布が開始された。最初の「KB4501835」は、5月1日〜2日頃の配布で、令和元年直後の配布だった。その後に配布された「KB4495667」が来たのは土曜日から日曜日(5月4日から5日頃)であった。それぞれのKBのページを見ると、「KB4495667」は、「KB4501835」を含んでいるようなので、ここでは、「KB4495667」についてのみ解説を行う。
「KB4495667」に関しては、以下のページに記述がある。
具体的な変更点としては、以下の7個(不具合修正を個別に数えると11個)となる。各項目には、改良点の紹介ページ(「KB4495667」その他)内での表現を示す。
変更点 | サポート情報上の表記 |
---|---|
1. 元号対応のレジストリ設定 | 新元号に対応するためにNLSレジストリを更新 |
2. 令和合字のグリフ登録 | 新元号に対応するためにフォントを更新 |
3. Microsoft IMEの令和対応 | 日本語入力システム(Microsoft IME)が新元号の文字に対応できない問題を修正 |
4. 令和合字の代替フォント対応 | 新元号のフォントの代替フォントを追加 |
5. ナレーターの令和の読み上げ対応 | 音声合成(TTS)機能を新元号の文字に対応 |
6. タッチキーボードの「令和」対応 | タッチキーボードを新元号の文字に対応 |
7. 元号に関する不具合の修正 | CALDATETIME構造が4つ以上の日本の元号を処理できない問題など、元号に関する不具合を修正 |
KB4495667の更新プログラムの令和に関する変更点 |
ここでは、修正点ごとに令和対応を見ていくことにする。
具体的には、以下のレジストリキーに令和対応のデータが設定されたことを意味する。
項目 | 内容 |
---|---|
キー | HKEY_LOCAL_MACHINEの\SYSTEMの\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras |
値の型 | REG_SZ |
元号が設定されているレジストリ |
値の名前 | 値のデータ |
---|---|
1868 01 01 | 明治_明_Meiji_M |
1912 07 30 | 大正_大_Taisho_T |
1926 12 25 | 昭和_昭_Showa_S |
1989 01 08 | 平成_平_Heisei_H |
2019 05 01 | 令和_令_Reiwa_R |
各元号の設定 |
このようにWindows OSでは、明治以降の元号(明治/大正/昭和/平成/令和)に対して、開始日がレジストリに設定されている。Windows OSはこの情報を利用して元号を扱えるようになっている。
なお、テストなどで、このレジストリの設定を変更している場合、更新プログラム適用前に削除しておくことが望ましい。また、更新プログラム適用後でも、手動で行った修正が残っていないかを確認した方がいいだろう。
Unicodeの令和合字(U+32FF)文字のフォントパターンを指す。このために幾つかの日本語フォントが修正されている。
令和合字もフォントのデザインに合わせて作られ、フォントファイルにより、若干の違いがある。後述するように令和合字は代替フォントとしても指定されているため、他のフォントを指定していても、Unicodeで指定が行われれば、正しく表示が可能だ。
なお、令和合字の文字は、Unicodeでのみ文字コードが与えられており、シフトJISでは、コード割り当てがないために利用できない。このため、例えば文字コード変換で、令和合字を含むUnicodeテキストをシフトJISテキストなどに変換した場合、文字が消えてしまう可能性がある。ただし、この問題は、令和合字特有というわけではなく、UnicodeにあってシフトJISにない文字全てで起こり得る問題である。
これは、「れいわ」の読みからの「令和」や令和合字への変換を可能にするものと、令和合字のIMEパッドなどでの文字表示という2つのことを指しているものと考えられる(IMEパッドについては、Tech TIPS「【Windows 10】『霰』が読めなくてもIMEパッドで簡単漢字入力」参照のこと)。これまでも、対応は不可能ではなかったが、令和合字に関してはフォント(グリフデータ)がないため、表示ができなかった。
代替フォントとは、フォントファイル中に含まれない文字を別のフォントファイルに含まれるグリフデータを使って表示することだ。
この変更点は、令和合字に対応するグリフを持たないフォントファイルに対して提供するため、「代替フォント」として登録したことだと思われる。
Windows OSには、こうした仕組みとしてデバイスドライバ内で行われるFallbackフォントと、レジストリに代替となるフォントファイルを複数指定しておくFontLinkの2つがある。
例えば、日本語フォントファイルは、欧文の全ての文字グリフを持っているわけではなく、グリフがない場合には、別のフォントファイルのグリフデータを利用する。このとき、FontLinkは、事前に違和感のないフォントファイル同士を組み合わせて指定しておくものだ。
欧文フォントには、端の部分に小さな「ヒゲ」のようなものがつく「セリフ(Serif)」フォント(セリフ体)と、「ヒゲ」のない「サンセリフ(Sans-serif)」フォント(サンセリフ体)がある。このため、明朝体系のフォントと組み合わせるにはセリフ体のフォントの方がよい。こうした組み合わせを事前に行うのがFontLinkであり、以下のレジストリキーで設定が行われている。
項目 | 内容 |
---|---|
キー | HKEY_LOCAL_MACHINEの\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink |
FontLinkのレジストリ |
ざっと見たところ、レジストリのFontLinkには違いはなく、特に変更されてはいないようだ。もう1つのフォントフォールバックは、デバイスドライバ内での対応であるため、外部から確認ができなかった。
ナレーターによるテキストの読み上げ(TTS:Text To Speech)で、「令和」に対して「れいわ」の読みを登録するものだ。更新プログラムを適用する前の段階では、「令和」を「よしかず」と読み上げていたが、更新プログラム適用後は「れいわ」と読むようになった。
タッチキーボードでの「れいわ」からのかな漢字変換や手書き認識に関連する機能と推測される。タッチキーボードは、変換機能と一体(日本語タッチキーボードの大部分はMicrosoft IMEの機能)になっているため、タッチキーボード側も令和対応が必要なのだと考えられる。令和対応更新プログラムを適用すると、手書き文字の「れいわ」に対して「令和」が候補に上がるようになる。
従来のWindows OSでは元号の処理に関して幾つか不具合があった。「令和」への対応とともに、これらの不具合が修正されている。
最も影響の大きそうなのが、「CALDATETIME構造が4つ以上の日本の元号を処理できない問題を修正」というものだろう。CALDATETIME構造体とこれを利用するAPIは、Windows Vistaで搭載されたものの、廃止予定となっている。
.NET Frameworkには、元号のような地域固有のカレンダーを扱う機能があるが、Win32 APIでは、このCALDATETIME構造体を引数に持つAPIが唯一元号を扱える。Win32アプリケーションから.NET Frameworkへの転換は簡単ではないため、このAPIを利用したWin32アプリケーションは当面残る可能性がある。
この問題でいう「4つ以上の元号」を処理できないとは、この構造体を扱うAPI側の問題である(構造体自体に問題があるわけではない)。CALDATETIMEでは、明治からの元号に数字を割り当てているが、プログラム内で固定的に1〜4を明治〜平成と解釈しているため、令和(=5)を指定しても解釈されないという問題だ。これがMicrosoftのドキュメント「新元号への対応について」の「新元号に関するマイクロソフト製品別対応」にある「和暦(われき)がハードコードされたモジュールを修正しレジストリで管理」という部分に相当する。
今回の更新プログラムでは、元号に関連する不具合修正は5つだったが、これで全てというわけではない。今後もアプリケーションのエラーなどで、Windows OS側の問題が検出されていくことになると思われる。当面、日時を扱ったり、和暦を使ったりするようなソフトウェアの利用には注意する必要があるだろう。
「KB4495667」のWebページには記載されていないが、筆者が確認できた令和対応には以下のものもある。
文字コードアプリは、Windows OSの標準アプリの1つである。このアプリも、令和合字の表示に対応していた。令和パッチ適用前、令和合字部分は飛ばされて表示されていた。
元年表記は、今回の令和対応で追加された機能の1つだが、Windows 10 October 2018 Update(バージョン1809)では、オフに設定してある。具体的には、以下のレジストリキーを設定すればよい。
項目 | 内容 |
---|---|
キー | HKEY_LOCAL_MACHINEの\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese |
値の型 | REG_SZ |
値の名前 | InitialEraYear |
値のデータ | 1年(1年で表記)/元年(元年で表記) |
元年表示を有効にするレジストリ |
令和対応更新プログラムを適用した場合、ここには「InitialEraYear=1年」が設定される。このレジストリで制御可能なのは、Win32デスクトップアプリケーションのアンマネージコードで記述されたソフトウェアのみになる(簡単に言うと、.NET Framework以外で開発されているもの)。例えば、タスクバー右側の時計部分をクリックして表示されるフライアウト(ポップアップ)は、このレジストリの設定に従い「令和1年」または「令和元年」を表示する。
令和合字に関しては、令和対応更新プログラムを適用しても、正規化が行えなかった。正規化とは、Unicodeで定義される文字列比較の事前処理の1つだ。
Unicode文字列では、見た目(表現)が同じ、あるいは似たものに見えても、文字コードの並びが違っていることがある。こうした場合に正規化とよばれる方法を使うことで、グリフに対する文字コードの並びを一定のものにできる。例えば、「平成合字」を正規化処理することで、漢字2文字の「平成」に変換することができる。
ただしMicrosoftは、令和合字に関しては、正規化処理に対応しないことを事前に宣言している。
このサポート技術情報には、「マイクロソフトは、新元号の正規化機能をサポートするための更新プログラムをリリースしません」との記述がある。実際試してみたが、やはり「令和合字」を漢字2文字の令和とすることはできなかった。
令和パッチは、取りあえずWindows 7〜10までで令和を扱えるようにする。元号表示は、自分で日付の書式設定を和暦にでもしていない限り、アプリケーションの表示で行われる程度で、人によってはあまり関わりのないことかもしれない。
しかし、役所や企業などでは、和暦の利用が必須のところもあり、そのために4月1日の「令和」発表から更新プログラムの開発が行われてきた。
実際のところは、連休にかかってしまい、利用者側は、連休明けに更新プログラムが適用されるという状態だった。現在のところ、改元で大きな問題が起こったという報告はないようだ(2019年5月15日追記:Microsoftのサポート情報によると、更新プログラムの適用によってMS UIゴシックやMS Pゴシックを使ったExcelシートのレイアウトが崩れてしまう不具合が明らかになっている)。
世の中には、こうした問題で何事も起こらなかったとき、「大騒ぎしといて何もなかった。空騒ぎではないか」などと評する人がいるが、実際には、多くの人の努力があったからこそ、何も起こらなかったわけで、「何事もなかった」ことには、ちゃんとした理由がある。ただ、今回は、連休が問題をより困難なものにした。働き方改革を訴える一方で、エンジニアに休日出勤をさせてしまうのはいかがなものか。
Copyright© Digital Advantage Corp. All Rights Reserved.