プログラミング入門

依存ゼロのRust製システム情報ツール「purefetch」が話題!fastfetch風の軽量フェッチャーを徹底解説

「neofetchやfastfetchは好きだけど、外部クレートへの依存がゼロのやつが欲しい…」そんなニッチなこだわりを持つ開発者、実はいますよね😄

そんな要望にど真ん中で応えるツールが登場しました。その名もpurefetch。Rustの標準ライブラリ(std)とLinuxの生システムコールだけで作られた、依存グラフが完全に空のシステム情報フェッチャーです🦀

purefetchってどんなツール?

Rust programming
Rust programming / Photo by Daniil Komov via Pexels

purefetchは、ターミナルにOSやCPU・メモリなどのシステム情報をかっこよく表示するツールです。neofetchやfastfetchと同じジャンルに属しますが、crates.io(Rustの外部パッケージ置き場)から何もダウンロードしないという点が最大の特徴。

イメージとしては、「冷蔵庫にあるものだけで料理を作る」みたいな感じです🍳 外から食材(ライブラリ)を買ってこなくても、Rustの標準機能だけでここまでできる、という挑戦ですね。

情報の取得には、Linuxカーネルへの生syscall(システムコール)を直接使っています。これはOSに「今のCPU使用率教えて」「メモリどのくらい残ってる?」と直接聞きに行くイメージです。

ゼロ依存で何を取得できるの?

purefetchが取得・表示できるシステム情報の例はこんな感じです:

  • 🖥️ OS名・バージョン
  • 🧠 CPUの名前・コア数
  • 💾 メモリ使用量
  • ⏱️ システムの稼働時間(Uptime)
  • 🐚 使用中のシェル

fastfetchと同じような情報を、外部依存なしでサクッと表示できるのはかなり面白いですよね。

実際のコードのイメージ(Rustのsyscall例)

purefetchの仕組みを理解するために、Rustで生syscallを呼ぶ簡単なイメージをご紹介します。

// Rustの標準機能だけでファイルを読んでシステム情報を取得するイメージ
use std::fs;

fn get_os_info() -> String {
    // /etc/os-release を直接読み込んでOS情報を取得
    let content = fs::read_to_string("/etc/os-release")
        .unwrap_or_else(|_| String::from("Unknown OS"));

    // PRETTY_NAME の行だけ抽出
    for line in content.lines() {
        if line.starts_with("PRETTY_NAME=") {
            // 余分なクォートを除去して返す
            return line
                .trim_start_matches("PRETTY_NAME=")
                .trim_matches('"')
                .to_string();
        }
    }
    String::from("Unknown")
}

fn main() {
    println!("OS: {}", get_os_info());
}

ポイントをまとめるとこんな感じです:

  • use std::fs だけで外部クレートは一切なし
  • Linuxの /proc/etc 以下のファイルを読むだけでかなりの情報が取れる
  • 生syscallを使えばさらに低レベルな情報にもアクセスできる

「AI支援で作った」という正直な開示が好印象


作者はREADMEの中で、このツールはClaude Codeを使ってAI支援で作られたと明記しています。設計の方針は自分で決め、コードの変更はすべて自分でレビューしたとのこと。

「AIで作ったから品質が低い」ではなく、「AI支援を透明に開示したうえで、しっかり自分の意図を乗せた」という姿勢は、オープンソースコミュニティでも好意的に受け取られていますよね。これからのOSS開発のひとつのスタンダードになっていきそうです。

まとめ

purefetchは、Rustの標準ライブラリだけで動く依存ゼロのシステム情報フェッチャーです。「なぜ依存を減らすの?」という問いへの答えは、セキュリティリスクの低減・ビルドの高速化・メンテナンスコストの削減など、実は実用的な理由がたくさんあります。

Rustを学んでいる方には「stdだけでここまでできる」という生きた教材にもなるので、ぜひGitHubで中身を覗いてみてください🔍 「むずかしそう」が「できそう」に変わるかもしれませんよ!

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

もしも

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

FastAPIでWebAPI開発を実践的に学ぶ

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です