
Firebase Studioをトライ③【未来の練習】
先日の記事で
先日の記事でFirebase StudioでSlackのようなアプリをFirebase Studioで作ってみようとトライしました。これもまだまだフロントだけでしたが日本語表記のロゴだけでも結構なやり取りがありました
ちょっと凹みました
これは僕は非常に楽しかったですが多くの先生方にこれはきついです。もう一度戻ってGoogle AI Stusdio Buildで同じ指示でどんなものができるかやってみましょう
①以下にアクセス
②Firebase Studioに入れたものと同じプロンプトを
・ユーザー作成画面(名前・メール・パスワード)
・ログイン画面(メールとパスワード あとはパスワード忘れた時)
・あとはSlackのようなコミュニケーション(チャンネルやダイレクトメッセージ ファイルも添付できる)
・ログインすればどの端末でも見れるように
・データベースも実装してデプロイしたら使えるように
こんな感じで作って!③<Build>を

④また2分ほどで出来ました

⑤ログインしてみましょう(認証はバックエンドなのでこれはあくまでモック)

⑥テキストも写真も入ります

⑦足りない機能
・新しいチャンネル追加
・新しいダイレクトメッセージ機能
・添付ファイルダウンロード機能
・アカウント設定機能
をまずはお願いしました

どんどん作ってくれます
⑧Google AI Studioの方がFancyなUIですね

⑨<新しいチャンネル作成>もできます


⑩<新しいダイレクトメッセージ機能>も


⑪添付ファイルダウンロード機能もできます

⑫<アカウント設定機能>もできます

