Semantic FileSystemとは?
Semantic FileSystem(意味的ファイルシステム?)
ファイルにそれぞれ「タグ」をつけ,それを使ってファイルを見つけるシステム.
1991年にMITとパリ鉱山学院 共同で考えられた.今は下火になっている
階層的ファイルシステム
/ (ルートディレクトリ)
|__ doc/
| |__ mess.txt
| |__ 2025/
| |__ poem1.dat
| |__ poem2.dat
|__ apps/
Semantic FileSystem
tag:暗号
tag:修論
tag:2026
など,キーワードを入れると
proposal.pdf
slides.pptx
memo.txt
が得られる.
【優位点】
従来の階層型ファイルシステムでは,人間の多面的な分類を表現しきれない.
例えば,”修士研究発表資料.pptx”というファイルがあった場合,
人間はこのファイルを,
・「修士研究に関する資料」
・「発表で使う資料」
・「暗号に関する研究資料」
・「PowerPointファイル」
という複数の観点から認識している.
しかし階層型ファイルシステムでは,ファイルは一箇所にしか配置できないため,
/home/user/2026/0529/
のようなディレクトリに保存されることになる.
すると,「あー,暗号研究のあの資料どこにあったっけー?」という人間の認識と実際の保存場所が一致しないことがある.
「いやいやお客さん,そんなもんエクスプローラーの検索バーにキーワード入れればいいっしょ?」という意見もあるだろう.

実際,現代のOSではファイル名や内容,メタデータなどを対象とした検索機能が提供されており,ユーザはディレクトリ構造を意識せずファイルへ到達できる場合も多い.
しかし,このような ディレクトリを辿るのではなく,検索によってファイルへアクセスする
という考え方そのものをファイルシステムへ取り込もうとした研究がSemantic File System である.
この考え方..検索可能暗号に近いですわね..
というわけで可能性を考えてみることに.
実例
とりあえず手軽にSemantic FileSystemを知るために,実際に使えるものはどんなものか見てみる.
①TMSU
Semantic FileSystemというよりは,タグベース仮想ファイルシステム(似たようなもんでしょう)
- FUSEで実装されている
- タグをユーザが登録
- findがフツーに使える
使ってみた

タグをつけて,それを満たすものを検索することはもちろん,これは含んでこれは含まないみたいな方法も可能である.
具体的な処理
流れは以下のとおりである.
① ユーザがタグ条件を指定する.
② TMSUはSQLiteデータベースを検索し,条件に一致するファイル一覧を取得する.
③ FUSEは検索結果を仮想的なディレクトリ構造として生成する.
④ ユーザは生成されたディレクトリ構造を辿ることで検索結果を閲覧できる.
⑤ 実際のファイル操作時には,仮想ディレクトリ内のシンボリックリンクを介して元のファイルへアクセスする.
∴検索をDBが担当して,FUSEは検索にかかわってない?
では試しに,仮想ファイルシステムをマウントして中身を見てみよう.
filesフォルダ内にそれまでたどったフォルダ(タグ)に一致するファイルのシンボリックリンクが置いてある.
なるほど,検索の雰囲気を見せるためにFUSEでディレクトリを作っているだけなんだなぁ.
mp (マウントポイント)
|__ db/
|__ queries/
|__ tags/
|__ tag1/
| |__ files/
| |__ tag2/
| |__ files/
|__ tag2/
|__ files/
|__ tag1/
|__ files/
②BFS(Be File System)
BeOS(現在はHaikuOSに引き継がれている)の専用ファイルシステム.
ファイルに属性を付与し,インデックスを作成したり,クエリ機能も有しており,RDBのような機能を提供している.
HaikuOSの特徴
- UNIXではないが、UNIXを意識した独自OS
- BeOS互換思想:BFS(Be File System)の思想を継承
- デフォルトシェル Bash
- BFS + Queryシステム:ディレクトリ階層 + 検索の融合
- 軽量でリアルタイム志向:マルチスレッド前提設計
使ってみた

ファイルを探そうとフォルダをクリックするたびにタブが増えていきますわね.
もちろん醍醐味の検索もできたが,正直あんまり良さが分かんなかった
まとめ
ファイルシステムってどんなものがあるんだろう,という疑問から,とても興味深い技術を見つけることが出来た.
これが研究に活きるかはまだ不明だが,今後は仕組みを細かく理解することに努めたい.HaikuOS内部の仕組みを理解したい.
参考文献
・Semantic file system - Wikipedia:https://en.wikipedia.org/wiki/Semantic_file_system
・[Semantic File System]ファイルをタグで管理 #Go - Qiita:https://qiita.com/Neetless/items/95d9f7b95c705d46673a
・oniony_TMSU:https://github.com/oniony/TMSU

