ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Firebase とは
Firebase は Google が運営する BaaS(Backend as a Service)プラットフォームです。2011 年に Firebase, Inc. として誕生し、2014 年に Google が買収。バックエンドを自前で立てずに、認証・データベース・ストレージ・サーバレス関数・配信などをクライアント SDK 一発で利用できるのが最大の特徴です。MVP やプロトタイプ、個人開発、モバイルアプリのバックエンドとして圧倒的なシェアを持ちます。

主要プロダクト一覧
| カテゴリ | プロダクト | 用途 |
|---|---|---|
| 構築 | Authentication | Email/Password、Google/Apple/X 等の SNS ログイン、SMS、匿名認証 |
| Firestore | NoSQL DB(ドキュメント指向)。リアルタイム同期、強力なクエリ、オフライン対応 | |
| Realtime Database | 古参の JSON ツリー型 DB。低レイテンシ、シンプル | |
| バックエンド | Cloud Functions | サーバレス関数。HTTP / Firestore トリガ / 認証イベント等 |
| Cloud Storage | 大容量ファイル(画像・動画)。GCS ベース | |
| Hosting | 静的サイト + SPA 配信、SSL 自動 | |
| 運用 | Analytics | GA4 ベースの計測 |
| Crashlytics | モバイルクラッシュ収集 | |
| Remote Config | サーバ側で動的に設定値を変更 | |
| 成長 | Cloud Messaging (FCM) | プッシュ通知 |
| AI | Vertex AI / Genkit | Gemini 連携。Firebase Studio はブラウザ完結の AI IDE(2025〜) |
料金プラン
| プラン | 料金 | 主な制限 |
|---|---|---|
| Spark(無料) | $0 | Functions 不可(IAM 外部呼び出し不可)、Firestore 1GB、Storage 5GB、Hosting 10GB 配信/月 |
| Blaze(従量) | 使った分 | Spark の無料枠を超えると課金。実質ほぼ無制限 |
Cloud Functions(第 2 世代)と Cloud Run、Vertex AI などは Blaze プランが必須です。最初は無料枠で開発し、本番リリース直前に Blaze に上げる運用が一般的。
Web SDK v9(モジュラー)の使い方
# インストール
npm install firebase
# CLI(プロジェクト設定・デプロイ)
npm install -g firebase-tools
firebase login
firebase init// firebase.js — 初期化
import { initializeApp } from 'firebase/app';
import { getAuth } from 'firebase/auth';
import { getFirestore } from 'firebase/firestore';
const firebaseConfig = {
apiKey: 'AIza...',
authDomain: 'myapp.firebaseapp.com',
projectId: 'myapp',
storageBucket: 'myapp.appspot.com',
appId: '1:1234567890:web:abcdef',
};
const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);
export const db = getFirestore(app);
Authentication 例
import {
createUserWithEmailAndPassword,
signInWithEmailAndPassword,
GoogleAuthProvider, signInWithPopup,
onAuthStateChanged, signOut,
} from 'firebase/auth';
// メール登録
await createUserWithEmailAndPassword(auth, 'a@example.com', 'pass1234');
// ログイン
await signInWithEmailAndPassword(auth, 'a@example.com', 'pass1234');
// Google ログイン
const provider = new GoogleAuthProvider();
await signInWithPopup(auth, provider);
// 認証状態監視
onAuthStateChanged(auth, (user) => {
if (user) console.log('logged in as', user.uid);
});
Firestore 例
import {
collection, doc, addDoc, getDocs, onSnapshot,
query, where, orderBy, limit, serverTimestamp,
} from 'firebase/firestore';
// 追加
await addDoc(collection(db, 'posts'), {
title: 'Hello',
uid: auth.currentUser.uid,
createdAt: serverTimestamp(),
});
// クエリ
const q = query(
collection(db, 'posts'),
where('uid', '==', auth.currentUser.uid),
orderBy('createdAt', 'desc'),
limit(20)
);
// リアルタイム監視
onSnapshot(q, (snap) => {
snap.docChanges().forEach(c => {
console.log(c.type, c.doc.id, c.doc.data());
});
});
Security Rules(必須)
Firestore / Storage / Realtime Database はクライアントから直接叩きます。サーバを挟まないので、不正アクセス対策は Security Rules で守ります。
// firestore.rules
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// 自分の投稿だけ読み書き可
match /posts/{postId} {
allow read: if true;
allow create: if request.auth != null
&& request.resource.data.uid == request.auth.uid;
allow update, delete: if request.auth != null
&& resource.data.uid == request.auth.uid;
}
// ユーザー本人のみ
match /users/{userId} {
allow read, write: if request.auth != null
&& request.auth.uid == userId;
}
}
}
本番デプロイ前に Firebase Local Emulator でテストを書くのが定石です。
Cloud Functions(v2)
// functions/index.js
const { onRequest } = require('firebase-functions/v2/https');
const { onDocumentCreated } = require('firebase-functions/v2/firestore');
const { initializeApp } = require('firebase-admin/app');
const { getFirestore } = require('firebase-admin/firestore');
initializeApp();
// HTTP 関数
exports.hello = onRequest(async (req, res) => {
res.json({ message: 'hello' });
});
// Firestore トリガ
exports.onPostCreate = onDocumentCreated('posts/{id}', async (event) => {
const data = event.data.data();
console.log('new post by', data.uid);
// 例: 通知を作る
await getFirestore().collection('notifications').add({
uid: data.uid,
text: '新規投稿が作成されました',
});
});# デプロイ
firebase deploy --only functions
# ローカル実行
firebase emulators:start
主要競合との比較
| 製品 | DB | 認証 | Functions | OSS | 特徴 |
|---|---|---|---|---|---|
| Firebase | Firestore / RTDB(NoSQL) | ○ | Cloud Functions | × | Google 製、エコシステム最大、リアルタイム強い |
| Supabase | PostgreSQL | ○ | Edge Functions (Deno) | ○ | SQL ベース、OSS でセルフホスト可 |
| AWS Amplify | DynamoDB / RDS | Cognito | Lambda | 一部 | AWS の総合フロント、フルコントロール |
| Convex | 独自 | ○ | JS 関数 | 一部 | TypeScript ファースト、リアクティブクエリ |
| Vercel | Postgres / KV(連携) | NextAuth 連携 | Edge Functions | × | Next.js ホスティング寄り、DB は別建て |
Firebase Studio(2025〜)
Firebase Studio は Google が 2025 年に発表した、ブラウザ上で動く AI 統合開発環境(旧 Project IDX)です。Gemini と統合され、自然言語からフロント/バック両方の Firebase アプリを生成できます。プロトタイピングから本番デプロイまでをブラウザ完結で行える点が特徴。
FAQ
Q: Firestore と Realtime Database のどちらを選ぶ?
A: 新規は基本 Firestore。複雑なクエリ・スケール・複数地域同期で優位。Realtime DB はチャットなど超低レイテンシで JSON ツリーが合うケースに残ります。
Q: 無料プランで本番運用できる?
A: 個人ブログ程度なら可能ですが、Cloud Functions が必須となる時点で Blaze へ上げる必要があります。Blaze でも実質無料枠があるため、月額数十円〜数百円で運用するケースが多い。
Q: Firebase からの脱出(ベンダーロックイン)が心配
A: 認証は Firebase Auth 独自仕様、Firestore も独自 NoSQL でロックインは強めです。ロックインを避けるなら Supabase(Postgres)か自前 OSS スタックを検討。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
- Firebase
- GitHub
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?