F*ファイルシステム - OSカーネルを迂回してSSDを直接読み込むファイル検索

2026/06/22 5:44

F*ファイルシステム - OSカーネルを迂回してSSDを直接読み込むファイル検索

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

ffs は、標準的な OS キャッシュを迂回してディスクデバイスを直接読み取る高パフォーマンスのコマンドライン検索ツールとして際立っています。従来のカーネルインターフェースよりも原始的なバイナリ解析を優先し、OpenMP を通じた並列処理などの技法を採用することで、最終的にキャッシュが枯渇する大規模データセットにおいて既存ツールを上回ります。その主な利点は、仮想ファイルシステム(VFS)経路に依存せずデータを解析できる点であり、これを可能にするためユーザーはマウントされていないボリュームや ISO イメージを直接検索できます。画像ファイルのみについて Elevated permissions は不要ですが(macOS のロープディスクを読み取る場合は SIP を無効にする必要があります)、APFS や Btrfs などのファイルシステムに対応しています。特に主要ディスクや Btrfs に対して更新の無効化リスクが存在するため、スーパーブロックへのルートアクセスを許可する必要がある macOS では、System Integrity Protection を無効にすることで深いディスクデータへのアクセスが可能になります。また、対象となるファイルシステムに応じて OpenMP や libzstd などの特定ライブラリが必要です。最近のアップデートがディスクへ deferred される前にカーネルによってキャッシュされる可能性があるため、一部のケースではユーザーが手動でディスク同期をトリガーする必要があります。初期段階ではカーネルキャッシュのクリアによるパフォーマンスペナルティを受けるものの、持続的なロープ読み取り速度により、標準ツールが追いつけない巨大ドライブにおける網羅的な検索において優れています。

本文

デレクトストレージ直接検索ツール「fff」のご紹介

この CLI ツールは、OS カーネルを経由せずディスクストレージそのものを直接読み込み、ファイルを検索する機能を提供します(

grep
に相当)。コードは C 言語 で約 1.5k 行 収められています。

📉 制限事項

  • sudo
    は、ローカルデバイスノード(例:
    /dev/rdisk*
    )を直接読み取る場合にのみ必要です。イメージファイル検索には管理者権限は不要です。
  • macOS のメインディスク上使用時は、**SIP(System Integrity Protection)**の保護を無効にする必要があります。
  • 新しいファイル書き込みの一部を見逃す可能性があります(手動で同期コールが必要な場合があります)。
  • OS の他のコンポーネントが書き込んでいる間、高揮発性ファイルシステム上のツリー検索ができないことがあります。
  • 本プロジェクトでは手動実装のファイルシステムのみをサポートしています。

✅ メリット

  • ディスクからブロックを直接読み込みます。
  • VFS やバッファリングされた
    read()
    パスを迂回し、ブロックデバイス自体をプリロード(
    pread
    )します。
  • ripgrep よりもさらに高速です(検索対象ファイル数が増えるほど性能差が拡大)。
  • マウントされていないボリュームを検索できます(単なるバイナリデータの解析)。
  • バイナリファイルを自動的に検出し、スキップします。
  • OpenMP を使用して処理負荷を全コアに分散させます。

🚀 高速な検索プロジェクト「fff」

実際に動作し、

sudo
不要で ripgrep の性能を超えるツールです。ぜひお試しください。

💾 サポートされているファイルシステム

Linux(ほぼすべてのファイルシステム)

  • Ext4 (

    ./fs/ext4.c
    )

    • 実装が最も簡単なファイルシステムのひとつです。インプレース方式のジャーナリングファイルシステムなので、多くの場合に fff の最適な対象となります。
    • ⚠️ 注意: カーネルが更新内容をキャッシュしている場合、最新のファイル変更が見えないことがあります。その場合は、手動で同期(
      fsync
      など)を強制してください。
  • Btrfs (

    ./fs/btrfs.c
    )

    • B-ツリー方式を採用した効率的なストレージですが、追加制限があります。
    • ファイル更新時にスーパーブロック全体を更新するため、fff がスーパーブロックを読み取った直後にカーネルがツリーを更新すると、読み取り結果が無効化されます。
    • 回避策:
      fsfreeze
      を使用するか、別の分離したボリュームを作成する。
  • APFS (MacOS) (

    ./fs/apfs.c
    )

    • Apple のプロプライエタリなファイルシステムです。リバースエンジニアリングによりサポートされていますが、セキュリティ強化により制限があります。
    • メインディスク上で実行するには SIP を無効化する必要があります(
      sudo
      バイパスも不可能)。
    • メインディスクに影響を与えずにテストする方法:ボリュームの生データへのパスとファイルシステムタイプを指定してマウントせず検索できます。
    ffs "<QUERY>" /path/to/volume.dmg apfs
    

