SkyFolder

Cloudflare R2 を macOS Finder にマウントし、URL で共有する

接続情報をアプリ画面に入力するだけで、任意の R2 バケットが Finder のドライブになります。 マウント済みのファイルから恒久公開 URL期限付き共有 URL をワンクリックで発行できます。 kext もドライバも要りません。

ダウンロード(無料・MIT) ソースコード

何ができるか

しくみ

UISwiftUI ネイティブ(メニューバー常駐 + ウィンドウ)
マウントrclone nfsmount。macOS 内蔵の NFS クライアントを使うため、カーネル拡張もドライバも不要
バックエンド同梱した rclone rcd を HTTP RC API で制御。プロセスは常に 1 本に保ちます
認証情報Keychain に保存し、rclone へは環境変数で注入。設定ファイルを一切生成しません
対応環境macOS 14 以降 / Apple Silicon
ライセンスMIT License(同梱の rclone も MIT)

バケットは private と public を物理的に分離します。 公開バケットは read-only でマウントされるため、Finder から直接ファイルを置いて Exif 除去を迂回することが構造的にできません。公開は必ずアプリの共有ダイアログを通ります。

インストール

  1. Releases から SkyFolder.dmg をダウンロード
  2. DMG を開き、SkyFolder.appApplications へドラッグ
  3. 初回だけ、下の手順で macOS の警告を越えます
  4. 起動するとオンボーディングが開くので、R2 の接続情報を入力します

初回起動時の警告について

現在の配布物は ad-hoc 署名で、Apple の公証(notarization)を受けていません。 そのため Gatekeeper がこのアプリを拒否し、ダウンロード直後はダブルクリックで開きません。

開くには次の手順を踏みます。

  1. ApplicationsSkyFolder.app をダブルクリック →「開発元を確認できません」→ そのまま閉じる
  2. システム設定 → プライバシーとセキュリティ を開く
  3. 下の方に出る「"SkyFolder" は開発元を確認できないため、使用がブロックされました」の横の 「このまま開く」
  4. 確認ダイアログで 「開く」

一度許可すれば以降は普通に起動します。 バンドル自体は壊れていません(codesign -v --deep --strict は通ります)。 拒否されるのは Developer ID 証明書と公証チケットが無いことだけが理由です。

知っておくべきこと

隠さずに書きます。使う前に把握しておいてください。

現在の未検証事項

実 R2 アカウントでの通し確認(SigV4 の成立・presigned の実失効・Cache-Control の実付与)は まだ実施していません。検証スクリプトは同梱してあります。 また Apple Developer Program に未加入のため、公証と、画面ロック中の認証情報保護 (data protection keychain)も未達です。 詳細は STATUS.md に確定事項と未確定を分けて置いてあります。

よくある質問

macFUSE や kext は必要ですか?

要りません。macOS 内蔵の NFS クライアントを使う nfsmount 方式なので、カーネル拡張もドライバもインストールしません。

ターミナル操作は必要ですか?

アプリの利用には要りません。ただし公証が無いため、初回起動時だけシステム設定から手動で許可する操作が要ります(ターミナルは使いません)。

公開した画像から位置情報は消えますか?

消えます。GPS・Exif・IPTC・PNG のテキストチャンクなどの識別情報を、公開前に除去します。除去を無効にする設定は存在しません。

期限付き共有リンクは後から取り消せますか?

取り消せません。presigned URL はサーバに状態を持たないためです。期限は最大 7 日です。

保存したファイルはすぐ反映されますか?

すぐではありません。VFS の write-back により 30 秒程度かかります。その間は「未送信 N 件」として表示されます。

ライセンスは何ですか?

MIT License です。利用・改変・再配布は自由で、著作権表示と許諾文を残すことだけが条件です。同梱している rclone も MIT License です。

R2 バケットはアプリが作ってくれますか?

作りません。既存のバケットへ接続するだけです。バケットの作成・API トークンの発行・カスタムドメインの接続は、Cloudflare のダッシュボードで先に済ませてください。

ソースと資料