あれ?Firebase Studioの話ではないの?
なんかGoogle AI Studio Buildの説明になっていますが、
・Google AI Studio Buildで大まかフロントエンドの実装を行う(←今ここ)
・Google AI Studio Buildでできていないことを聞く(←次)
・このコードをダウンロード(←次)
・ダウンロードしたコードをFirebase Studioにアップロード
・Firebaseでバックエンドを実装
という一連の流れの説明をしておりますので、けっしてFirebase Studioを忘れているわけではありません。
コードをダウンロードしましょう
①ここでBuildに聞いておきましょう。
「このアプリのコードをダウンロードしてFirebase Studioでバックエンドやデータベースや承認や通知などのバックエンドなどを実装していくのですが公開してWEBアプリとして動かすのに現時点で足りてなくてFirebase Studioでしなくてはならないことを教えて」とチャットで聞きます
このアプリのコードをダウンロードしてFirebase Studioでバックエンドやデータベースや承認や通知などのバックエンドなどを実装していくのですが公開してWEBアプリとして動かすのに現時点で足りてなくてFirebase Studioでしなくてはならないことを教えて現在のアプリケーションはフロントエンドのUIと基本的な動作ロジックが整っていますが、これを実際にウェブアプリとして公開し、データベースや認証などのバックエンド機能を持たせるためには、Firebaseの各サービスをFirebaseコンソール(一般的にFirebase Studioと呼ばれることもあります)で設定し、アプリケーションコードに組み込む必要があります。
以下に、Firebaseを使ってバックエンド機能を実装し、ウェブアプリとして公開するために必要な主要なステップを挙げます。Firebaseプロジェクトの作成と設定:
Firebaseコンソール (https://console.firebase.google.com/) で新しいFirebaseプロジェクトを作成します。
プロジェクト設定からウェブアプリを追加し、Firebase SDKの構成オブジェクト(apiKey, authDomainなどを含む)を取得します。この構成情報をReactアプリに組み込み、Firebaseを初期化します。通常、index.tsx または専用の firebase.ts ファイルで行います。
認証 (Firebase Authentication):
Firebaseコンソールでの設定: Authenticationセクションで、使用したいサインイン方法(例: メール/パスワード、Google、Facebookなど)を有効にします。
コードの変更:
LoginScreen.tsx と SignUpScreen.tsx: 現在のモックログイン・サインアップ処理を、Firebase AuthenticationのAPI (signInWithEmailAndPassword, createUserWithEmailAndPassword, signOutなど)に置き換えます。
App.tsx: currentUser の状態管理を、Firebaseの認証状態リスナー (onAuthStateChanged) を使用して、実際のログインユーザー情報を反映するように変更します。
パスワード忘れ機能もFirebase Authenticationの sendPasswordResetEmail を使って実装できます。
データベース (Cloud Firestore または Realtime Database):
Firebaseコンソールでの設定: Firestore DatabaseまたはRealtime Databaseを作成し、初期のセキュリティルールを設定します(開発初期はテストモード、本番ではより厳格なルールを設定)。
データモデルの設計: ユーザー情報、チャンネル情報、メッセージ、ダイレクトメッセージなどのデータ構造を設計します。
コードの変更:
ChatLayout.tsx: 現在の initialChannels, initialDMs, initialMessages, allMockUsers といったモックデータを、FirestoreまたはRealtime Databaseからのリアルタイムデータ取得に置き換えます。これには onSnapshot リスナーを使い、データが変更されるとUIが自動的に更新されるようにします。
メッセージ送信 (handleSendMessage)、チャンネル作成 (handleCreateChannel)、DM作成 (handleCreateDM) のロジックを、データベースへのデータ書き込み処理 (addDoc, setDoc, updateDocなど) に変更します。
AccountSettingsScreen.tsx: ユーザー情報の更新処理を、データベースの該当ユーザードキュメントを更新するように変更します。
ファイルストレージ (Cloud Storage for Firebase):
Firebaseコンソールでの設定: Storageを有効にし、必要に応じてストレージルールを設定します(認証されたユーザーのみがアップロード/ダウンロードできるようにするなど)。
コードの変更:
MessageInput.tsx: ファイル添付機能を、選択されたファイルをCloud Storageにアップロードする処理に変更します。アップロード後、ファイルのダウンロードURLを取得します。
MessageItem.tsx および Message 型: fileUrl には、Cloud Storageから取得した実際のファイルのダウンロードURLを格納するようにします。これにより、添付ファイルが実際に表示・ダウンロード可能になります。
ダウンロード機能: message.fileUrl を直接 <a> タグの href に使うか、必要であれば署名付きURLを生成するロジックを追加します(ストレージルールによる)。
通知 (Firebase Cloud Messaging - FCM) - オプション:
もしリアルタイム通知(例: 新しいメッセージが届いた際にブラウザ通知を出す)を実装したい場合、FCMを利用します。
Firebaseコンソールでの設定: プロジェクトにCloud Messagingを追加します。
コードの変更:
クライアント側でFCMのパーミッションを要求し、デバイストークンを取得します。
Cloud Functionsを使って、データベースの特定の変更(例: 新しいメッセージの追加)をトリガーにして、該当ユーザーに通知を送信するロジックを実装します。
バックエンドロジック (Cloud Functions for Firebase) - オプション:
データベースのトリガー(例: 新しいユーザーが作成されたらデフォルトのチャンネルに参加させる)、HTTPエンドポイントの作成、定期的なタスクの実行など、サーバーサイドのロジックが必要な場合に使用します。
デプロイ (Firebase Hosting):
Firebase CLIのセットアップ: npm install -g firebase-tools でFirebase CLIをインストールし、firebase login でログインします。
プロジェクトの初期化: Reactアプリのルートディレクトリで firebase init hosting を実行し、Firebaseプロジェクトと連携させます。ビルドディレクトリ(通常 build または dist)を指定します。シングルページアプリケーション(SPA)なので、すべてのURLを index.html にリダイレクトする設定も行います。
ビルド: npm run build (または同等のコマンド) でReactアプリを本番用にビルドします。
デプロイ: firebase deploy コマンドでビルドされたファイルをFirebase Hostingにデプロイします。デプロイ後、提供されるURLでウェブアプリにアクセスできます。
現時点で特にFirebase Studio(コンソール)で行う必要があることの要約:Firebaseプロジェクトの作成。
ウェブアプリの登録とSDK構成情報の取得。
Authentication: 利用するサインインプロバイダの有効化。
Database (Firestore/Realtime Database): データベースの作成と初期ルールの設定。
Storage: Cloud Storageの有効化と初期ルールの設定。
これらの設定をFirebaseコンソールで行った後、Reactコードに必要なFirebase SDKを導入し、各機能をFirebaseのサービスと連携させるコーディング作業を進めていくことになります。現在のコードはUIの基盤としては非常によくできていますが、バックエンドとの連携部分はこれからFirebaseを使って構築していく形になります。
答えが返ってきました。
②右上の<Download the app>をクリック

③Firebase Studioにアクセスします
④そして先にBuildで教えてもらった指示をプロンプトに入れます。そしてダウンロードしたZIPを<Import Repo>で入れます

④しかし<Import Repo>で<Upload Project>すると勝手に設定が始まるのでプロンプトはもう一度入れ直しです
<Gemini>のタブを選んでプロンプトを入れて送信

⑤ターミナルでしたに<Problems>が出てきたのでそれを画像でキャプチャーすると問題解決の方法を示してくれます

⑥すごいのはAI上ですぐに<Run Command in Terminal>を出してくれることです

⑦問題が解決されました
この辺りは先生方の問題で方法は異なるかもしれませんがGEMINIに聞けばよろしいかと

実際の作業に
ここで指示出しをするときに「高校生でもわかるように」という文言を入れながら聞いております

例えるなら、ウェブアプリを「家」だと考えてみましょう。
家(ウェブアプリ)を建てる場所を決める: これが「Firebaseプロジェクトの作成」です。
家に電気やガス、水道を通す: これが「Firebase SDKの組み込みと初期設定」です。家の中で電化製品を使ったり、お風呂に入ったりできるように、アプリの中でFirebaseの機能を使えるようにします。
家の鍵をつける、誰が出入りできるか決める: これが「認証機能の実装」です。アプリを使う人が、ちゃんと登録した人か、誰でも入れるのかなどを設定します。
家に収納スペースや図書館を作る: これが「データベース連携」です。ユーザーの情報、チャットのメッセージ、ファイルなどを整理してしまっておく場所を作ります。
郵便受けや宅配ボックスを設置する: これが「ファイルストレージ(Cloud Storage)」です。画像やファイルなどをアプリで扱えるようにします。
回覧板や電話を設置する: これが「通知機能(FCM)」です。(これはオプションで、必要なら設定します。)
では、これらのステップを順番に見ていきましょう。
しかし、具体体なことは割愛します
皆さん訳解んないですよね。実際これを自分でこなせるクリニック院長先生はいないと思います。言葉もわからないですし、技術的バックグラウンドもわからないですし、私も日曜日1日潰してようやくできましたが、かなり凹みながら行いましたので
でも大切なことはいずれこういったこともすべてAIでできるようになると思うので制作プロセスの考え方を理解しておくことです
今日はここまで
今回伝えたかったことは、いろんなことが素人にできるようになりつつあるということなので、その閾値レベルがどんどん下がっていることです。
今回
<皆さんすでに出来ます>
・Google AI Studio Buildで大まかフロントエンドの実装を行う
・Google AI Studio Buildでできていないことを聞く
・このコードをダウンロード
・ダウンロードしたコードをFirebase Studioにアップロード
<近々AIで簡単になるはず>
・Firebaseでバックエンドを実装
フロントエンドだけで動くアプリも色々作れるので是非GOOGLE AI STUDIO BUILDだけでも是非お試し下さい