まちの本棚START SMALL, READ TOGETHER

ANDROID START GUIDE

スマホひとつで、
一歩ずつ。

最初からすべてを設定する必要はありません。
一つの手順ができたら、次を開いて進みましょう。

最初に行うのは、手順1だけです。
このガイドは日本国内の18歳以上の知人3〜10人で試すためのものです。主催者のGoogleアカウントと、メールを受信できる環境を用意します。参加者はGoogleやChatGPTのアカウントを使いません。
01 Firebaseの無料プロジェクトを作る
  1. AndroidのChromeで Firebaseの管理画面 を開き、主催者用Googleアカウントでログインします。
  2. 「プロジェクトを作成」を選び、名前を まちの本棚 にします。プロジェクトIDは自動作成されたものを使えます。
  3. Google Analyticsは無効のままで進めます。
  4. 作成後、料金プランが Spark(無料) になっていることを確認します。

この段階ではカード登録や有料プランへの変更は必要ありません。支払い登録を求められた場合は、その操作を止め、表示されているサービス名を確認します。

できあがりの目印:Firebaseのプロジェクト画面に「まちの本棚」が表示される。画面が狭いときはChrome右上「⋮ → PC版サイト」を有効にします。

02 体験用ZIPを公開してURLを作る
  1. 案内された machi-hondana-site.zip を、スマホの「ダウンロード」へ保存します。ZIPの展開は不要です。
  2. Cloudflareの管理画面 で無料アカウントを作り、ログインします。
  3. 「Workers & Pages → Create application → Pages → Use direct upload」を選びます。画面により「Get started」などの表記もあります。
  4. プロジェクト名を英小文字で設定し、ファイル選択からZIPをアップロードして公開します。例:machi-books-yourname。
  5. 発行された https://…pages.dev をChromeで開き、「体験用サンプル」が表示されることを確認します。

できあがりの目印:URLから本棚が開く。スマホでファイル選択が出ない場合は「PC版サイト」を試します。Androidでの管理画面操作はここで実機確認します。

ページ自体はURLを知る人が開けます。実際の参加者の本棚・写真・メッセージは、この後設定するログインとデータの権限で制限します。

03 メールで参加できるようにする
  1. Firebaseのプロジェクトの歯車「プロジェクトの設定 → 全般 → マイアプリ」で、Web(</>)を選びます。
  2. アプリ名を入力して登録します。Firebase Hostingへの設定は不要です。
  3. 表示された firebaseConfig の { から } までをコピーして、後で使えるようにします。設定画面にも貼り付けられます。
  4. 「Authentication → 始める → ログイン方法」で メール/パスワード を有効にします。メールリンクによるログインは使いません。
  5. 「Authentication → 設定 → 承認済みドメイン」に、公開したホスト名 …pages.dev を追加します。https:// は付けません。
  6. 「テンプレート」で、メール確認・パスワード再設定メールのアプリ名と日本語表示を確認します。パスワードポリシーは12文字以上に設定してください。

できあがりの目印:メール/パスワードが「有効」。参加者のログイン用パスワードや主催者アカウントのパスワードは、チャットやアプリの設定欄に貼り付けません。

04 データの保存先と招待リストを作る
  1. Firebaseで「Firestore Database → データベースの作成」を選び、Standard edition・デフォルトのデータベースを作ります。
  2. 日本で試す場合、ロケーションは東京 asia-northeast1 を選べます。作成後に場所は変更できません。
  3. 「本番環境モード」で開始します。テストモードのまま公開しません。
  4. 設定画面の「ルールをコピー」から全文をコピーし、「Firestore → ルール」に貼り付けて公開します。
  5. 「インデックス → 単一フィールド」の除外設定で、コレクショングループ covers・フィールド dataUrl を追加し、昇順・降順・配列インデックスをすべて無効にします。
  6. 「データ → コレクションを開始」で invites を作ります。ドキュメントIDに自分のメールアドレスを小文字で入力し、enabled という boolean(真偽値)フィールドを true で追加します。

できあがりの目印:自分のメールの招待ドキュメントがあり、ルールが公開されている。参加する知人も同じ形式で1人ずつ追加します。主催者のFirebase管理画面からだけ招待リストを編集します。

写真は小さなJPEGの表紙画像に圧縮し、Firestore内の別ドキュメントへ保存します。試用中は1人30冊までです。

05 表紙の自動認識とApp Checkを設定する
  1. Firebaseの「AI Logic → 始める」で、提供元を Gemini Developer API にします。無料のSparkプランを保ち、Cloud Billingを接続しません。
  2. 案内に従い必要なAPIを有効にします。Gemini APIキーをこのアプリに貼り付ける操作はありません。
  3. 「App Check」で、Webアプリに reCAPTCHA Enterprise を登録します。Google CloudのreCAPTCHA設定から、Web用のスコアベースのサイトキーを作り、ドメインに公開先の …pages.dev を登録します。
  4. そのサイトキーをFirebaseのApp Checkに設定します。App Checkの自動更新をアプリ側で有効にしてあります。
  5. App Checkの「APIs」でAI Logicの強制適用を確認します。現在のFirebaseではAI Logic利用にApp Checkが必要です。Firestoreも有効なリクエストを確認してから強制適用できます。
  6. Google AI Studioで、このプロジェクトの gemini-3.5-flash-lite が無料枠で利用可能か、現在の回数制限も確認します。

