ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
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 サポート(β → GA)
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/月 | 100 GB/月 |
| Next.js 公式 | ○ | ◎ (本拠地) | ○ |
| Auth / DB 連携 | ◎ (Firebase Auth / Firestore) | △ (有料) | △ (有料) |
| エッジランタイム | Cloud Run / Functions | Edge Functions | Edge Functions |
| ビルド時間 | 制限なし (Spark で月制限) | 6000 分/月 | 300 分/月 |
| 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)構成なら可。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- プロジェクトの作成とアプリ連携
- Firebaseアプリの導入(初期設定)と開発用ローカルサーバの起動方法
- Firebase Hosting(執筆途中)
- エラー一覧
人気ページ
- 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
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 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
- 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
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・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
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 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
コメントを削除してもよろしいでしょうか?