ANDROID START GUIDE
スマホひとつで、
一歩ずつ。
最初からすべてを設定する必要はありません。
一つの手順ができたら、次を開いて進みましょう。
このガイドは日本国内の18歳以上の知人3〜10人で試すためのものです。主催者のGoogleアカウントと、メールを受信できる環境を用意します。参加者はGoogleやChatGPTのアカウントを使いません。
01 Firebaseの無料プロジェクトを作る
- AndroidのChromeで Firebaseの管理画面 を開き、主催者用Googleアカウントでログインします。
- 「プロジェクトを作成」を選び、名前を まちの本棚 にします。プロジェクトIDは自動作成されたものを使えます。
- Google Analyticsは無効のままで進めます。
- 作成後、料金プランが Spark(無料) になっていることを確認します。
この段階ではカード登録や有料プランへの変更は必要ありません。支払い登録を求められた場合は、その操作を止め、表示されているサービス名を確認します。
できあがりの目印:Firebaseのプロジェクト画面に「まちの本棚」が表示される。画面が狭いときはChrome右上「⋮ → PC版サイト」を有効にします。
02 体験用ZIPを公開してURLを作る
- 案内された
machi-hondana-site.zipを、スマホの「ダウンロード」へ保存します。ZIPの展開は不要です。 - Cloudflareの管理画面 で無料アカウントを作り、ログインします。
- 「Workers & Pages → Create application → Pages → Use direct upload」を選びます。画面により「Get started」などの表記もあります。
- プロジェクト名を英小文字で設定し、ファイル選択からZIPをアップロードして公開します。例:
machi-books-yourname。 - 発行された
https://…pages.devをChromeで開き、「体験用サンプル」が表示されることを確認します。
できあがりの目印:URLから本棚が開く。スマホでファイル選択が出ない場合は「PC版サイト」を試します。Androidでの管理画面操作はここで実機確認します。
ページ自体はURLを知る人が開けます。実際の参加者の本棚・写真・メッセージは、この後設定するログインとデータの権限で制限します。
03 メールで参加できるようにする
- Firebaseのプロジェクトの歯車「プロジェクトの設定 → 全般 → マイアプリ」で、Web(
</>)を選びます。 - アプリ名を入力して登録します。Firebase Hostingへの設定は不要です。
- 表示された
firebaseConfigの{から}までをコピーして、後で使えるようにします。設定画面にも貼り付けられます。 - 「Authentication → 始める → ログイン方法」で メール/パスワード を有効にします。メールリンクによるログインは使いません。
- 「Authentication → 設定 → 承認済みドメイン」に、公開したホスト名
…pages.devを追加します。https://は付けません。 - 「テンプレート」で、メール確認・パスワード再設定メールのアプリ名と日本語表示を確認します。パスワードポリシーは12文字以上に設定してください。
できあがりの目印:メール/パスワードが「有効」。参加者のログイン用パスワードや主催者アカウントのパスワードは、チャットやアプリの設定欄に貼り付けません。
04 データの保存先と招待リストを作る
- Firebaseで「Firestore Database → データベースの作成」を選び、Standard edition・デフォルトのデータベースを作ります。
- 日本で試す場合、ロケーションは東京
asia-northeast1を選べます。作成後に場所は変更できません。 - 「本番環境モード」で開始します。テストモードのまま公開しません。
- 設定画面の「ルールをコピー」から全文をコピーし、「Firestore → ルール」に貼り付けて公開します。
- 「インデックス → 単一フィールド」の除外設定で、コレクショングループ
covers・フィールドdataUrlを追加し、昇順・降順・配列インデックスをすべて無効にします。 - 「データ → コレクションを開始」で
invitesを作ります。ドキュメントIDに自分のメールアドレスを小文字で入力し、enabledという boolean(真偽値)フィールドをtrueで追加します。
できあがりの目印:自分のメールの招待ドキュメントがあり、ルールが公開されている。参加する知人も同じ形式で1人ずつ追加します。主催者のFirebase管理画面からだけ招待リストを編集します。
写真は小さなJPEGの表紙画像に圧縮し、Firestore内の別ドキュメントへ保存します。試用中は1人30冊までです。
05 表紙の自動認識とApp Checkを設定する
- Firebaseの「AI Logic → 始める」で、提供元を Gemini Developer API にします。無料のSparkプランを保ち、Cloud Billingを接続しません。
- 案内に従い必要なAPIを有効にします。Gemini APIキーをこのアプリに貼り付ける操作はありません。
- 「App Check」で、Webアプリに reCAPTCHA Enterprise を登録します。Google CloudのreCAPTCHA設定から、Web用のスコアベースのサイトキーを作り、ドメインに公開先の
…pages.devを登録します。 - そのサイトキーをFirebaseのApp Checkに設定します。App Checkの自動更新をアプリ側で有効にしてあります。
- App Checkの「APIs」でAI Logicの強制適用を確認します。現在のFirebaseではAI Logic利用にApp Checkが必要です。Firestoreも有効なリクエストを確認してから強制適用できます。
- Google AI Studioで、このプロジェクトの
gemini-3.5-flash-liteが無料枠で利用可能か、現在の回数制限も確認します。
できあがりの目印:公開先ドメインに対応するApp Checkサイトキーがある。実機からの画像認識は次の公開後に確認します。無料枠が利用できない場合、有料に切り替えず、利用条件を確認してください。
無料枠では入力画像・認識結果がGoogleの製品改善に利用されます。利用者が18歳以上であること、画像送信への同意を確認します。読み取り精度は本や撮影条件で変わります。
06 スマホで設定済みZIPを作り、再公開する
- 公開したアプリの 主催者用設定画面を開きます。
- FirebaseのWebアプリ用設定・App Checkのサイトキー・参加者が選ぶ地域名を入力します。
- 「設定済みZIPを作成する → ZIPをダウンロード」で保存します。Androidで保存先を選びたい場合は「ファイルを共有・保存」も利用できます。
- Cloudflare Pagesの同じプロジェクトで「新しいデプロイ → 本番」を選び、設定済みZIPをアップロードします。
- 公開URLを再読み込みします。ログイン画面が表示されたら「初めて参加する方はこちら」から、自分の招待済みメールで登録します。
- 届いたメールの確認リンクを開き、アプリに戻って「確認が終わったので進む」を押します。表示名と地域を設定します。
できあがりの目印:体験用サンプルではなく、自分だけの空の本棚が表示される。地域名は初回設定後に変えると別の地域として扱われるため、試用中は同じ名前を保ちます。
07 2人で確認してから、知人に広げる
- 表紙を撮影し、画像送信の案内を読んで同意してから「AIで読み取る」を押します。書名・著者を確認して登録します。
- 別々のスマホで同じ本を登録し、「仲間を探す」で共通の本として表示されるか確認します。
- 片方だけが交流を希望した段階で、まだメッセージを送れないことを確認します。
- もう片方も希望し、相互にメッセージを送ります。その後、取り消し・ブロックで送受信が止まることを確認します。
- 日本語の本を5冊以上、明るさ・反射・文字の大きさが違う写真で試し、認識結果を確かめます。
- Firebaseの「使用状況」とAIの回数制限を確認し、問題がなければ知人3〜10人へ広げます。
AIは誤ることがあります。別の著者や巻数が出た場合は登録前に修正・再撮影します。書名と著者を正規化して同じ本を照合するため、版やタイトルの大きな違いは同じ本にならない場合があります。
データの保存と利用について
- 参加者のメールと認証情報はFirebase Authenticationで管理します。メールは他の参加者のプロフィールには表示しません。
- 表示名、選択した地域、好きな本の情報と小さな表紙画像は、同じ地域の招待された参加者が閲覧できます。
- 画像認識では、撮影した表紙を縮小してGoogleのGemini Developer APIへ送ります。無料サービスでは画像や回答が製品改善に利用されます。人の顔、住所、機密情報の写った画像は使わないでください。
- 元の写真やGPS位置はアプリのサーバーへ保存しません。認識用の画像は登録画面を閉じるとアプリの一時データから外します。Google側のデータ処理にはGoogleの条件が適用されます。
- 本棚には確認して登録した本だけを保存します。削除すると、本の情報と圧縮した表紙画像の両方を削除します。
- メッセージは相互同意した当事者が読み書きできます。Firebaseプロジェクトの管理権限を持つ主催者は、管理画面からデータを扱えます。
- 取り消し・ブロックは今後のデータアクセスを止めます。すでに閲覧・保存された内容や相手のスクリーンショットを消す機能ではありません。
- ログイン状態はブラウザーのセッションに保存します。共有端末では使い終わったらログアウトしてください。
- 体験モードの追加データは、この端末のブラウザー内だけに保存します。「設定 → 最初の状態に戻す」で削除できます。体験モードの認識結果は操作用の例です。
困ったとき
- スマホで管理画面がうまく表示されない
- 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月の試作用です。画面名・モデル・無料枠は変わることがあります。設定時に公式の表示で確認してください。