1 ポイント 投稿者 GN⁺ 2024-05-02 | まだコメントはありません。 | WhatsAppで共有
  • ffs(file filesystem) は、JSON、YAML、TOML のような半構造化データをファイルシステムとしてマウントし、Unix シェルツールで探索・編集できるようにするツール
  • Unix シェルには文字列処理ツールが豊富にあるが、基本的なデータ構造が ファイルシステムであるため、ツリー構造のデータ編集にはあまり適していない
  • ffs [file] はファイルをマウントポイントに接続し、アンマウント時に更新後の結果を stdout または指定した出力ファイルへ出力する
  • ファイルへの書き込みとディレクトリ作成は JSON のキーとオブジェクトに変換され、1truefalse、空ファイルはそれぞれ数値、ブール値、null 値として反映される
  • Linux では FUSE、macOS では macFUSE が必要で、Windows、FUSE を利用できない環境、検索専用の作業、非常に大きなファイルには適さない場合がある

半構造化データをディレクトリのように扱う

  • ffsfile filesystem の略で、半構造化データをファイルシステムのようにマウントし、使い慣れたシェルツールで作業できるようにする
  • 現在サポートされている形式は JSONYAMLTOML で、今後さらに多くの形式のサポートが予定されている
  • 詳しい使い方は ffs manpage で確認できる

マウントと編集の流れ

  • 基本の実行は ffs [file] で、file.blahfile マウントポイントにマウントし、最終的な更新版を stdout に出力する
  • ffs -m MOUNT file で明示的な マウントポイントを指定し、-o OUTPUT で出力ファイルを指定できる
  • ffs -i file はファイルをその場で編集し、ボリュームをアンマウントすると結果が再び file に書き込まれる
  • 例で見られる変換ルール

    • echo Mikey Indiana >object/name は JSON の name 値を変更する
    • echo 1 >object/nose は文字列ではなく数値 1 として反映される
    • mkdir object/pockets とその中のファイルは JSON オブジェクトに変換される
    • 空ファイル mistakes は JSON では null として記録される

インストール条件と配布

  • Linux では FUSE が必要
  • macOS では macFUSE が必要
  • 最新の開発ビルドは LinuxmacOS 向けの単一実行ファイルとして提供されている
  • 特定のリリースは release page で確認でき、現在のバージョンは 0.1.2
  • source からビルドすることもできる

関連資料と比較ポイント

  • PLOS 2021 論文 “Files-as-Filesystems for POSIX Shell Data Processing” がある
  • jqgron は、コマンドラインで JSON を扱うためのツール
  • ffs は複数の形式をサポートし、使い慣れたシェルツールで編集でき、新しい言語を学ぶ必要がない点が差別化ポイント
  • Windows での利用、FUSE を利用できない環境、検索だけが必要な作業、非常に大きなファイルは ffs に適さない場合がある
  • ライセンスは GPLv3

まだコメントはありません。

まだコメントはありません。