🗜️ デタッチされたボリュームでの検索

fff はバイト列を直接読み取るため、マウントなしで任意のデタッチされたボリュームを検索できます(例:

.iso
,
.dmg
など)。

⚡ 速度について

fff は VFS やカーネルのファイルシステムキャッシュへのアクセスを持っていません。

  • 初期状態: キャッシュがないため低速。
  • 定常状態: カーネルが実際のディスク状態を読み込むようになり、次第に ripgrep よりも高速化します。

これは「カーネルの VFS がオーバーヘッドとなること」を証明しています。

以下のグラフは、Btrfs マウントされたドライブにおける ffs と ripgrep の比較結果です。ripgrep は高度な SIMD ベースのマッチャーを使用していますが、fff は約 1.8k 行の C コードのみです。

[repos] — 631,000 files

ToolTime
ffs5.505s
rg4.813s

[dev] — 1,500,000 files

ToolTime
ffs18.413s
rg25.673s

[home] — 3,250,000 files

ToolTime
ffs36.205s
rg74.690s

※ ripgrep に使用されたフラグ:

-F --no-heading -H -n --no-ignore --hidden --one-file-system --no-messages

※ これらの設定で fff と同じ結果を取得するように調整されています。

🔨 プロジェクトのビルド

プロジェクトをコンパイルするには、以下のライブラリが必要です:

  • libzstd
    (Btrfs サポート用)
  • openmp
    (pkg-config 経由で必要)

これだけでシンプルに動作します。

同じ日のほかのニュース

一覧に戻る →

2026/06/24 3:40

ジェリーの地図

## Japanese Translation: 「ジェリーのワールド」は、1963 年夏にニューヨーク・コールドスプリングに住むアーティスト・ジェリーによって開始された、架空の都市を巨大な円形地図として機能させる、独自性の高い二次元アートプロジェクトである。4,000 点以上の個々のパネル(8x10 インチ)が N、S、E、W の座標を用いて配置されており、本作は二つの明確な時代へと発展してきた。時代 1(1963–1983)では軽量なタイプライター用紙が使われ、パネルは時系列順に積み重ねられていたが、時代 2(2003–現在)では再生された重紙を用い、座標順でパネルを配置し、自動化されたシステムを採用している。創作プロセスは、約 100 枚のユニークなカードからなる専用デッキによって厳密に管理されており、これらカードには描画サイズ、絵混ぜの色調調整、アーカイブ作業、ブログ投稿などの管理業務などランダム化された指示が含まれている。各カードサイクルは数分から数日続き、巨大な黒または赤の数字に基づいて作業ユニット(1 インチ正方形)を指し示す。実行にはアクリル絵具、マーカー、コラージュ、インクジェット印刷などのメディアが用いられる。プロジェクトはベースレイヤー、ザ・バッド、ザ・レッドディメンション、ブラックネッズ、ザ・ジグurat フェーズ、ザ・フロード、そしてリ・バーストといった段階的な概念層を通じて進行する。元々屋根裏部屋に保管され、アーティストの息子であるヘンリーによって数十年後に再発見された本作は、現在では公的展覧会やデジタルアーカイブとの統合を達成しており、環境に優しい素材の使用と創造的かつ管理業務を含む意思決定を導く厳格なルールベースのワークフローを通じて、現代アートの持続可能性への転換を浮き彫りにしている。 ## サマリー: 「ジェリーのワールド」は 1963 年に開始され、現在も継続中の二次元アートプロジェクトであり、架空の都市を巨大な円形地図として機能させる独自性の高いものである。その最も顕著な特徴は、約 100 枚のユニークなカードからなる専用デッキによって駆動される厳格でランダム化されたシステムである。これらのカードには実行とアーカイブ作業に関する独自の指示が含まれており、描画サイズから絵混ぜの色調調整に至るまで、各工程を決定する。このシステムにより、作品は純粋な直感に頼らずルールに基づくガイダンスによって発展する。プロセスは特定のルールに従い、カードの色に基づいて方向が変化し、その結果としてザ・バッドやザ・レッドディメンションといった段階的な層が構築される。元々はニューヨークのコールドスプリングで制作された物理的な作品は、アーティストの息子によって数十年後に再発見された。第一世代では軽量な紙が使われたが、現在のフェーズでは再生素材と自動化されたシステムを採用しており、デジタルアーカイブで引退した作品を保存しながらも新たなパネルを生成したり既存のセクションを完了させることができる。この堅固なワークフローは、一貫した管理ルーチンを強制することで協力者に影響を与え、環境に優しい素材の使用や展覧会における公的関与を通じて現代アートにおける持続可能性への転換を強調している。 ## キーポイント一覧 - 1963 年夏、アーティスト・ジェリーはニューヨーク・コールドスプリングで架空の都市の地図を描き始めたが、それは彼の屋根裏部屋に保管されており、後に息子であるヘンリーによって再発見された。 - プロジェクトは現在、4,000 点以上の個々の 8 インチ x10 インチのパネルからなる二次元的な「バーチャルワールド」アートプロジェクトであり、中央を起点として N、S、E、W の座標を用いて近似円形に配置されている。 - 実行にはアクリル絵具、マーカー、彩色鉛筆、インク、コラージュ、そしてインクジェット印刷が重紙上に用いられ、これは規則および約 100 枚のユニークなカードからなる専用デッキからのランダム生成された指示によって決定される。 - 各カードサイクルは前回の作業が完了するまで開始されず、数分から数日かかる;タスクとは、カード上の巨大な黒または赤の数字で指定された作業ユニット(1 ユニット=1 インチ正方形)をカバーすることを指す。 - カード指示は次の 5 つのカテゴリーに分類される:上位次元への進歩(バッド、レッド、ブラック、ジグurat)、隣接する 4 パネルのスプラッター塗装、新しいシードパネルの作成、新しい色調の混合、および連続する 9 パネルのスクリーン印刷。 - アドдиショナルなアーティスト指示には、マスターの更新/複製、ファイルからのパッチワークまたは写真の使用、数字の追加/削除、デッキからのカードの除去/追加、ブログ投稿や販売価値の計算などの管理業務が含まれる。 - ヘルパー指示には、デジタルライブラリー用のパネルのスキャン、引退したパネルのソート/アーカイブ、現在のパネルのコピー作成、アーカイブインベントリを更新する作業が含まれる。 - 作業方向はカードの色によって決定される:黒は地図 perimeter 周りの時計回りの進行を示し、赤は反時計回りの進行を示す。 - 新しいパネルは「新しいパネル」カードを描画するか、アートのセクションを完了するために生成され、常に親ページと同じ「中心」点を保ち、「その日の色」を使用する。 - プロセスは次の層で表現される:ベースレイヤー(パッチ、塗られたバンド、コラージュ、シティスクエア)、ザ・バッド(白/黑白/グレー/黒のコラージュ)、ザ・レッドディメンション(ソリッドレッドのコラージュ)、ブラックネッズ、ザ・ジグurat フェーズ、ザ・フロード(ブルーのコラージュ)、そしてリ・バースト(クラフト紙)。 - プロセスは二つの明確な時代へと発展した:時代 1(1963–1983)では軽量なタイプライター用紙が使われ、ゲストアーティストはいなかった、パネルは時系列順に積み重ねられた;時代 2(2003–現在)では再生された紙が使われ、デッキ駆動の自動化システムを採用し、展覧会が開催され、パネルは座標順に積み重ねられている。

