このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

最小抽象ファイルシステム、そろそろ実装

Kuwataさんのブログreturn0はお料理ブログになったので、Kuwataさんのプログラミングの予定を、僕が書きます。

最小抽象ファイルシステム(mafs)を、通常ファイルシステムGoogle Datastoreをベースに実装する予定。実装に先立って、仕様をさらに単純化しました。

メタデータ

メタデータは次のとおり。

名前 値のデータ型 必須か デフォルト値 説明
contentLength ゼロ以上の整数 YES - 内容のバイトサイズ
contentType 文字列 NO application/octet-stream 内容のメディアタイプ
created タイムスタンプ NO 不明な時刻 ファイルが作られた時
lastModified タイムスタンプ YES - ファイルが最後に変更された時
isText 真偽値 NO false 内容がテキストデータかどうか
textEncoding 文字列 NO utf-8 内容がテキストのとき、その文字エンコーディングスキーム
executable 真偽値 NO false 実行可能ファイルかどうか

メタデータの設定と管理はファイルシステム実装に任せることにしました。それに伴い、API関数の引数にメタデータの指定はなくなります。また、メタデータを変更するAPI(setMetadata, updateMetadata)も削除されます。

API関数

問い合わせ/読み込み(略号R)をする関数。

番号 関数呼び出し形式 戻り値
R1 readFile(AuthoriToken, Path) Binary
R2 readDirectory(AuthoriToken, Path) DirectoryEntryList
R3 getMetadata(AuthoriToken, Path) Metadata

変更や書き込み(略号W)をする関数。

番号 関数呼び出し形式 戻り値
W1 createFile(AuthoriToken, Path) Void
W2 createDirectory(AuthoriToken, Path) Void
W3 deleteFile(AuthoriToken, Path) Void
W4 deleteDirectory(AuthoriToken, Path) Void
W5 delete(AuthoriToken, Path) Void
W6 writeFile(AuthoriToken, Path, Binary) Void

エラーの取り扱い

処理が失敗したときのエラー番号や例外情報の形式はまだ完全には決まってません。POSIX番号では多すぎ、HTTPステータスコードでは少なすぎる感じです。

拡張の予定

シンボリックリンクはそのうち入れる予定です。まずは、アプリケーション側ライブラリとしてシンボリックリンク機能を作ってみて、様子を見てファイルシステム側に移そうかと。