連載
» 2019年05月10日 05時00分 公開

Windows 10 The Latest:Windows 10向け「令和」対応パッチ、適用すると何がどう変わるのか?

5月1日の改元と前後して、Windows OS向けに「令和」対応更新プログラム(パッチ)の提供が行われた。新元号に対応するとはどういった意味なのか、どのような変更が行われたのかについて解説する。

[塩田紳二,著]
「Windows 10 The Latest」のインデックス

連載目次

 2019年5月1日に改元が行われ、新しい元号「令和(れいわ)」に切り替わった。日本国内では、元号を利用した日付表示(本記事ではこれを和暦と呼ぶ)が行われることも多く、コンピュータで和暦を扱うことがある。

 こうしたコンピュータ、特にWindows OSで新しい元号「令和」に対応するには、各バージョンに対応した「令和」対応更新プログラム(パッチ)を適用する必要がある。本稿では、この更新プログラムがどのようなものなのか、適用によってどのような対応が行われるか、Windows OSに焦点を当てて解説する。

令和対応更新プログラムの配布が開始

 5月1日の改元を挟む連休直前から連休中にかけて、Windows OSに対する令和対応更新プログラムの配布が開始された。この更新プログラムを適用することで、Windows OSは、新元号「令和」に対応し、和暦表示にしているカレンダーなどでも5月1日以降の日付は、「平成」ではなく「令和」と表示されるようになる。

 この更新プログラムの基本的な情報は、以下のMicrosoftのサポート情報ページを参照してほしい。

Windows OSの種類ごとに提供されている令和対応更新プログラム

 現在配布されている更新プログラムと各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 Updateで自動適用される

 Windows 10の場合、令和対応更新プログラムは、これまでの更新プログラムがまとめられた累積アップデートとなっているため、待っていれば自動的に適用される。

Windows Updateの画面 Windows Updateの画面
Windows 10 October 2018 Updateで、[Windowsの設定]−[更新とセキュリティ]−[Windows Update]画面を開き、[更新プログラムのチェック]ボタンをクリックすると、令和対応を含む累積更新プログラム「KB4495667」が適用できる。累積更新プログラムなので、待っていても自動的に適用が行われる。

令和対応更新プログラムの手動ダウンロード

 インストールが行われない場合、Microsoft Updateカタログで上表のKB番号(Windows 10 October 2018 Update向けならば「KB4495667」)で検索し、msuファイルをダウンロードして手動でインストールすることもできる(Microsoft Updateカタログを使った更新プログラムのダウンロード方法は、Tech TIPS「【Windows 10対応】更新プログラムを個別にダウンロードする」参照のこと)。

Microsoft Updateカタログからダウンロードする(1) Microsoft Updateカタログからダウンロードする(1)
Microsoft Updateカタログを開き、ダウンロードしたいWindows OSに対応するKB番号を入力する。
Microsoft Updateカタログからダウンロードする(2) Microsoft Updateカタログからダウンロードする(2)
検索結果に対応する更新プログラムが一覧表示されるので、[ダウンロード]ボタンを押して、更新プログラムをダウンロードする。

 ダウンロードしたmsuファイルは、エクスプローラー上でダブルクリックすることでインストールが開始される。

 Windows OSの製品別、バージョン別のダウンロードページのリストを下表に示す。なお、Windows Updateで更新プログラムの提供が行われないのには、何らかの問題がある可能性もあり、手動によるインストールは、ご自身の責任で行ってほしい。

Windows 10 October 2018 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)に関してはフォントを直接使わず「令和合字」として表現する。

更新プログラムは2回配信された?

 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」の令和に関する変更点

 「KB4495667」に関しては、以下のページに記述がある。

 具体的な変更点としては、以下の7個(不具合修正を個別に数えると11個)となる。各項目には、改良点の紹介ページ(「KB4495667」その他)内での表現を示す。

変更点 サポート情報上の表記
1. 元号対応のレジストリ設定 新元号に対応するためにNLSレジストリを更新
2. 令和合字のグリフ登録 新元号に対応するためにフォントを更新
3. Microsoft IMEの令和対応 日本語入力システム(Microsoft IME)が新元号の文字に対応できない問題を修正
4. 令和合字の代替フォント対応 新元号のフォントの代替フォントを追加
5. ナレーターの令和の読み上げ対応 音声合成(TTS)機能を新元号の文字に対応
6. タッチキーボードの「令和」対応 タッチキーボードを新元号の文字に対応
7. 元号に関する不具合の修正 CALDATETIME構造が4つ以上の日本の元号を処理できない問題など、元号に関する不具合を修正
KB4495667の更新プログラムの令和に関する変更点

