レガシーなメインフレーム(特に日立製のホスト)と、オープン系システム(LinuxやWindows)の間でファイルをやり取りする際、エンジニアの前に大きな壁として立ちはだかるのが「漢字コード(外字・KEISコード)」の変換トラブルです。
文字化けを直そうと Linux でおなじみの nkf コマンドを叩いても、残念ながら nkf はKEISコードに対応していません。
「ファイル連携にHULFT(ハルフト)のような高価な商用ミドルウェアが入っていれば一発で変換できるけれど、今回は使えない……。オープンソースやフリーソフトだけで、LinuxやWindows上でKEIS ⇄ Shift_JISの変換をするにはどうすればいい?」
今回は、そんなニッチで深刻な悩みを解決する3つのアプローチをご紹介します!
🛠️ アプローチ1:nkfじゃない、多機能漢字フィルター「skf」を使う
Linux上でKEISコードを扱いたい場合に真っ先に候補に上がるのが、「skf(Simple Kanji Filter)」というオープンソースのコマンドラインツールです。
🔗 skf – simple kanji filter プロジェクト日本語トップページ – OSDN (※現在OSDNのポータルはアクセスしづらい状態が多いため、必要に応じてGitHubなどのミラーソース等から入手するのが確実です)
💡 特徴と注意点
-
nkfに非常によく似たコマンド体系ですが、nkfでは対応していないKEIS、EBCDIC、JEFなど、ホスト特有の様々なコード体系の相互変換に対応しているのが最大の強みです。 -
標準リポジトリにはない: 残念ながら、CentOS(Stream)やRocky Linux、AlmaLinuxなどの標準レポジトリ、および「EPEL」などの主要な外部レポジトリにも基本的にはパッケージ(rpm)が入っていません。そのため、基本的にはソースコード(tar.gzなど)をダウンロードし、環境内でコンパイル(Build)してインストールする必要があります。
「HULFTを使わない環境で、どうしてもLinux上でホストコードを裁かなければならない」という職人環境では、この skf をビルドしてシェルスクリプトに組み込む運用が今でも行われています。
🛠️ アプローチ2:WindowsでもLinuxでも!「Perl」でコードを書いて自作する
「サーバーにCコンパイラが入っていなくて skf をビルドできない」「Windows環境でも、Linux環境でも、同じ変換スクリプトを使い回したい」という場合に一番現実的なのが、Perlの標準モジュール(あるいはCPANモジュール)を使って変換スクリプトを自作する方法です。
PerlはWindows・Linuxの双方で動くため、1度スクリプトを書いてしまえばどこでも使い回せます。
📋 Perlでの変換実装イメージ
Perlで日本語エンコーディングを強力にサポートする標準モジュール Encode に、各種ベンダー固有のコードを拡張する Encode::HanExtra(CPANモジュール)などを組み合わせることで、KEISやEBCDICを自在にハンドリングできるようになります。
use Encode;
use Encode::HanExtra; # 日立KEISなどをサポートする拡張モジュール
# ※環境に応じてCPANから「Encode::HanExtra」や、
# 日立マッピング用の「Encode::EBCDICJA」等を入れておくと便利です。
my $keis_string = "..."; # ホストから受け取ったKEISデータ
my $sjis_string = encode('shiftjis', decode('hitachi-keis', $keis_string));
これを使えば、タダ(OSS)で、かつWindows/Linuxのマルチプラットフォームに対応した「独自のKEIS変換バッチ」を簡単に内製することが可能です。
🛠️ アプローチ3:Windows GUIでサクッとやりたいなら「ektou(駅頭)」
「プログラムを組むほどではない」「手元にある数個のKEISファイルを、Windows上でサクッとShift_JIS(またはその逆)にGUIで手動変換したい」という現場レベルの作業であれば、昔から有名なフリーソフトを使うのが手っ取り早いです。
🔗 ektou(駅頭)の詳細情報 : Vector ソフトを探す!
💡 特徴
-
Windows上で動作する、非常に息の長いコード変換フリーソフトです。
-
各種ホストコード(KEIS、JEF、IBM漢字など)と、Shift_JIS、EUC、JISコードとの相互変換を、分かりやすい画面操作(またはコマンドライン引数)で行うことができます。
-
開発現場での検証用や、一時的なデータメンテナンス用として、Windows端末に1つ忍ばせておくと非常に重宝するツールです。
📝 まとめ
メインフレームのKEISコード変換は、オープン系への移行期や、古いシステムとの連携部分で必ず一度はバグを誘発する魔のエリアです。
-
商用ミドル(HULFT等)が使えないLinux環境なら ➔ 頑張って
skfをビルドして組み込む。 -
OSを問わずプログラムで自動化したいなら ➔ Perl(
Encode)で変換スクリプトを自作する。 -
Windows上で手軽に手動変換・検証したいなら ➔ Vectorで名著フリーソフト
ektouをダウンロードする。
それぞれの環境や予算、運用体制に合わせて、最適なツールを選択して厄介な文字化け問題を乗り越えてくださいね!
