Hexter と Hex Fiend:Mac ではどちらのヘックスエディタを使うべきか
Mac でヘックスエディタを検索したことがあるなら、ほぼ間違いなく Hex Fiend に行き当たったはずです。無料でオープンソース、そして「Mac 向けベストヘックスエディタ」のほぼすべてのリストで定番のおすすめとされています。実際に質の高いソフトウェアでもあります。これは「なぜ私たちのアプリの方が優れているか」という記事ではありません。Hex Fiend が今なお正解である点と、Hexter が違いを生むほど別のやり方を採っている点を、率直に見ていく記事です。
手短に言うと
Hex Fiend は成熟した無料のオープンソースツールで、主に大規模な生の編集能力を中心に作られています。Hexter は別の優先事項を軸にした新しいアプリです。それは、ただ見ているだけのつもりのファイルをうっかり壊してしまいにくくすることです。すでに何をしているのかを正確に理解していて、数十ギガバイトのファイルを快適に差分比較したり編集したりする必要があるなら、それについては今日の時点で Hex Fiend の方が有能なツールです。デフォルトで慎重に振る舞い、一般的なファイル構造を最初から理解しているヘックスエディタが欲しいなら、それこそ Hexter が目指して作られたものです。
機能ごとの比較
| Hex Fiend | Hexter | |
|---|---|---|
| 価格 | 無料、オープンソース(BSD ライセンス) | Mac App Store 未リリース |
| 大きなファイルの扱い | メモリに読み込まずに約 118 GB までのファイルを扱える | チャンクキャッシュを通じて必要に応じてバイトを読み込む。Hex Fiend の規模ではまだベンチマーク未実施 |
| 編集の安全性 | 有効化できる(またはデフォルトに設定できる)明示的な読み取り専用モードを備えるが、それ自体が初期状態のデフォルトではない | すべてのファイルを常に読み取り専用で開き、そのデフォルトを変更する設定はない。編集には明示的な切り替えが必要で、保存するまで編集内容は元に戻せるパッチレイヤーにとどまる |
| 上書き保護 | 標準的な保存。ドキュメントに組み込みのバックアップ手順の記載はない | オリジナルファイルの上書きには確認が必要で、自動バックアップコピーを提供する(タイムスタンプ付きの履歴ではなく、以降の保存ごとに置き換えられる単一の .hexter-backup ファイル) |
| バイナリ差分 | 挿入/削除を考慮した差分。サイズ上限はドキュメントにもリリースノートにもどこにも明記されていない | 本物の差分アルゴリズム。ただし現状は非常に大きな比較で上限があり、そのサイズを超えると粗い結果に切り替わる |
| 組み込みの構造解析 | かなり大きなテンプレートライブラリ(約 17 カテゴリ)を同梱するが、テンプレートを手動で閲覧・適用する必要がある | PNG、ZIP、Mach-O、WAV、SQLite の構造を開いた時点で自動的に検出・解析。テンプレートを選ぶ必要はない |
| ハッシュ | 組み込み機能ではない | CRC32、Adler32、MD5、SHA-1、SHA-256、SHA-512 をバックグラウンドでファイル全体にわたって計算 |
| 文字列、ブックマーク、異常検出 | 組み込みではない | すべて組み込み:文字列抽出、メモ付きの名前付きブックマーク、エントロピーの急増・不審なバイト列・フォーマット署名の不一致のスキャン |
| インターフェース | AppKit、機能的、10 年以上前から | ネイティブな SwiftUI、ダークモード、現行の macOS 向けに構築 |
| 拡張性 | 二条項 BSD ライセンス、他のアプリにフレームワークとして組み込み可能 | 組み込み向けには設計されていない。単体アプリ |
| カスタムバイナリテンプレート | テンプレートシステムを通じて任意のフォーマットに対応 | まだ非対応。5 つの組み込みパーサーが一般的なフォーマットを網羅するが、ユーザー定義のテンプレート言語はない |
Hex Fiend が今なお優れた選択肢である場合
数十ギガバイトのファイル、ファームウェアダンプ、ディスクイメージ、大きなデータベースエクスポートを日常的に扱うなら、Hex Fiend のメモリモデルとその規模での実績には抗いがたいものがあります。その差分ツールにはドキュメント化されたサイズ上限がなく、これは大きなバイナリの比較を仕事にしている場合に重要です。無料であることもそれ自体に価値があり、ヘックス編集コンポーネントを組み込む必要があるツールを作っているなら、その BSD ライセンスとフレームワーク設計が、単体アプリではできない形でそれを可能にします。
Hex Fiend はすでにかなりのテンプレートライブラリも同梱しています。実行ファイル、アーカイブ、音声などを網羅する約 17 カテゴリで、構造化フォーマットについてもゼロから始めるわけではありません。まだ対応されていないマイナーだったり独自だったりするフォーマットのカスタムテンプレートが必要なら、Hex Fiend のテンプレートシステム(そしてこの方向にさらに踏み込んだ 010 Editor や ImHex のようなツール)がそこへ導いてくれます。Hexter の構造解析は、把握している 5 つのフォーマット、PNG、ZIP、Mach-O、WAV、SQLite についてはうまく機能しますが、独自のフォーマットを定義することはできません。
Hexter が違うやり方を採っている点
核心的な違いは機能ではなく、デフォルトです。Hex Fiend にも読み取り専用モードはありますが、それをオンにする(または環境設定でデフォルトに設定する)ことを知っておく必要があります。初期状態では、ファイルを編集可能なモードで開きます。Hexter はすべてのファイルを常に読み取り専用で開き、それを変更する設定はありません。編集は意図的にオンにするもので、変更はオリジナルファイルに触れる前に確認・取り消しができるパッチレイヤーに保持されます。編集よりもファイルを見ることに多くの時間を費やすなら、そしてヘックスエディタでの作業のほとんどは実際には編集ではなく確認なのですが、そのデフォルトは思っている以上に重要です。見慣れないファイル、他人の設定ファイル、ダウンロードしたファームウェアイメージ、デバッグ中のファイルを開いても、まずスイッチを切り替えるのを覚えておく必要なく、デフォルトで何のリスクもないということです。
2 つ目の違いは、Hexter が認識できるファイルを開いたときに自動的に起こることです。平坦なヘックスの壁の代わりに、実際の構造が得られます。PNG のチャンク境界とそのタイプおよび CRC、ZIP アーカイブのローカルファイルヘッダー、Mach-O バイナリのロードコマンド、SQLite ファイルのヘッダーフィールドが、生のバイトの隣に解析されて配置され、設定は一切不要です。Hex Fiend の同梱テンプレートでも同様の詳細は得られますが、まず自分でテンプレートリストを閲覧して適用することになります。
それに加えて、ハッシュ計算、文字列抽出、異常検出(エントロピーの急増、署名の不一致、不審なバイト列)が Hexter には直接組み込まれています。Hex Fiend の世界では、それらはたいてい別のツールになります。
率直なおすすめ
すでにヘックスエディタに慣れている、非常に大きなファイルを扱う必要がある、あるいは長い実績と活発なコミュニティを持つ無料ツールが欲しいなら、Hex Fiend を使いましょう。まだ完全には信頼していないファイルを見ているかもしれないと想定し、デフォルトでそれに触れず、一般的なフォーマットについて設定なしでより多くを教えてくれるヘックスエディタが欲しいなら、Hexter を使いましょう。どちらも間違いではありません。誰がなぜ使うのかについて、異なる前提を軸に作られているだけです。
Hexter は活発に開発が進んでいます。デフォルトで読み取り専用、組み込みの構造解析、そしてモダンなネイティブインターフェースが、ヘックスエディタに求めるものに聞こえるなら、注目しておくべきアプリです。