改元がある10連休の突入まで、すでに2週間を切った
改元に対応するWindows 10のアップデートでは、.NET Frameworkでも更新が実施される。なぜ、.NET Frameworkでの更新が必要かといえば、1つには、.NET Frameworkが日付情報を扱う機能(API)を持っているからである。もう1つは、今回の改元にあたって、Windowsにおいて和暦の「1年」を「元年」と表示する機能が追加される。これにも対応する必要があるのだ。
さらに、.NET FrameworkはUnicode関連のさまざまな機能を持っている。実は、Win32 API側には、Unicodeの処理で必要となるような機能がほとんど装備されていない。Windowsはもともと、シフトJISやASCIIなどのシングルバイト文字を前提にシステムが作られ、あとから内部をUnicode対応にしている。
これに対して、.NET Frameworkは最初からUnicodeの正規化などの機能を装備している。こうした機能は、そもそもUnicodeという文字の定義に対応している必要がある。このため、令和の合字などの文字の追加にはあらためての対応が求められる。
さて、Windows 10の元号関連の機能については、この連載でも以前に扱った(「改元絡みでWindows 10の電卓アプリがバグってました」)。
このときは、レジストリを設定すれば、Windows 10は新元号を扱えるようになると解説している。Windows 10は西暦のみならず、さまざまな暦に対応する機能があり、それを使って和暦表示も可能になっている。このため、新しい元号の情報をレジストリに設定すれば、令和を表示できるようになるわけだ。しかし、実際にはこれだけではダメなのである。
令和への対応は、4月中に配布される予定の「令和」アップデートとでも言うべきものをWindowsに適用する必要がある。記事執筆時点では配布がなかったので、今後配布されるはずだが、10連休までは2週間も残されていない。
筆者は日本の仕組みについて不満があるわけではないが、元号が変わるような「重要なイベント」の前後を「連休」にするという政治家のスタンスについては文句がある。大体、連休が増えて国民が喜んでいたのは、休みの少なかった週休2日制以前のこと。リアル店舗は24時間営業、インターネットに休みなし、そういう時代に「連休」で世の中を止めてしまうことにどんな意味があるのか、政治家には理解できていないのだろう。そもそも、連休が増えてうれしいのは、国会が休みになり、地元に戻って選挙に向けた活動ができる政治家ではないだろうか。
.NET Frameworkの元号対応を確認する
では、.NET Frameworkの令和対応を見てみることにしよう。事前準備として、前述の記事にある方法で、レジストリに「令和」を設定しておいた。ただし元年表示に関しては設定していない。また、日付の表示に「和暦」が使われるように「設定」→「時刻と言語」→「日付と時刻」→「日付、時刻、地域の書式設定」→「データ形式を変更する」→「カレンダー」で「和暦」を選択した。
.NET Frameworkのテストには、PowerShellを使った。まずは、日付の表示。Powershellを起動して「get-date」と入れてみる。これは、現在の日付を取得するPowerShellのコマンドレットである。すると、5月1日前ならば「平成31年」、5月1日以降なら「令和1年」と表示されるはずだ。
では、「元年」表示機能を見てみよう。マイクロソフトによれば、.NET Frameworkの元年表示機能は、Windows 10 Ver.1809(RS5)でもデフォルトでオンになっているという。では、書式を指定して2019年5月1日を表示させてみる。この場合は、
get-date -year 2019 -month 5 -day 1
のように日付を指定する。
-dateオプションを使うときには和暦の文字列で指定する必要がある。たとえば、2019年5月1日なら’1/5/1’のようにする。西暦を入れてしまうと「令和2019年」と解釈されてしまうので注意されたい(一瞬バグってるのかと思った)。
前記のコマンドを打ち込むと「令和元年5月1日」と表示されるはずだ。これは書式指定をしないので、デフォルトの形式が採用され、.NET Frameworkでは、元年表示が有効であるため、「令和元年」となったものだ。たとえば、書式を"ggyy年MM月dd日"と指定すると「令和01年05月01日」と表示されるはずだ。
このように「元年」機能が有効であっても、書式指定と合わない(この書式指定では年を数字2桁と指定してある)場合には、元年は表示されない。"ggy'年'MM月dd日"と指定すれば、「令和元年05月01日」と表示されるようになる。
UWPである、Windows 10付属の電卓アプリやカレンダーアプリは、レジストリ設定で「元年」を表示するかどうかを制御しているが、.NET Framework自体は、レジストリ設定の影響を受けない。
この連載の記事
-
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 - この連載の一覧へ