1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【個人開発】「髙」や「﨑」が「?」に化けて基幹システムが止まるのを防ぎたい。未対応文字を可視化して安全に置換するCSV変換ツール

1
Posted at

販売管理、会計、給与、顧客管理などの社内システムや、取引先の指定フォーマット。
WebやSaaSからダウンロードしたCSVをこれらのシステムへ取り込もうとすると、「Shift_JIS(cp932)で取り込んでください」と言われる場面が今でもよくあります。

ここで問題になるのが、人名や地名に含まれる旧字体・異体字、環境依存の記号です。

  • 「髙橋」さんの「髙」(はしご高)
  • 「山﨑」さんの「﨑」(立つ崎)
  • 「濵田」さんの「濵」(まゆ浜)
  • 「㈱」や「①」などの丸数字・囲み文字

これらが含まれるCSVを一般的なツールでそのままShift_JISに変換すると、文字が勝手に ? に化けたり、消えてしまったりします。

その結果、基幹システムへのインポート時にエラーで弾かれたり、最悪の場合は名前が ? になったまま取り込まれて顧客への失礼につながったりします。

この「文字コード変換による文字化けや勝手な文字欠落」を事前に防ぎ、**何がどう変わったかを確認してから保存できるWindowsアプリ「MojiSafe Converter」**を作りました。

フォワードデプロイドエンジニア(FDE)として、小規模店舗や個人事業主、スタッフの皆さんの意見を聞きながら、作ったのでかなり使えるものになったと思います。

完全無料のオープンソース(MITライセンス)で公開しています。

MojiSafe Converterの画面。左側でファイルや文字コードを選び、右側のタブで差分やログを確認します


よくある困りごとと、このアプリでできること

現場でよくある悩みに対して、以下のような形で対応できます。

1. 人名の異体字を、安全な標準文字に寄せたい

髙 → 高、﨑 → 崎、濵 → 浜、邊/邉 → 辺 などのよく使われる異体字は、標準の辞書ルールにあらかじめ登録されています。
文字を欠落させることなく、Shift_JISでも正しく扱える文字へ置き換えます。

2. 変換できない未知の文字を「勝手に消されたくない」

どうしても出力先の文字コードで表現できない文字(絵文字や特殊な外字など)が出た場合、通常の一括変換だと黙って消えたり ? になったりします。
このアプリでは、フォールバックモードとして [U+XXXX](Unicode表記) を選べます。
文字が消えずにコードポイントの文字列として残るため、後からエディタで検索して「どの文字だったのか」を確実に特定・対処できます。

3. 保存する前に「どの行が変わったか」を目で確かめたい

いきなり変換後のファイルを書き出すのではなく、画面上に差分ビュー(Diff)と変換ログを表示します。
「何行目のどの文字が、どの文字に置き換わったか」を一覧で確認し、納得した上で保存できます。

差分プレビュー画面。変更箇所がハイライトされ、保存前に確認できます

4. Excelファイル(.xlsx)のシートを直接読み込みたい

CSVだけでなく、Excel(.xlsx)ファイルもそのままドラッグ&ドロップできます。
シートを選べば、直接Shift_JISのCSVへ変換処理を行えます。一度Excelで開いてCSV保存し直す手間が省けます。


実際に動かしてみる手順

ステップ1:ファイルを読み込む

アプリを起動し、変換したいCSV、テキストファイル、または .xlsx ファイルを入力欄にドラッグ&ドロップします。
出力ファイル名は自動的に _converted.csv などの名前がセットされます(変更も可能です)。

ステップ2:文字コードと処理方法を選ぶ

  • 入力文字コード:通常は UTF-8。不明な場合は「自動判定」ボタンを押すと推定してくれます。
  • 出力文字コード:取り込み先システムに合わせて shift_jis または cp932 を選びます。
  • 未対応文字処理:推奨は [U+XXXX] です。

ステップ3:「プレビュー」で確認する

ここが一番のポイントです。いきなり「実行」を押さず、まず「プレビュー」を押します。

画面下のタブに、以下の情報が表示されます。

タブ 確認できる内容
差分ビュー 変換前と変換後のテキスト比較。変更箇所が色付けされます。
置換ログ 置換が発生した行番号、元の文字、置換後の文字、適用されたルール名。
未対応文字一覧 出力文字コードで表現できず、フォールバックされた文字と出現回数。

もし未対応文字一覧に想定外の文字が出ていた場合は、その場で辞書ルールを追加して対応することもできます。

ステップ4:結果に納得したら「実行」を押す

確認して問題がなければ「実行」を押します。
変換後のファイルが出力先に保存されます。元ファイルが上書きされることはありません。


辞書ルールは自社のルールに合わせて育てられる

会社や業務によって、「この記号はこう置き換えたい」「この異体字はこの漢字に統一する」というルールが決まっている場合があります。

MojiSafe Converter の「ルール編集」画面では、置換ルールを自由に追加・編集できます。

ルール編集画面。検索やカテゴリ絞り込み、テストを行えます

ルール追加による「意図しない壊れ」を防ぐテスト機能

辞書ルールをたくさん追加していくと、「ある文字のために足したルールのせいで、別の単語の変換がおかしくなった」というトラブルが起きがちです。

そのため、ルール編集画面にはシミュレーターとテスト機能を付けています。

  1. 「テストケース」にあらかじめ確認したい文字列を登録しておく。
  2. ルールを変更した後に「全件再検証」を押す。
  3. 以前の期待結果と違う箇所があれば、文字単位で差分が表示される。

これによって、安心して自社専用の変換辞書を育てていくことができます。


コマンドライン(CLI)でのバッチ処理にも対応

GUIでの目視確認が基本ですが、日次・週次で決まったフォルダのCSVを定期処理したい場合のために、コンソール版のCLIツール(MojiSafeConverter.Cli.exe)も付属しています。

# 1ファイルの変換
MojiSafeConverter.Cli.exe convert "input.csv" "output.csv" --input-encoding utf-8 --output-encoding shift_jis

# ファイル保存をせず、未対応文字がないか診断だけ行う
MojiSafeConverter.Cli.exe check "input.csv" --input-encoding utf-8 --output-encoding shift_jis

# フォルダ内のCSVを一括変換
MojiSafeConverter.Cli.exe batch "C:\input" "C:\output" --input-encoding utf-8 --output-encoding shift_jis

タスクスケジューラやPowerShellスクリプトに組み込んで、自動実行させることも可能です。


使う準備

Windows 10 / 11 の環境で、インストール作業不要(ZIPを展開するだけ)で動きます。

  1. GitHub Releases から最新のZIPファイルをダウンロードします。
  2. ZIPを適当なフォルダに展開します。
  3. MojiSafe Converter.exe をダブルクリックして起動します。

レガシーシステムへのデータ連携や、CSVの文字化け・人名異体字の扱いに頭を悩ませている現場で、お役に立てれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?