ファイルシステム「File Filesystem」公開(2021)
(mgree.github.io)- ffs(file filesystem) は、JSON、YAML、TOML のような半構造化データをファイルシステムとしてマウントし、Unix シェルツールで探索・編集できるようにするツール
- Unix シェルには文字列処理ツールが豊富にあるが、基本的なデータ構造が ファイルシステムであるため、ツリー構造のデータ編集にはあまり適していない
ffs [file]はファイルをマウントポイントに接続し、アンマウント時に更新後の結果を stdout または指定した出力ファイルへ出力する- ファイルへの書き込みとディレクトリ作成は JSON のキーとオブジェクトに変換され、
1、true、false、空ファイルはそれぞれ数値、ブール値、null 値として反映される - Linux では FUSE、macOS では macFUSE が必要で、Windows、FUSE を利用できない環境、検索専用の作業、非常に大きなファイルには適さない場合がある
半構造化データをディレクトリのように扱う
- ffs は file filesystem の略で、半構造化データをファイルシステムのようにマウントし、使い慣れたシェルツールで作業できるようにする
- 現在サポートされている形式は JSON、YAML、TOML で、今後さらに多くの形式のサポートが予定されている
- 詳しい使い方は
ffsmanpage で確認できる
マウントと編集の流れ
- 基本の実行は
ffs [file]で、file.blahをfileマウントポイントにマウントし、最終的な更新版を 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 が必要
- 最新の開発ビルドは Linux、macOS 向けの単一実行ファイルとして提供されている
- 特定のリリースは release page で確認でき、現在のバージョンは 0.1.2
- source からビルドすることもできる
関連資料と比較ポイント
- PLOS 2021 論文 “Files-as-Filesystems for POSIX Shell Data Processing” がある
- jq と gron は、コマンドラインで JSON を扱うためのツール
- ffs は複数の形式をサポートし、使い慣れたシェルツールで編集でき、新しい言語を学ぶ必要がない点が差別化ポイント
- Windows での利用、FUSE を利用できない環境、検索だけが必要な作業、非常に大きなファイルは ffs に適さない場合がある
- ライセンスは GPLv3
まだコメントはありません。