| この記事の要点 |
|
Firebase Hosting とは
Firebase Hosting は Google が提供する静的・動的サイトホスティングサービスです。CDN 配信、SSL 証明書自動発行(Let's Encrypt)、独自ドメイン対応、グローバル配信が無料枠で揃っており、個人サイトから商用 SaaS まで広く使われています。
セットアップ
# 1. firebase-tools インストール
npm install -g firebase-tools
# または
curl -sL https://firebase.tools | bash
# 2. ログイン
firebase login
# 3. プロジェクトディレクトリで初期化
mkdir my-site && cd my-site
firebase init hosting
# 対話形式:
# - Use an existing project / Create new project
# - Public directory: dist (or build / public)
# - Configure as SPA: y/n
# - GitHub Actions: y/n
# - Overwrite index.html: n
# 4. デプロイ
firebase deploy --only hosting
# 5. アクセス
# https://<project-id>.web.app
# https://<project-id>.firebaseapp.com
firebase.json の構成
{
"hosting": {
"public": "dist",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{ "source": "/api/**", "function": "api" },
{ "source": "**", "destination": "/index.html" }
],
"redirects": [
{ "source": "/old", "destination": "/new", "type": 301 }
],
"headers": [
{
"source": "**/*.@(js|css)",
"headers": [
{ "key": "Cache-Control", "value": "public, max-age=31536000, immutable" }
]
},
{
"source": "**/*.html",
"headers": [
{ "key": "Cache-Control", "value": "public, max-age=300, must-revalidate" }
]
}
],
"cleanUrls": true,
"trailingSlash": false,
"i18n": { "root": "/localized-files" }
}
}
独自ドメイン
- Firebase Console → Hosting → 「カスタムドメインを追加」
- ドメイン入力(例:
example.com) - DNS の所有者確認用 TXT レコードを追加
- A レコード 2 つを指定値に設定
- 数時間で SSL 証明書が自動発行(Let's Encrypt)
- HTTPS 強制リダイレクトも自動
プレビューチャンネル
PR ごとに一意の URL を生成できる強力機能:
# 機能ブランチをプレビュー URL に
firebase hosting:channel:deploy pr-123
# → https://<project>--pr-123-xxxx.web.app
# 有効期限 7 日(変更可)
# 期限延長
firebase hosting:channel:deploy pr-123 --expires 30d
# チャンネル一覧
firebase hosting:channel:list
# 削除
firebase hosting:channel:delete pr-123
Cloud Functions と統合
静的ファイルに加えて、サーバサイドレンダリング (SSR) や API エンドポイント も同じドメインで提供可能:
// functions/index.js
const functions = require('firebase-functions');
exports.api = functions.https.onRequest((req, res) => {
if (req.path === '/api/hello') {
res.json({ message: 'Hello from Cloud Functions' });
} else {
res.status(404).send('Not Found');
}
});// firebase.json の rewrites で関数にルーティング
{
"hosting": {
"rewrites": [
{ "source": "/api/**", "function": "api" },
{ "source": "**", "destination": "/index.html" }
]
}
}
Cloud Run 統合
Docker コンテナベースの動的バックエンドを Firebase Hosting 経由で配信:
{
"hosting": {
"rewrites": [
{
"source": "/api/**",
"run": {
"serviceId": "my-api",
"region": "asia-northeast1"
}
}
]
}
}
Next.js / Nuxt / Astro 公式サポート
# Web Frameworks サポート(早期パブリックプレビュー。SSR の Next.js / Angular は App Hosting 推奨)
firebase experiments:enable webframeworks
# Next.js プロジェクト内で
firebase init hosting
# → Detect Next.js → 自動設定
# → 静的書出 / SSR / ISR を自動振り分け
firebase deploy
# → SSR ページは Cloud Functions / Cloud Run へ自動デプロイ
料金体系
| 項目 | Spark (無料) | Blaze (従量) |
|---|---|---|
| ストレージ | 10 GB | $0.026 / GB / 月 |
| 転送量 | 360 MB / 日 | $0.15 / GB |
| カスタムドメイン | 無料 | 無料 |
| SSL 証明書 | 無料 (自動) | 無料 (自動) |
| カスタムドメイン数 | 制限 | 無制限 |
| Cloud Functions 連携 | 不可 | 可 |
Vercel / Netlify との比較
| 項目 | Firebase Hosting | Vercel | Netlify |
|---|---|---|---|
| 無料転送量 | 360 MB/日 ≒ 10.5 GB/月 | 100 GB/月 | 新規アカウントは月 300 クレジット制(帯域 1 GB = 20 クレジット、2026-10 時点) |
| Next.js 公式 | ○ | ◎ (本拠地) | ○ |
| Auth / DB 連携 | ◎ (Firebase Auth / Firestore) | △ (有料) | △ (有料) |
| エッジランタイム | Cloud Run / Functions | Edge Functions | Edge Functions |
| ビルド時間 | 制限なし (Spark で月制限) | 6000 分/月 | ビルド分数は計測せず本番デプロイ 1 回 15 クレジット(2026-10 時点) |
| CLI 中心 | ◎ | ○ | ○ |
運用 Tips
- キャッシュ制御は
Cache-Controlを HTML 短く / JS・CSS 長く(fingerprint 付)に - 大量静的ファイルは gzip / brotli 自動圧縮済
- サブパス(
/blog)に別プロジェクトをホストするには Hosting Rewrites +site - GitHub Actions と統合でPR ごと自動プレビュー
- サイトを複数登録するには
firebase target:apply hosting prod my-site-prod
FAQ
Q: 無料枠の 360 MB/日は実用的?
A: 小規模なブログ・ポートフォリオなら十分。月 100 万 PV 等になると Blaze 必須。
Q: 既存 Web サーバから移行する手順は?
A: 静的ファイルを public/ にコピー → firebase deploy → DNS 切替(A レコード変更)→ 完了。
Q: WordPress を Firebase Hosting で動かせる?
A: 不可(PHP 非対応)。ヘッドレス WP API + 静的サイトジェネレータ(Next/Astro)構成なら可。
子ページ
子ページはありません
同階層のページ
- プロジェクトの作成とアプリ連携
- Firebaseアプリの導入(初期設定)と開発用ローカルサーバの起動方法
- Firebase Hosting(執筆途中)
- エラー一覧
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09