4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Firebase Hostingをざっくり理解して最短距離で技術系同人誌のランディングページをデプロイするための概要

Last updated at Posted at 2020-05-09

はじめに

新しく書く技術系同人誌の需要があるかを知りたくなったので、静的ホスティングのFirebase Hosting使ってランディングページを作ってみました。**「ベータ版が公開されたらお知らせするメールアドレスを登録してね」**ってやつです。

スクリーンショット 2020-05-10 12.17.53.png

Combine framework GUIDEBOOK
https://combine-book.web.app/

Firebase Hostingはかなりシンプルで、まったく知らない状態から適当に4〜6時間くらいでやりたいことはできました。

というわけで皆さんも技術系同人誌やアプリをリリースするときなどまずはランディングページ作ってみてはどうでしょう。以下大雑把ですが、やることを書いておきます。

Firebase Hostingでデプロイするまで

準備

firebase init

先にFirebaseコンソールで作成しておいてからプロジェクトを選ぶほうがわかりやすいかもしれない。

そしてタイプとしては下記を選ぶ。

Hosting: Configure files for Firebase Hosting and (optionally) set up GitHub Action deploys

公開方式

  • public/index.htmlのように公開される
    • デザインテンプレートが用意されているわけじゃない
      • HTML landing page templatesとかでググって

URLはデフォルトが2つある

デプロイの仕方

  • デプロイもコマンド
    • ローカルファイルが送信される
  • Firebaseコンソールに履歴が残っていてロールバックもできるので安心
  • コマンドでローカルのまま確認することもできる
  • さらにGitHub ActionsでPull Request出したらそれがプレビュー用の一時的なサーバにデプロイ
    • マージされたら(任意の)mainブランチがデプロイされる

SDK(JSのSDK)

  • 基本的にはscriptタグで読み込む
    • ドメインがデフォルトのままなら"/__/がそのドメインのJSを読み込める
      • https://firebase.google.com/docs/hosting/reserved-urls?authuser=0
      • カスタムのドメインの時どうなるかは未検証
        • <script src="/__/firebase/9.5.0/firebase-app-compat.js"></script>
        • <script src="/__/firebase/init.js?useEmulator=true"></script>
          • init.js内で設定値を読み込んでくれているのでブラウザのデバッガなどで確認するのが良い

useEmulator=true

ドキュメントに書いてある内容について意味不明だったので試したところ

  • ローカル環境
    • useEmulator=true
      • init.jsでレスポンスされるコードを変更
        • firebase.firestoreなどがエミュレータを使うようにしている
        • firestoreやfunctionをローカルで設定しているなら
          • hostとportが記載されている var firebaseEmurators = { ... }
          • 設定されていないなら
            • var firebaseEmulators = {};となる
  • 本番環境
    • 変化なし

ユーザの入力フォームを作る

いちばん重要なのがこれです。これができなきゃ意味がないが、やり方を知らなきゃどうやっていいかわからないような感じです。

  • そもそもランディングページを作って、静的コンテンツを見せるだけなら入力は要らない
    • 興味がある人にemailアドレスを入力してほしいとかそういうのがある
  • 基本的に動的な処理はJavaScriptしか動かない
    • 方法を大雑把に分けると2つ
      • 方法1
        • JSからFirestore(もしくはRealtime Database)を呼び出してデータを叩き込む
          • Vue.jsとかReactとかも使えるがそれはもちろん必須でない
            • デザインのためにBootstrap入れてるとJQuery使う必要があったりするのでJQueryでもいい
          • FirestoreかRealtime Databaseの2つだがもちろんFirestoreのほうがおすすめ
      • 方法2
  • ユースケースに依存するけどJSからFirestore呼び出すのがシンプルで楽
    • Node.jsを使えば何でも出来ますが、ランディングページではオーバーキルな気がします

Google Analyticsを有効にする

  • Firebaseプロジェクト作成したら全部自動でやってくれるわけじゃない
    • プロジェクト内からAnalyticsのダッシュボードにアクセスして「プロパティ」的なやつを作成
      • 名前はプロジェクトと一緒でいい
        • 作成するとテンプレート的に使えるコードが出てくるのでこれを使えばいい
        • Hostingを選んでると/__/firebase/init.js?useEmulator=trueが初期化コードとして自動生成されておりそこにappIdが増えてる
      • firebase.jsonに"site"を追加してと出てくるのでプロパティ的なやつを入力
    • テストしてからダッシュボードに表示されてるのを見てから告知しよ!

他サービスとの使い分け

他サービスについても書いておくと、静的ホスティングにはGitHub PagesやNetlifyなどがあります。開発者がランディングページを作るならどうするか、という私の指標を書いておきます。

  • 完全に静的コンテンツのみでフォームとか絶対必要ないなら...
    • GitHub Pages
      • pushするだけでデプロイするから完全に慣れてるはず
        • Googleフォームへのリンクつけてそこで入力してもらうのが一番最速かもしれない...
          • フォームにバリデーションつけたりとかは諦める
  • ページにフォームは必要だがFirestoreやRealtime Databaseなんか使ったこと無いし不安なら...

おわりに

ランディングページって基本は何を書いてもいいと思います。ただエモいことや今期おすすめのアニメ情報とか書いてあったりしたらそれは一日寝かして次の日にサクッと消しときましょう!

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?