バイナリエディタPheasant v0.1.0をリリースしました。

1. これは何か

screenshot

PheasantはRust製のバイナリエディタで、GPUアクセラレーション描画で大規模ファイルも軽快に動作可能です。 Claude Codeでコードを生成して作りましたが、設計だけでなく実装レベルでレビューが入っています。

https://github.com/suma/rusthex/releases/

2. なぜ作ったか

近年だとリッチな機能を持つバイナリエディタもありますが、私がバイナリエディタを作ろうと思ったのは約20年前にもさかのぼります。

大きなファイルでの動作速度を確保し、クロスプラットフォームに対応したエディタ当時は珍しかったのです。

そういう理由でアイディアは持っていたものの、過去に開発途中で投げだしたことはあり、Claude Code (Opus 4.5)の出現によって再度開発するモチベーションがわいてきました。2025年12月のことです。 自分用とはいえ半分趣味ではあります。

3. Pheasantの主な機能

  • ファイルを眺める: 巨大ファイル対応(メモリマップ)、ビットマップ可視化で全体の構造を俯瞰
    • 巨大なファイル対応は、Piece Tableと呼ばれるデータ構造でドキュメントを表現します。これにより巨大なファイルの挿入、削除、上書きに対応しつつも、高速な画面のスクロールも可能になります。
  • 検索・ナビゲーション: マルチスレッドでUIとは別スレッドで高速検索、ワイルドカード対応、ブックマーク機能
    • モダンなエディタっぽく仕上げるために、検索だけでなくブックマークやカーソルの履歴も保持するようにしました。
  • AI連携: 選択範囲をOllamaなど外部コマンド(LLM)にパイプして解析可能、MCPサーバーでClaude Codeから直接バイナリ操作
    • かなり実験的な機能で、今後どうなるか未定ですがLLMと接続してバイナリエディタ自身を拡張できるようにしています。といっても現段階ではログ画面に解析結果を表示するだけとなっています。

screenshot

4. AIとの連携

AI(LLM)を用いたバイナリ解析というのは今後主要なトピックになっていくと考えています。 そんな中、バイナリエディタとしてできるアプローチとしては次の2点が筋が良いと思っています。

  • 外部のLLMをエディタから呼び出す 前述したOllama連携(外部コマンド呼び出し)がこれです。
    • どうしてもバイナリエディタ側の機能は少なくなる、あるいはPython拡張のようなアプローチにせざるを得ない状況になるのではないかと思います。そんな中、LLMは光明かもしれません。少なくとも現状は、「ヒント」を外部からもらうためのインターフェースとしてコマンドラインで外部にデータ解析を投げるだけです。解析する主体は人間にあります。
  • MCPサーバー LLM側からバイナリデータを読み書き、解析するというアプローチです。
    • これはもう解析の自動化、あるいは解析する主体を人間(バイナリエディタ)から機械(LLM)へ移すという流れになります。現在のLLMの流行を考えると、こちらのアプローチも強くした方がいいかもしれません。実験的な機能なため、ドキュメントもあえて整備していません。

5. 今後の予定

バイナリ解析はどうなってしまうのか、という情勢ではありますが、まずは気軽に解析するためのアプローチとしてこちらのバイナリエディタPheasantを触ってもらえると嬉しいです。

https://github.com/suma/rusthex/releases/