Windowsアプリを作って解決

ファイル名のUnicode正規化を行うアプリ「CharMerger」

Macから送られたファイルの名前

Macで作成し.zip圧縮された状態で送られてきたファイルに日本語が使われているとき、ひらがなやカタカナの濁点や半濁点がヘンテコであることに気づきました。Windowsでは単体1文字で表現される「ガ」という文字が、Macのファイル名表現では「カ」という文字と「゛(濁点のみ)」という文字を並べて組み合わせることで表現されているためです。ファイル名全体がまったく理解できない文字列になってしまう、いわゆる文字化けという状態とも違います。

一見、Windows上のExplorerでは「ガ」と正しく見えてしまうのですが、Adobe Bridgeでは「カ ゛」と大げさなまでに分離して見えるため、おかしな状態になっていることには気づけます。またファイル名をコピーしてメモ帳などにペーストしてみると、やはり「カ ゛」と、別文字であることが見て取れます。

見た目が悪いことに加え、アプリケーションでファイルを開こうとしたときに正しく処理できないことがあるため、分離している濁点と半濁点をくっつけて(その部分の文字をいったん削除して、手作業で打ち直す)リネームするのですが、大量にあるファイルについてひとつずつ行うのは大変です。

Unicode正規化「くっつける/分離する」

この「見た目は同じように見える文字同士(「カ」+「 ゛」という表現と「ガ」という表現)をくっつける、もしくは分離させる」という処理はUnicode正規化といいます。

フォルダを指定することで、それ以下のファイルすべてについて検証を行い、「゛」「゜」が現れた場合に、直前の文字とのUnicode正規化(くっつける)を行い、リネームを自動的に行うアプリを作成しました。

ファイル名のUnicode正規化を行うアプリ charMerger

まとめ

今回のアプリはChatGPTに質問しながら作成しました。文字表現について、文字コードの規格であるUnicodeに正規化という仕組みまで用意されていることを初めて知りました。手作業でやっていることを地道にプログラミングするつもりでいましたが、その必要すらないことに驚きました。

ネットワークの無効/有効を切り替える「Network Adapter Checker」

謎の「ネットワークケーブルが接続されていません」

PCのネットワークアダプタに挿しているはずのLANケーブルが抜けているとき、ローカルエリア接続が「ネットワークケーブルが接続されていません」という状態になり、当然、すべてのネットワークに繋がらなくなってしまいます。

本当にケーブルが抜けているのなら、挿し直せばよいのですが、抜けていないのに、またケーブル自体にも問題がないのに、この状態になってネットワークが切れる事態が頻発するようになりました。

アダプタの「無効にする」→「有効にする」で復帰する

ケーブルやその先のスイッチングハブをどれだけいじっても切断状態は改善しないのですが、問題のローカルエリア接続について、いったん「無効にする」をし、すぐに再び「有効にする」をすることで復帰することがわかりました。

ネット接続を監視し無効化/有効化を自動で行う

自分がPC前にいればまだよいのですが、離れた場所からリモート操作しているときに切断状態になるとお手上げです。そこで、ネットワークがつながっていないことを検出し、無効化と有効化を自動で行うアプリを作成しました。

ネットワークが切れていたら無効化・有効化を自動で行う「Newwork Adapter Checker」

Windows起動時に自動的に起動するよう、タスクスケジューラに登録しました。アダプタの無効化、有効化操作には管理者権限が必要なため、管理者として起動するようにしています。また管理者権限がない状態で手動で起動してしまった場合には、その旨を警告します。

まとめ

不具合の原因は、ネットワークカードの交換を要する故障かもしれませんが、とりあえず使えるアプリにはなりました。シェルを非表示で起動してコマンドを実行する方法を組み込む方法を勉強できました。


この記事が気に入ったらサポートをしてみませんか?