僕のYak Shavingは終わらない

車輪の再発明をやめたらそこには壮大なYakの群れが

あるフォルダ配下にのある拡張子のファイルだけにある半角カナをすべて全角カナに変換する

【追記(2012/02/11)】

/*.tt2ってやってサブフォルダのファイルまで再帰的変換できるようにするにはzshを使う必要があるかも。


一応これもスマフォ関連記事。

携帯版のサイトをスマフォ版に最適化していくときに半角カナを全角カナに変換する作業が発生しましたので一番簡単な方法を見つけてみました。

nkfを使う

nkf とは、かなり昔から存在している、漢字コード変換プログラムです。 いわゆる JIS コード (ISO-2022-JP に基づくもの)、 Shift_JIS (MS 漢字コード)、日本語 EUC (AT&T コード)、 そして最近では UTF-8 および UTF-16 の変換が可能です。
http://www.yynet.org/~yokota/INSTALL/nkf/

らしいですがなんとデフォで半角カナを全角カナに変換する機能がついてます(デフォでそんなことしていいんですかね?)。

とりあえず今回はそれが便利過ぎるってことで使わせてもらいます。

方法

nkfが入って無い人はyumとかapt-getとか使って適当にインストールしてください。

変換したいファイルがあるフォルダまで移動して以下のコードを打ち込めば終了です。

nkf -w --overwrite **/*.tt2
一応補足
  • -wでutf8に変換。ないとJISとかになるかも。
  • –overwriteで上書き。ないと”>”を使わないと行けないので面倒です。付けなければ標準出力に結果が出て終了。最初は付けないで試してみてください
  • **/*ってやることで再帰的にサブディレクトリのファイルを対象にしてくれるんですけどなんでそれでうまくいくのかはよくわかってないです。教えてエライ人!
  • 最後の拡張子tt2はPerlのテンプレートエンジンの拡張子なのでここはお好きなものに変更して下さい。

これだけで完了です。下手に自分でPerlのコードを書くよりも安全かもしれませんね。
とは言えいきなり上のコードを実行するのは怖いですね。
–overwriteを外すことでファイルへの反映しないで標準出力で確認できるのでまずそちらで試してみてください。
ではではまた〜