Windows 10 October 2018 Updateの令和対応パッチの詳細

 ここでは、修正点ごとに令和対応を見ていくことにする。

1. 元号対応のレジストリ設定

 具体的には、以下のレジストリキーに令和対応のデータが設定されたことを意味する。

項目 内容
キー 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はこの情報を利用して元号を扱えるようになっている。

 なお、テストなどで、このレジストリの設定を変更している場合、更新プログラム適用前に削除しておくことが望ましい。また、更新プログラム適用後でも、手動で行った修正が残っていないかを確認した方がいいだろう。

2. 令和合字のグリフ登録

 Unicodeの令和合字(U+32FF)文字のフォントパターンを指す。このために幾つかの日本語フォントが修正されている。

各年号の合字と文字コード 各年号の合字と文字コード

 令和合字もフォントのデザインに合わせて作られ、フォントファイルにより、若干の違いがある。後述するように令和合字は代替フォントとしても指定されているため、他のフォントを指定していても、Unicodeで指定が行われれば、正しく表示が可能だ。

各種日本語フォントでの「令和合字」 各種日本語フォントでの「令和合字」
一見どれも同じに見えるが、例えば、UDデジタル教科書体の「令」は、ひとやね下が点に「マ」になっており、メイリオなどとは異なっているなどそれぞれのフォントでのデザインに合ったものが作られている。

 なお、令和合字の文字は、Unicodeでのみ文字コードが与えられており、シフトJISでは、コード割り当てがないために利用できない。このため、例えば文字コード変換で、令和合字を含むUnicodeテキストをシフトJISテキストなどに変換した場合、文字が消えてしまう可能性がある。ただし、この問題は、令和合字特有というわけではなく、UnicodeにあってシフトJISにない文字全てで起こり得る問題である。

3. Microsoft IMEの令和対応

 これは、「れいわ」の読みからの「令和」や令和合字への変換を可能にするものと、令和合字のIMEパッドなどでの文字表示という2つのことを指しているものと考えられる(IMEパッドについては、Tech TIPS「【Windows 10】『霰』が読めなくてもIMEパッドで簡単漢字入力」参照のこと)。これまでも、対応は不可能ではなかったが、令和合字に関してはフォント(グリフデータ)がないため、表示ができなかった。

Microsoft IMEの「れいわ」の漢字変換 Microsoft IMEの「れいわ」の漢字変換
「れいわ」の入力で、「令和」や「令和合字」が候補に表示されるようになる。

IMEパッドの合字部分 IMEパッドの合字部分
IMEパッドも令和合字の表示に対応している。令和の合字は、昭和や平成などの合字から少し離れた位置に登録されている。

4. 令和合字の代替フォント対応

 代替フォントとは、フォントファイル中に含まれない文字を別のフォントファイルに含まれるグリフデータを使って表示することだ。

 この変更点は、令和合字に対応するグリフを持たないフォントファイルに対して提供するため、「代替フォント」として登録したことだと思われる。

 Windows OSには、こうした仕組みとしてデバイスドライバ内で行われるFallbackフォントと、レジストリに代替となるフォントファイルを複数指定しておくFontLinkの2つがある。

 例えば、日本語フォントファイルは、欧文の全ての文字グリフを持っているわけではなく、グリフがない場合には、別のフォントファイルのグリフデータを利用する。このとき、FontLinkは、事前に違和感のないフォントファイル同士を組み合わせて指定しておくものだ。

 欧文フォントには、端の部分に小さな「ヒゲ」のようなものがつく「セリフ(Serif)」フォント(セリフ体)と、「ヒゲ」のない「サンセリフ(Sans-serif)」フォント(サンセリフ体)がある。このため、明朝体系のフォントと組み合わせるにはセリフ体のフォントの方がよい。こうした組み合わせを事前に行うのがFontLinkであり、以下のレジストリキーで設定が行われている。

項目 内容
キー HKEY_LOCAL_MACHINEの\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink
FontLinkのレジストリ

令和対応更新プログラム適用後のWindows 10 October 2018 Updateのレジストリキー 令和対応更新プログラム適用後のWindows 10 October 2018 Updateのレジストリキー
FontLinkのレジストリは、このように日本語フォント(画面ではMeiryo)に対して、組み合わせるフォントとしてSegoe UIが指定されていることが分かる。

 ざっと見たところ、レジストリのFontLinkには違いはなく、特に変更されてはいないようだ。もう1つのフォントフォールバックは、デバイスドライバ内での対応であるため、外部から確認ができなかった。

