v1.12.3 — 値ではなく、形を比べる
テスト環境から取ったデータと、本番から取ったデータを並べる。値が違うのは当たり前で、見たいのは「日付の形が揃っているか」だけ。それなのに diff は全行を「違う」と言い、読める差分は 1 つも残りませんでした。
値ではなく、形を比べる
表示 ▸ 比較(diff)▸ フォーマットを比較(⇧⌘F)
数字は 1 桁ずつ、文字の並びは 1 個に潰してから比べます。だから:
2026-08-19 12:00:00 ERROR uid=41と2001-12-31 03:59:07 WARN uid=88は 同じ2026-08-19と2026/08/19は 違う(型の名前に置き換えないので、区切りの違いが残ります)007と7も 違う(ゼロ埋めの食い違いは、環境差の定番なので消しません)123と123も 違う(全角と半角)
仮名・漢字も値として畳みます。 日本語の CSV でこれを畳まないと、氏名や住所が全部差分になって「値は無視する」が嘘になります。ただし全角の記号と全角スペースは形として残します——、 と ,、全角空白と半角空白の食い違いは、まさに見つけたい違いだからです。
入口 4 つ(2 つのファイル・開いているドキュメント・クリップボード・URL)のどれから開いても効きます。5 つ目の入口ではなく、開いた後に切り替えるモードです。値の違いで読めない、と分かるのは開いてからなので。
この間、マージは封じます。 形が同じ=中身は違うので、片方を採ると中身が消えます。
メニューのチェックマークが、初めて出ます
validateMenuItem が AppKit から一度も呼ばれていませんでした(NSMenuItemValidation に適合していなかったため)。構造化表示がいまどのモードか、桁ルーラーが出ているか、末尾追従が入っているか——メニューを見ても分からない状態で出荷され続けていました。押せば動いていたので気づけませんでした。直したので、いまの状態がメニューに出ます。できない操作は灰色になります。
確認したこと
国税庁の法人番号 CSV から作った 20 万行で測りました(release ビルド)。
| 比べ方 | 結果 |
|---|---|
| 同じ行の値だけ差し替え | 完全一致(ハッシュ 0.14 秒) |
| 別のレコード同士 | 5,040 箇所が差分 |
下の行は正直に書いておきます。レコード自体が別物だと、空欄の有無や住所の桁ちがいで 1 行ごとに「形」が違うので、日付の差はその中に埋もれます。行が対応している比較(同じ抽出をやり直した、同じ行の値が置き換わった)では狙いどおりに効きますが、行が対応しない比較には「列ごとに形をまとめて突き合わせる」別の道具が要ります。それは次に作ります。
611 テスト green。配布と同じ .app で、4 つの入口・トグル・マージ封じまで通しました。
ダウンロード: MrEditor-1.12.3.dmg(署名・公証済み / macOS 13+)