前出の画面1や画面2では、ぱっと見だと分かりにくいかもしれませんが、意図的に幾つかの種類のダブルクォーテーションとハイフンを織り交ぜています。日本語環境とWSH環境でエラーを発生させているのは、ダブルクォーテーションっぽく見える文字コード147(0x93)と148(0x94)の文字と、ハイフンっぽく見える文字コード150(0x96)と151(0x98)の文字でした(画面5)。
これらの文字は、英語環境のWindows PowerShellでは使えてしまいますが、日本語環境では完全にUnicodeのコードセットの範囲にあります(画面6)。日本語環境でプログラムコードとして使えるのは、いわゆる「半角英数字」と呼ばれる、ASCII文字コードセットの128字の範囲にある、文字コード34(0x22)の「"」と文字コード45(0x2D)の「-」です。
このような文字が紛れ込む理由には、ドキュメントやコード作成者の配慮のなさ、ドキュメントやWeb編集ソフトによる意図しない変換などが考えられます。筆者は文字コードに詳しいわけではないので、他にも理由があるのかもしれません。
英語環境のWindows PowerShellでは、日本語環境ではどうやって入力するのかも分からないような、ダブルクォーテーションやハイフンのように見える文字が許容されてしまうようです。そして、英語圏のプログラマーが書いたコードには、このような文字が含まれてしまうことがあります。また、これらのコードとして問題のある文字は、PDF形式のドキュメントをコピー&ペーストすると遭遇することがあります。
こんなことはレアケースだと思いますか。実は、Windows Server 2016の開発中に、Windows PowerShellのモジュールの1つに、不適切な文字(ダブルクォーテーションらしきもの)が含まれていて、特定のコマンドレットが日本語環境では全く動作しないという不具合がありました(画面7)。念のため付け加えておくと、Windows Server 2016の正式リリースで、この問題は解消されました。
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows Server 2016テクノロジ入門−完全版』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.