田畑2回目です。よろしくお願いします。
先日業務中に困ってしまったMacの濁点、半濁点問題についてお話ししたいと思います。
仕事環境概要
現在WindowsとMacを二台使っています。 Windows(Windows10)はサイボウズなどの社内との情報のやり取りや、ExcelやWordなどを使う作業などに使っています。 Mac(macOS Mojave)ではVScodeやAdobeXDやIllustratorなどを使ってサイトの運用を行っています。そしてターミナルでgitを使ってファイルのバージョン管理を行っています。 二台体制になったのはここ1年くらい。その前はWindowsのみ使ってました。
起きたこと
- 社内からPDFファイルの差し替え依頼あり。ファイル名は「シナプス○○申込書.pdf」というような感じの名前。
- Finderでファイルを選択してファイル名をaタグのhref属性にコピー、ペースト。
- ローカルにてリンクをクリックしてpdfが表示されるのを確認。
- その後サイトにあげてみるとリンクをクリックしてもpdfが表示されない。why??
試してみたこと
- ファイル名が違うのかと思って再度ファイル名をaタグのhref属性にコピペして更新。→結果変わらず。
- パスを間違ったかと思い、ファイルのパスを確認してやり直した。→結果変わらず。
- ファイルが壊れているのかと思ってサーバーから消してアップし直した。→結果変わらず。
- OSのアップデートをしてなかったせいかも!と念の為アップデートをするも、再度同じ状況が発生。→今回の件とは関係なさそう。でもアップデートはこまめにしよう
苦悩していたらシステム担当のスタッフが調べてくれたので、ローカルとサーバーのファイル名が違っているようだということが判明。 ローカルのファイル名の「シナプス」の「プ」という文字が2文字扱いになっているとのこと。
どうみても一文字の「プ」が、バックスペースキーで1文字ずつ消していくと確かに「フ」と「゜」の2文字になっていました!!
Macの濁点、半濁点問題
Mac上での濁点、半濁点のファイルの扱いについては有名な問題らしく、調べたらブログなどで紹介されていました。 かいつまんで説明すると
- Macの文字コードは「UTF-8-Mac」というNFDの変種が使われている。
- UTF-8-Macでは、濁点・半濁点文字、例えば「プ」を「フ」と「゜」、「ブ」を「フ」と「゛」の二文字を合成して表現する。
- Windows 上で通常の操作を行う場合、NFCに基づいた表記がされるので「プ」や「ブ」は一文字で表現される
参考:Unicode正規化 https://ja.wikipedia.org/wiki/Unicode%E6%AD%A3%E8%A6%8F%E5%8C%96
ただMac上ではすべてUTF-8-Mac形式になった!というわけでもなく、使っているソフトなどでも違っていました。
- MacのFinder:UTF-8-Mac形式。
- MacのVScode:Finderから名前をコピーしてhtml内へペーストするとUTF-8-Mac形式。VScode内でのファイル一覧表示でみると「プ」は一文字。
- Macのローカルサイト(dockerで稼働):UTF-8-Mac形式で記述したリンクでも、「プ」は一文字で記述したリンクでも、同一ファイルをダウンロード。
- MacのGitでアップしたpdfファイル名:「プ」は一文字に変換。(サーバーはLinux)
今回の場合
- MacのVScode:Finderから名前をコピーしてhtml内へペーストするとUTF-8-Mac形式。
- MacのGitでアップしたpdfファイル名:「プ」は一文字に変換。(サーバーはLinux)
の組み合わせで「違うファイル」になってしまい、ダウンロードできなくなったようです。
シナフスだったら…
もしうちがシナフスであれば起きなかった問題か!と思いましたが、日本語名のファイルを使っている限りいつかは発生する問題ですね…。
日本語名のファイルを使わないという回避方法もあるとは思いますが、日本語名のファイルの方がダウンロードした後に見分けやすいと思うので、うちはこのまま日本語名のファイルでいくと思います。
日本語ファイルの差し替えは今までもあったのですが、頻度も高くはなく、偶然今までこの問題が起きなかったようです。 このUTF-8-Mac方式で表記されている場合、目視では判別はほぼ不可能なので、日本語名のファイルを扱う際はFinderで名前をコピペするのはやめるということに落ち着きました。(名前をコピペする時はVScodeかgitのファイル一覧からする。つまりUTF-8-Mac形式にならないようにする。)
Macの濁点、半濁点問題にあたったのは初めてだったのでとても驚きました。
リンク切れの理由と対処方法が分かったので今後の更新作業に活かしていきたいとおもいます。