R2 の API は S3 互換、でもファイル管理ソフトからは見えない
Cloudflare R2 が選ばれる理由はだいたい 2 つです。API が S3 互換なので既存の SDK やツールがそのまま動くこと、そしてエグレス料金がかからないこと。だからビルド成果物、リリース用バイナリ、デザインアセット、DB ダンプを R2 に置いているチームが多い。取り出すたびの転送料を計算しなくて済むからです。
ところが、ファイルを 1 つだけ取り出したくなる瞬間が来ます。パイプラインでも同期でもなく、普通のアプリで開きたいだけ。そのたびにダッシュボードへ戻るか、aws s3 cp に --endpoint-url を付けて叩くか、wrangler を呼ぶことになります。バケットを Finder やエクスプローラーに出してくれる公式のデスクトップアプリはありません。
それは自分で用意できます。カーネルドライバーは不要です。
まず R2 の認証情報を取る
R2 は S3 プロトコルを話すので、必要なのは S3 形式のキーペアとエンドポイントです。Cloudflare のダッシュボードで R2 を開き、R2 API トークンの画面でトークンを作成します。Access Key ID と Secret Access Key が発行され、Secret が表示されるのは一度きり。エンドポイントはアカウント ID に紐づき、https://ACCOUNT-ID.r2.cloudflarestorage.com という形になります。
決めておくと後が楽になる方針が 2 つ。
- トークンの範囲は実際に触るバケットだけにする。アカウント全体の権限は渡さない。
- 成果物を取ってくる、アップロード結果を確認する。用途がそれだけなら読み取り専用トークンで足ります。この後に使う WebDAV サーバーも、無料版は読み取り専用です。
AnyStorage でバケットに接続する
AnyStorage は macOS 11 以降、Windows 10 以降、Ubuntu 20.04 以降で動くデスクトップのストレージブラウザーです。Apple Silicon と Intel の両方に対応し、ダウンロードは無料、アカウント登録もありません。接続を追加して Cloudflare R2 を選び、エンドポイントとキーペアを入力します。
アプリの中では、バケットはただのフォルダーツリーとして見えます。タブ、検索、プレビュー、転送キュー。日々の作業の大半はここで完結します。
マウントが効いてくるのは、その先です。
内蔵 WebDAV で Cloudflare R2 をローカルドライブとしてマウントする
AnyStorage には WebDAV サーバーが内蔵されています。サイドバーの「サービス」を開き、WebDAV タブに切り替えて開始を押すだけ。既定では http://127.0.0.1:3211 で待ち受け、ポートは 1 から 65535 の範囲で変更できます。有効のままにしておけば、次にアプリを起動したときサーバーも一緒に立ち上がります。
HTTP Basic 認証は常に有効です。ユーザー名の既定値は anystorage、パスワードは初回に自動生成される 24 文字のランダム文字列。どちらも編集でき、再生成ボタンとコピーボタンが並んでいます。
ワンクリックでマウントするボタンはありません。URL をコピーして、OS 標準の機能でつなぎます。
- macOS の場合、Finder の「移動」から「サーバへ接続」(Cmd+K) を開き、http://127.0.0.1:3211 を貼り付けて「登録ユーザー」としてアプリの認証情報でログインします。
- Windows の場合、エクスプローラーの PC から「ネットワーク ドライブの割り当て」で同じ URL を貼ります。
- Linux やその他の環境なら、WebDAV を話せるクライアントで構いません。メディアプレーヤーやバックアップツールも含みます。
アプリ側で現在接続されているストレージ接続は、接続名のフォルダーとして WebDAV のルートに並びます。R2 のバケットも、開いている他のものと横並び。ここに出せる接続タイプは 20 種類あり、S3 や B2、Google ドライブ、SFTP(Synology や QNAP の NAS もここ経由になります)、ローカルフォルダーまで含まれます。
macFUSE は不要です。Apple Silicon でセキュリティ設定を下げて起動する必要もありません。WinFsp のドライバーも、管理者権限も、設定ファイルもいりません。
開発の現場で効くところ
読み取りは HTTP Range 対応のストリーミングです。ファイルの途中へシークするために、全体をダウンロードする必要はありません。
- ビルド成果物を Finder からそのままドラッグして取り出す。自分用に署名付き URL を発行しなくていい。
- 画像フォルダーをクイックルックで流し見して、デプロイで何が上がったか確認する。
- R2 に置いた動画を普通のプレーヤーで開き、シークバーを動かす。
- WebDAV 対応のバックアップツールから書き込む(Pro で書き込みを有効にした場合)。
限界を先に書いておく
無料版の WebDAV サーバーは読み取り専用です。マウント経由で書き込むには Pro ライセンスとフルコントロールモードが必要で、Pro でもあえて読み取り専用に固定できます。
TLS はありません。URL は平文の http、認証は Basic です。だから既定では 127.0.0.1 にだけバインドしています。LAN アクセスを有効にすると 0.0.0.0 にバインドされ、その時点でアプリが警告を出します。認証情報がそのままネットワークを流れるからです。
あと 3 つ。アプリを再起動した後、R2 接続は一度アプリ内で開くまで WebDAV のルートに現れません。接続が遅延して張られる仕様のためです。新しく作った接続なら、サーバーを再起動しなくても出てきます。ファイルロックはないので、2 台のマシンから同じファイルを編集する用途には向きません。ルート直下の接続フォルダーは WebDAV からリネームも削除もできませんし、異なる接続どうしでファイルを直接移動することもできません。その場合はいったんローカルにコピーしてください。
Windows には固有のハマりどころがあります。標準の WebClient サービスは 2026 年時点で非推奨扱いで、たいてい停止しています。まず services.msc から開始してください。Windows は既定で HTTP 上の Basic 認証も拒否します。レジストリの HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters にある BasicAuthLevel は、既定値のままだと SSL 上の Basic しか許可しません。2 に変更して WebClient を再起動します。放置した場合の症状は、フォルダーが無効だという趣旨のメッセージ(英語版は The folder you entered does not appear to be valid)、システム エラー 67、0x80070043 あたり。転送サイズの上限 FileSizeLimitInBytes は既定で 50,000,000 バイトで、これを超えると 0x800700DF になります。サードパーティの WebDAV クライアントを使えば、この一連の制約は回避できます。
数千個のオブジェクトを移すなら、アプリの転送キューのほうが向いています。マウントが解くのは別の問題です。別のアプリに、あるファイルを 1 つ見せること。