Kyde: 高性能 Rust ベースの Git コミット&差分エディタ
Kyde: 高性能 Rust ベースの Git コミット&差分エディタ
Kyde は、主に変更のレビューとコードのコミットにエディタを使用する開発者向けに、重い JVM ベースの IDE に代わる高速なネイティブコミット・差分コードエディタです。Rust と GPUI フレームワークで構築され、低遅延パフォーマンスとシンプルな Git ワークフローに重点を置いています。
GPU 加速パフォーマンス
Kyde は、GPUI フレームワーク(Zed エディタでも使用されている同じフレームワーク)によるネイティブ GPU レンダリングを活用して高性能な描画を実現しています。このアーキテクチャにより、非常に大きなファイルを扱う場合でもスムーズなスクロールと低遅延が保たれます。
- ビューポート仮想化: 画面に現在表示されている行だけをフレームごとに描画するため、巨大ファイルでもパフォーマンスが低下しません。
- 非同期ハイライト: 大きなファイルはプレーンテキストとして即座に開かれ、構文ハイライトは別スレッドで適用されるため UI がブロックされません。
- ベンチマーク: 作者は 37,000 行の
package-lock.jsonを約 120fps でスクロールできたと報告しています。
コア Git ワークフロー機能
Kyde は一般的な Git 操作のためのビジュアルインターフェースを提供し、実質的に git add -p を視覚化します。変更のレビューとコミットに必要なツールに絞り込んでいます。
コミットと差分ビュー
Kyde は単語レベルのハイライトを備えたサイドバイサイドの差分ビューを提供します。中央のガターからコードの特定ハンクをステージまたはリバートでき、コミット対象を細かく制御できます。
ブランチとファイル管理
- ブランチスイッチャー: ブランチをフォルダーに整理し、最近使用したローカルルートを追跡できる検索可能なツリーです。
- ロールバック: 変更のチェックボックスツリーを持つネイティブウィンドウで、追加ファイルの削除オプション付きで選択的にロールバックできます。
- プッシュ: アプリが上流ブランチより進んでいるときに、ステータスバーのボタンやコンテキストメニューから変更をプッシュできます。
検索とナビゲーション
Kyde は効率を保つためにいくつかの IDE ライクなナビゲーションツールを実装しています:
- ファジーファインダー:
⌘⇧O/⌘Pで「ファイルへ移動」、⌘⇧Aで「アクション検索」。 - グローバル検索:
⌘⇧F(git grepを利用)でリポジトリ全体の全文検索が可能です。 - スクラッチファイル: 一時的なメモやノート用の専用バッファを提供します。
技術スタックとアーキテクチャ
Kyde は以下の高性能ライブラリを組み合わせてゼロから構築されています:
- GPUI: GPU レンダリング GUI フレームワーク(Apache-2.0)。
- Git:
libgit2を使わず、システムのgitコマンドを呼び出して動作します。 - Similar: 行・単語レベルの差分計算に使用(Apache-2.0)。
- Tree-sitter: 言語パック(TypeScript、Rust、JSON、Python、Go など)をオンデマンドで読み込み、構文ハイライトを提供します。
インストールと設定
Kyde は主に macOS アプリとして配布されています。コードはクロスプラットフォームで、GPUI は Windows と Linux でも動作しますが、現時点では macOS 用のビルドのみが提供されています。
- インストール: GitHub のリリースページから
kyde-macos.zipをダウンロードします。 - インストール時の注意: アプリはまだコード署名されていないため、macOS Gatekeeper が最初の起動をブロックすることがあります。右クリックして「開く」を選択するか、
xattrで quarantine フラグをクリアしてください。 - シェル統合:
~/.local/binにkyシェルコマンドへのシンボリックリンクを作成でき、ターミナルからリポジトリを直接開くことができます。 - キーマップ: WebStorm と VSCode 用のプリセットが用意されており、オンボーディング時の摩擦を減らします。
コミュニティのフィードバックと議論
プロジェクトに対するコミュニティの反応は賛否両論で、技術的実装とプロジェクトの出自の両方に焦点が当てられています。
"見た目は好きです。でもターミナルにはすでに優れた diff と commit ツールがあります。"
一部のユーザーは、乱視の人向けのライトテーマや Git サブモジュールへの対応など、アクセシビリティ機能の追加を望んでいます。別のユーザーは、カスタム Neovim 環境やエージェント型 AI コーディングツールに比べてネイティブアプリの価値を疑問視しています。
また、作者が Rust を知らないまま AI アシスタンスでプロジェクトを構築したことから、"vibe‑coding" の側面についても大きな議論がありました。コード生成を AI に任せることがプログラミングに該当するかどうか、開発者間で意見が分かれました。
既知の制限事項
- リリース: プリビルトバイナリは macOS のみ提供されています。
- エディタ機能: ソフトラップとキャレット追従スクロールは現在未実装です。
- バッファ管理: 現在エディタはバッファにフラットな
Stringを使用しています。非常に大きな編集を効率的に処理するため、将来的にロープベースのバッファへ移行する予定です。