5. ナレーターの令和の読み上げ対応

 ナレーターによるテキストの読み上げ(TTS:Text To Speech)で、「令和」に対して「れいわ」の読みを登録するものだ。更新プログラムを適用する前の段階では、「令和」を「よしかず」と読み上げていたが、更新プログラム適用後は「れいわ」と読むようになった。

6. タッチキーボードの「令和」対応

 タッチキーボードでの「れいわ」からのかな漢字変換や手書き認識に関連する機能と推測される。タッチキーボードは、変換機能と一体(日本語タッチキーボードの大部分はMicrosoft IMEの機能)になっているため、タッチキーボード側も令和対応が必要なのだと考えられる。令和対応更新プログラムを適用すると、手書き文字の「れいわ」に対して「令和」が候補に上がるようになる。

タッチキーボードの「令和」対応 タッチキーボードの「令和」対応
タッチキーボードでも「れいわ」の手書き入力で令和合字や「令和」を候補として表示するようになる。

7. 元号に関する不具合の修正

 従来の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」に記載されていない令和対応

 「KB4495667」のWebページには記載されていないが、筆者が確認できた令和対応には以下のものもある。

文字コード表アプリも令和合字対応

 文字コードアプリは、Windows OSの標準アプリの1つである。このアプリも、令和合字の表示に対応していた。令和パッチ適用前、令和合字部分は飛ばされて表示されていた。

Windows 10標準アプリの「文字コード表」 Windows 10標準アプリの「文字コード表」
「KB4495667」には記載がないが、Windows 10標準アプリの「文字コード表」も令和合字に対応した。

「令和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年」または「令和元年」を表示する。

元年表示を有効にするレジストリキー 元年表示を有効にするレジストリキー
InitialEraYearの値のデータをデフォルトの「1年」から「元年」に変更することで、カレンダーや電卓などの和暦表示が「令和1年」から「令和元年」になる。

レジストリ設定前(上)と設定後(下)の和暦表示 レジストリ設定前(上)と設定後(下)の和暦表示
インジケーター領域の時計をクリックして表示されるフライアウト(ポップアップ)は、レジストリ設定に従って「1年」と「元年」を表示できる。

令和合字に対するUnicode正規化処理は非対応

 令和合字に関しては、令和対応更新プログラムを適用しても、正規化が行えなかった。正規化とは、Unicodeで定義される文字列比較の事前処理の1つだ。

 Unicode文字列では、見た目(表現)が同じ、あるいは似たものに見えても、文字コードの並びが違っていることがある。こうした場合に正規化とよばれる方法を使うことで、グリフに対する文字コードの並びを一定のものにできる。例えば、「平成合字」を正規化処理することで、漢字2文字の「平成」に変換することができる。

 ただしMicrosoftは、令和合字に関しては、正規化処理に対応しないことを事前に宣言している。

 このサポート技術情報には、「マイクロソフトは、新元号の正規化機能をサポートするための更新プログラムをリリースしません」との記述がある。実際試してみたが、やはり「令和合字」を漢字2文字の令和とすることはできなかった。

Unicode正規化メソッドで合字を漢字2文字に変換する Unicode正規化メソッドで合字を漢字2文字に変換する
平成合字は、Unicode正規化メソッドで漢字2文字の「平成」に変換できるが、令和合字に関してはUnicode正規化が行われない。


 令和パッチは、取りあえずWindows 7〜10までで令和を扱えるようにする。元号表示は、自分で日付の書式設定を和暦にでもしていない限り、アプリケーションの表示で行われる程度で、人によってはあまり関わりのないことかもしれない。

 しかし、役所や企業などでは、和暦の利用が必須のところもあり、そのために4月1日の「令和」発表から更新プログラムの開発が行われてきた。

 実際のところは、連休にかかってしまい、利用者側は、連休明けに更新プログラムが適用されるという状態だった。現在のところ、改元で大きな問題が起こったという報告はないようだ(2019年5月15日追記:Microsoftのサポート情報によると、更新プログラムの適用によってMS UIゴシックやMS Pゴシックを使ったExcelシートのレイアウトが崩れてしまう不具合が明らかになっている)。

 世の中には、こうした問題で何事も起こらなかったとき、「大騒ぎしといて何もなかった。空騒ぎではないか」などと評する人がいるが、実際には、多くの人の努力があったからこそ、何も起こらなかったわけで、「何事もなかった」ことには、ちゃんとした理由がある。ただ、今回は、連休が問題をより困難なものにした。働き方改革を訴える一方で、エンジニアに休日出勤をさせてしまうのはいかがなものか。

「Windows 10 The Latest」のインデックス

Windows 10 The Latest

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。