導入手順書

最終更新: 2026年8月8日 · 管理者向け

グループを開設するのは管理者ひとりです。保管場所を1つ用意し、アプリの開設ウィザードを最後まで進めれば終わります。ここに書いてあるのは実際の画面の流れそのままです。

先に用意するもの。 S3互換ストレージのアカウント (Cloudflare R2 / Backblaze B2 / 自前の MinIO など)。料金や登録条件は各サービスの規約をご確認ください。

1. 保管場所を用意する

グループのアカウントでバケットを1つ作ります。名前は何でもかまいません (例: mofune)。

1-1. CORS を設定する

ブラウザから読み書きするため、バケットの CORS 設定に次を入れます。ここが抜けていると接続確認が「サーバーまで届いていません」で止まります。DELETE も要ります。担当者が投函物を回収したあと、受信箱から消すためです。

R2 のダッシュボードなら、バケット → 設定 → CORS ポリシーに次を貼ります。

[
  {
    "AllowedOrigins": ["https://mofune.site"],
    "AllowedMethods": ["GET", "PUT", "HEAD", "DELETE"],
    "AllowedHeaders": ["*"],
    "ExposeHeaders": ["ETag"]
  }
]
AllowedOrigins https://mofune.site
AllowedMethods GET / PUT / HEAD / DELETE
AllowedHeaders *
ExposeHeaders ETag

1-2. 公開読み取りURLを用意する

参加者はアカウントを持たずに読みます。バケットの公開アクセスを有効にして、そのURLを控えてください。R2 なら https://pub-xxxx.r2.dev か、割り当てた独自ドメインです。中身は暗号化されているので、公開しても本文・写真・連絡先は読めません。

ここが一番間違えやすいところです。 読み書きに使う S3 のエンドポイント (https://<account>.r2.cloudflarestorage.com) と、参加者が読む公開URL (https://pub-xxxx.r2.dev) は別のURLです。ウィザードは両方を訊きます。取り違えたまま開設されることはありません。接続確認が「公開URLから読めません」で止めます。

1-3. 書き込み用の資格情報を発行する

そのバケットに対して読み書きできる API トークン (アクセスキーID とシークレットアクセスキー) を発行し、手元に控えます。この資格情報は担当者だけが持ちます。

2. 開設ウィザードを進める

アプリを開き、「グループを作る」を押します。3ステップです。

  1. グループの情報。 グループの名前と、管理者の表示名・メールアドレス・パスワードを入れます。メールアドレスがそのままログインの識別子になります。
  2. データの置き場。 エンドポイント・リージョン・バケット名・公開読み取りURL・アクセスキーID・シークレットアクセスキーを入れます。
  3. 接続の確認と開設。 「書き込む → 読み戻す → 資格情報なしで読む → 消す」の4つを試します。すべて成功したときだけ開設が進みます。失敗した場合、保管場所には何も書き込まれていないので、設定を直してやり直せます。

3. 接続コードとリカバリキットを控える

この画面を離れると二度と表示できません。 接続コードは保管場所からは復元できず、リカバリキットは管理者の鍵そのものです。印刷するか紙に書き写してから先へ進んでください。

保管を確認するチェックを入れるまで、ウィザードは完了しません。面倒に見えますが、ここを飛ばすと後から取り返しがつきません。

4. 参加者に配る

メンバーを追加すると、その人に渡す QR がその場に出ます。この QR には接続コード・メールアドレス・最初のパスワードが入っているので、読み取るだけでログインできます。長いコードを手で打つ必要はありません。

この QR は鍵そのものです。 読み取れば誰でもその人として入れます。印刷して本人に手渡し、本人以外に見せないでください。渡したあとは、参加者に「メニュー → パスワードを変える」で自分だけのパスワードへ変えてもらってください。担当者が「受信と配布」を開いたときに切り替わります。

5. 管理者がパスワードを忘れたとき

リカバリキットの紙があれば、管理者は自分で入り直せます。アプリのログイン画面から「管理者の方: 復元コードから入り直す」を開き、接続コード・復元コード・これから使うメールアドレス・新しいパスワードを入れてください。グループの鍵はそのままなので、これまでのお知らせも読めます。作業が済んだら紙は元の保管場所へ戻してください。

参加者がパスワードを忘れた場合は、管理者がメンバーの画面から再発行します。こちらは鍵を作り直すため、再発行より前のお知らせは読めなくなります。

6. 通知を自動で送りたいとき (任意)

ここまでの設定でも Mofune は全機能が動きます。お知らせを出したときに参加者の端末へ通知を自動で届けたい場合だけ、通知用の小さなプログラム (Cloudflare Workers) を1つ置きます。持たせるのは「誰の端末を起こすか」の一覧だけで、お知らせの本文も、それを開く鍵も通りません。

  1. リポジトリの functions/workers/ (Cloudflare) か functions/gas/ (Google アカウントだけで済ませたい場合) の手順のとおりに配置し、URL を控えます
  2. アプリの「グループの設定」で、関数の URL と合言葉を入れて保存します
  3. 参加者は「メニュー」から「この端末で通知を受け取る」を押します
  4. 担当者が「受信と配布」を開くと、届いた購読が関数へ渡ります

通知の文面は「新しい連絡があります」だけです。誰から何が届いたかは通知に出しません。iPhone はホーム画面に追加していないと通知を受け取れません。

7. うまくいかないとき

画面の表示 よくある原因
書き込めません アクセスキーの誤り、権限不足、バケット名やエンドポイントの打ち間違い
読み戻せません CORS の設定漏れ (AllowedOrigins / ExposeHeaders)
公開URLから読めません 公開アクセスが無効、または S3 のエンドポイントを公開URL欄に入れている
消せません 資格情報に削除の権限がない
書いた内容と読み戻した内容が一致しません 別のバケットを読んでいる、または経路のキャッシュ

いまの制限

仕組みの詳細は 要件書・設計書 に、不具合の報告は Issues にお願いします。