NKF、Network Kanji Filterは、Unixワークステーション全盛の1987年に作られたプログラムだが、いまだにメンテナンスが行われている。Unix/LinuxだけでなくWindowsなど他のプラットフォームでも利用が可能だ。筆者もいまだに使い続けている。
簡単にいうと、NKFは、シフトJISやJISコード(ISO-2022-JPなどと呼ばれることがある)、EUC、UTF-8/16/32などのテキストエンコーディングを相互変換するためのコマンドラインツールだ。そのほか、MIMEのBase64やQuoted Printableのエンコード、デコード機能、カタカナの半角、全角変換などの機能がある。インターネットなどから入手した「古い」テキストファイルには、JISコードやEUC、あるいはシフトJISのものがある。これらを現在のWindowsで標準的なUTF-8エンコードに変換する場合にNKFを使うことが多い。
NKFには、ファイルのエンコード推測機能があり、通常は、出力エンコードを指定するだけで処理が可能だ。このため、ファイルをUTF-8で出力したい場合、
nkf.exe -w8 <入力ファイルパス>
とする。また、ファイルの文字エンコーディングを調べたい場合には、
nkf.exe -g <入力ファイルパス>
を使う。出力だけを指定すればよい簡易な変換とエンコード形式の推測機能があることがNKFの強みであり、いまでも利用者がいる理由でもある。
たとえばless.exeは、文字エンコードを変換しないため、nkf.exeをパイプラインの途中に入れてUTF-8に変換する。このとき、元のエンコードを特定する必要がない。
nkf.exeを入手する
Unix時代のオープンソース・ソフトウェアなので、ソースコードで流通しており、ユーザーは各自コンパイルして利用するのが普通。しかし、標準的に開発環境が含まれているUnixと違い、Windowsでは、開発環境を入手する必要がある。
多くのLinuxディストリビューションでは、パッケージ管理ツール経由でインストールできることが多い。このため、WSLでも利用することが可能だ。
まず、最新版のNKFは、Ver.2.1.5で、2018年12月15日にリリースされたものだ。ソースコードは、いまではサービスが終了したOSDNにオリジナルがあったが、その複製がいくつかのサイトにある。以下は、ミラーサイトのリストである。
https://jaist.dl.osdn.jp/nkf/
https://iij.dl.osdn.jp/nkf/
https://ymu.dl.osdn.jp/nkf/
上記のサイトに「70406」というディレクトリがあり、その中に「nkf-2.1.5.tar.gz」というアーカイブファイルがある。この中にソースコードが入っている。ダウンロードしたら適当なディレクトリに解凍しておく。
最新版のバイナリを入手するなら、GitHubにあるkkato233/nkf リリースから最新版(Latest)を入手するのが最も簡単だ。ただし、リポジトリの説明にあるように「非公式な分岐版」である。とはいえ、正式なWindowsバイナリも配布は行われていない。
インターネット検索するとVectorなどにいくつかnkf.exeが登録されているが、いずれもバージョンが古いもの。
他人がコンパイルしたバイナリは信用できないなどの理由でどうしても自分でコンパイルしたい場合、Visual StudioのCommunity版をインストールする必要がある。ダウンロードは、以下のURLから行える。
https://visualstudio.microsoft.com/ja/downloads/
インストール時には、「C++によるデスクトップ開発」のワークロードを含めるようにする。
Visual Studio 2022をインストールしたら、スタートメニューから「Developer PowerShell for VS 2022」を開く。ダウンロードしたnkf-2.1.5.tar.gzを展開したディレクトリに移動する。ここで、nmakeコマンドでNKFをコンパイルする。
nmake /f nkf.mak
nkf.makは、Microsoftのnmake用に作られたMakefileで、基本的にはコンパイルは失敗しないはず。同じフォルダにnkf.exeが作られていれば、コンパイルは成功である。
今回のタイトルネタは、マーサ・ウェルズ(Martha Wells)の「マーダボット・ダイアリー」シリーズ「ネットワーク・エフェクト」(創元SF文庫。2021年。原題Network Effect, 2020)である。長編で、短編と比べると、特徴的な文体が饒舌と感じるが、同シリーズのマイルストーン的な作品。