できあがりの目印:公開先ドメインに対応するApp Checkサイトキーがある。実機からの画像認識は次の公開後に確認します。無料枠が利用できない場合、有料に切り替えず、利用条件を確認してください。

無料枠では入力画像・認識結果がGoogleの製品改善に利用されます。利用者が18歳以上であること、画像送信への同意を確認します。読み取り精度は本や撮影条件で変わります。

06 スマホで設定済みZIPを作り、再公開する
  1. 公開したアプリの 主催者用設定画面を開きます。
  2. FirebaseのWebアプリ用設定・App Checkのサイトキー・参加者が選ぶ地域名を入力します。
  3. 「設定済みZIPを作成する → ZIPをダウンロード」で保存します。Androidで保存先を選びたい場合は「ファイルを共有・保存」も利用できます。
  4. Cloudflare Pagesの同じプロジェクトで「新しいデプロイ → 本番」を選び、設定済みZIPをアップロードします。
  5. 公開URLを再読み込みします。ログイン画面が表示されたら「初めて参加する方はこちら」から、自分の招待済みメールで登録します。
  6. 届いたメールの確認リンクを開き、アプリに戻って「確認が終わったので進む」を押します。表示名と地域を設定します。

できあがりの目印:体験用サンプルではなく、自分だけの空の本棚が表示される。地域名は初回設定後に変えると別の地域として扱われるため、試用中は同じ名前を保ちます。

07 2人で確認してから、知人に広げる
  1. 表紙を撮影し、画像送信の案内を読んで同意してから「AIで読み取る」を押します。書名・著者を確認して登録します。
  2. 別々のスマホで同じ本を登録し、「仲間を探す」で共通の本として表示されるか確認します。
  3. 片方だけが交流を希望した段階で、まだメッセージを送れないことを確認します。
  4. もう片方も希望し、相互にメッセージを送ります。その後、取り消し・ブロックで送受信が止まることを確認します。
  5. 日本語の本を5冊以上、明るさ・反射・文字の大きさが違う写真で試し、認識結果を確かめます。
  6. Firebaseの「使用状況」とAIの回数制限を確認し、問題がなければ知人3〜10人へ広げます。

AIは誤ることがあります。別の著者や巻数が出た場合は登録前に修正・再撮影します。書名と著者を正規化して同じ本を照合するため、版やタイトルの大きな違いは同じ本にならない場合があります。

データの保存と利用について

困ったとき

スマホで管理画面がうまく表示されない
Chrome右上「⋮ → PC版サイト」を有効にし、必要なら横向きにします。詰まった画面名と表示された文言を、この会話で伝えてください。
ログインできるのに「招待待ち」になる
invites のドキュメントIDがメールの小文字表記か、enabled が文字列ではなくbooleanの true か確認します。
登録後に確認メールが来ない
受信箱と迷惑メールを確認し、メールの送信元・Firebase認証設定を確認します。短時間に何度も送信せず、時間をおいて試します。
本棚のアクセスが拒否される
メール確認済みか、招待が有効か、同梱したFirestoreルールを全文公開したか確認します。
画像認識で403やApp Checkエラーになる
アプリとApp Checkで同じreCAPTCHAサイトキーを使っているか、公開先ドメインが登録されているか確認します。デバッグ用トークンを公開版に入れません。
画像認識で429や上限の案内になる
現在の無料枠の回数制限をAI Studioで確認し、リセットまで待ちます。自動再試行や有料への切り替えはしません。
撮影・読み取りができない
Chromeで公開URLを直接開きます。撮影をキャンセルした場合はもう一度選びます。JPEG・PNG・WebPの20MB以下の写真が使えます。
写真から本を特定できない
表紙の書名と著者を明るく大きく写して撮り直します。装丁だけでは識別できない本もあります。必要なら認識結果の入力欄で修正できます。
Firestoreの無料枠の上限になった
新しい操作を止め、使用状況とリセット時刻を確認します。表紙は小さく圧縮していますが、読み取り・書き込みにも上限があります。

主催者:退会・終了時のデータ整理

本人から削除を依頼されたら、先に招待の enabled を false にします。Firebase AuthenticationでUIDを控え、その人の profiles/{UID}、shelves/{UID} 配下のbooks・covers、blocks/{UID} 配下、関係するconnectionsとmessages、本人を相手とするブロック記録を管理画面から削除します。Firestoreは親ドキュメントだけを削除しても子コレクションが残るため、配下も含めて削除してください。最後にAuthenticationのユーザーと招待レコードを削除します。

試用を終えるときは、Cloudflare Pagesの公開を停止し、不要なFirebaseプロジェクトを削除します。運用を続ける場合は無料枠の使用状況を定期的に確認します。

公式の説明

2026年11月の試作用です。画面名・モデル・無料枠は変わることがあります。設定時に公式の表示で確認してください。

アプリへ戻る · 主催者の設定へ