Leaves: テキストUI ディスク使用量ツリーマップ可視化ツール

Leaves: テキストUI ディスク使用量ツリーマップ可視化ツール

Leavesは、WinDirStatやQDirStatなどのツールにインスパイアされた、テキストモードのディスク使用量アナライザーです。ファイルやディレクトリを入れ子になった長方形の階層として可視化し、各長方形の面積はディスク上のアイテムのサイズに比例します。このアプローチにより、ユーザーはターミナル環境でディスク容量を消費している要素を素早く特定でき、特にグラフィカルユーザーインターフェースが利用できないリモートシェル接続において非常に有用です。

ツリーマップによるディスク使用量の可視化

Leavesは、ファイルシステムを表すためにツリーマップレイアウトを使用します。中央パネルにはさまざまなサイズの長方形が表示されます。例えば、あるファイルやディレクトリが兄弟要素の2倍の大きさであれば、長方形の面積もその2倍になります。

ツールは文字レベルの解像度で動作するため、可視化は粗い近似となります。これを管理するために、Leavesは視覚的な乱雑さを防ぐためのいくつかの機能を実装しています。

  • 展開と折りたたみ (Expansion and Deflation): ユーザーは必要に応じてディレクトリを展開または折りたたむことができます。ディレクトリを折りたたむと、詳細な子要素の長方形がファイルタイプの要約に置き換わり、同じ拡張子のファイルを累積サイズに比例した単一の長方形にグループ化します。
  • 最大深度の制御 (Max Depth Control): --max-depth フラグ(デフォルトは5)を使用すると、メモリと視覚的な明瞭さを確保するために、ツールがディレクトリツリーをスキャンする深さを制限できます。
  • X線モード (X-Ray Mode): x キーを押すと「x-ray」モードに入ることができます。このモードでは、ファイルをタイプ別にトップレベルでグループ化し、その後それらの領域をディレクトリによって分割します。これにより、スキャンされたパス全体でどの種類のファイルが最も多くのスペースを消費しているかについて、異なる視点を提供します。

ナビゲーションとインターフェース

インターフェースは、主に3つのエリアに分かれています。現在のパス、合計サイズ、およびファイル数を示すタイトルバー、折りたたみ可能なエクスプローラーツリーを備えたサイドバー、そして中央のツリーマップパネルです。

ナビゲーションは、キーボードショートカットとマウス操作によって行われます。

  • フォーカス表示 (Focus View): Enterキーを押すと選択したディレクトリにフォーカスし、現在の表示をそのディレクトリの内容に置き換えます。Backspaceキーはユーザーを親ディレクトリに戻します。
  • tree ナビゲーション (Tree Navigation): 矢印キーでエクスプローラーツリーを移動し、スペースキーでディレクトリを開閉します。
  • 深度の調整 (Depth Adjustment): +- キーで、可視化の実行時の深度を調整します。

設定とカスタマイズ

Leavesは、$USER_CONFIG_DIR/leaves/settings.toml にある設定ファイル、または LEAVES_ で始まる環境変数を通じて、高度なカスタマイズが可能です。

テーマとカラースキーム

迅速な視覚的スキャンを可能にするため、アイテムはタイプに基づいて色付けされます。ディレクトリは名前に基づいてクールトーンのパレット(viridis)を使用して色付けされますが、ファイルは拡張子に基づいてイエロー/オレンジ/ブラウンのスキームを使用します。

4つの組み込み済みテーマが利用可能です。

  • Fall: ファイルには暖色系、ディレクトリには寒色系。
  • Spring: 拡張子には寒色系、ディレクトリには暖色系。
  • Greys: グレーの陰影。
  • Mono: 白黒。

ユーザーは、settings.toml ファイル内でHTMLカラーコード、hex RGB、またはHSLトリプルを使用して、カスタムテーマを定義することもできます。

技術的な実装と制限事項

LeavesはRustで書かれており、ソースからビルドするにはRustツールチェーンが必要です。いくつかのプラットフォーム向けにビルド済みのバイナリも提供されています。

スキャンに関する考慮事項

ルートディレクトリ (/) をスキャンする場合、ユーザーは、無意味な結果を避けるために /dev, /proc, /sys, および /run の などの仮想ファイルシステムを除外する必要があります。これは、ネガティブオーバーライド(例: leaves -A -d 3 / '!/proc' '!/tmp')を使用して実現できます。

リンクの処理

  • シンボリックリンク (Symbolic Links): スキャンされたディレクトリ外のディスク使用量を二重にカウントすることを避けるため、ツールはシンボリックリンクを辿りません。
  • ハードリンク (Hard Links): ツールはハードリンクを検出しないため、それらは二重にカウントされます。

コミュニティの洞察と代替案

Hacker Newsコミュニティのユーザーは、Leavesを他のディスク使用量ツールと比較しています。一部のユーザーは ncdu, dua-cli, または mcdu のような伝統的なリストベースのアプローチを好む一方で、他のユーザーは、ファイルの大規模なクラスターを特定するために、ツリーマップ可視化がより直直感的であると考えています。

"ファイルタイプの拡張子によるパーティショニング機能は、文字レベルのキャラクターによる制限を制限するために、非常にスマートな追加機能です。"

その他の言及された代替案には、WizTree, GrandPerspective, SpaceSniffer のような GUI ツール、および TUI ツール Broot (特に br -w コマンド) が含まれます。

Sources