2026/06/24 3:00

Swift パッケージインデックス、Apple に加入

## Japanese Translation: ## 日本語翻訳: 元のサマリーは明確で、正確かつ完全です。変更する必要はありません。 ## 翻訳対象のテキスト: (必要であればここに貼り付け;なければそのまま元の文章を繰り返す):元のサマリーは明確で、正確かつ完全です。変更する必要はありません。

2026/06/24 2:50

FUTO スワイプ:新たなスワイプタイピングモデル

## Japanese Translation: 主なイノベーションは「FUTO Keyboard」というプライバシーを最優先とした Android アプリであり、クラウドサーバーの必要性なくデバイス上で迅速かつ正確なスワイプタイピングを可能にします。データをローカルに保持することで、キーストロークを外部ネットワークへ送る際に生じる一般的なセキュリティリスクを排除します。推論はオンデバイスで実装されており、サーバーサイドデモと比べてはるかに低いレイテンシを実現しています。ミリ秒単位で入力を処理し、エラーレートは 1% を下回ります(具体的には、ビーム幅 300 を使用したテストセットにおいて、トップ 4 の失敗率は約 4%、エラー率は 1% 未満です)。 技術の基盤となるのはオープンなモデルファミリ(Encoder、ContextLM、Decoder)で、総パラメータ数 2,494,767 のうち有効パラメータは 1,364,271 です。低性能向けスマートフォンを最適化しています。「swipe-library」という C++ ライブラリが推論とビームサーチを担当し、スワイプパスから単語予測への変換を行います。学習は効率的で、ワークステーション用 GPU 1 台のみで完了しました。開発者は 2024 年 8 月にデータセット収集を開始し(100 万件以上のユーザーのスワイプデータを収集)、2025 年 3 月に MIT ライセンスの下で HuggingFace にフィルタリングされた 100 万件のスワイプデータをリリースしました。モデルは FUTO モデルライセンス、推論ライブラリは GPL の下に利用可能です。エンドユーザーへの謝示は長期投資合意の一部として必須であり、速度とプライバシーを最優先とするオフラインモバイル入力の持続可能なエコシステムを支えています。