ある一日
「すみません、プログラムが動きません」
「(……?)こちらでは再現できない状況です。どういう状況でしょうか?」
「なんか、動かないんですよね」
「決められたパラメーターじゃないと動かないんですよね。パラメーターを教えてください。調べてみます」
「えーっと、apple、でしたっけ。ちゃんと入れているはずなんです。あれ、3回目は上手くいきました」
「これこれ、こうです」
双方ともに、「Appleと入力してください」「Appleとちゃんと入力したはずなんです」という主張です。
結論から言うと、これは全角(full-width)文字と半角(half-width)文字の違いでした。
つまり、プログラムは「Apple.png」を受け付けてくれるけど、「Apple.png」を受け付けてはくれなかった、ということです。3回目は上手くいった、というのは、3回目はたまたま半角で入力していたのでしょう。そう、無意識のうちに……。
(普通の人は、自分が今、半角で入力したのか、全角で入力したのか、深く考えませんよね。)
英語には、全角/半角の概念はないらしい
英語には、そもそも、半角/全角という概念がないそうです。
つまり、「 (ホワイトスペース)」を埋め込んで、プログラムが動かなくなるのは、日本人あるあるのようです。これをアメリカ人のプログラマーに言わせてはいけない。知らんかった。羨ましい話です。このお豆腐「 」に苦しめられない人たちがいるなんて……。
Shift-JISとUTF-8
Shift-JISとUTF-8の違いは、ときどき問題を引き起こします。
Shift-JISはJISというくらい、日本語に特化したファイルフォーマットですが、UTF-8のほうがグローバルでユニバースでエレガントで、問題がないです。しかしながら、しかしながら、ExcelはだいたいデフォルトのファイルがShift-JISで保存されていて、日本のクライアントから飛んでくるファイルはだいたいShift-JISになっています。
(メモ帳のデフォルトは、Windows 10 May 2019 Updateから、UTF-8になりました。
Excelもいずれ、そうならないだろうか……。)
カタカナの「ソ」が含まれるパスで何か起こった場合、この文字コードの違いが原因である可能性があります。
ASCIIとUTF-8の話なので、ちょっと本題とはズレるのですが、これも面白い話です。
中華フォント現象
StardewValleyとか、キーボード入力で日本語を入力するのはちょっと怖いなーと思っています。ときどきゲームがぶっ壊れるからです。
海外製のゲームは、わざわざアルファベットで名前を入力することがある……のですが、GooseGooseDockでは信念を曲げて、ハンドルネームを入れています。パッと読める、パッと認識できるのは日本語だからです。
(半分くらいの人は、UIの英語を見た瞬間に逃げる)
しかし、中華フォント現象(日本語に対して中国語のフォントファミリーが採用されてしまう現象)が起きていて、見た目は、あまり美しくはありません。
日本語というのは、プログラマーにとっては、結構、難儀なものです。