Firebase Hosting を使ってFlutter のWebアプリをホスティングする

以前、NetlifyにFlutter Webアプリをデプロイするという記事を書きました。

NetlifyにFlutter Webアプリをデプロイする

Flutterで開発した webアプリを公開する方法には、いくつかあります。公式サイトでは以下の3つが挙げられています。 Firebaseホスティング GitHubPages Google CloudHosti…

アプリ内でファイルストレージや、認証を使う必要ができてしまったので、これを機会にFirebaseに乗り換えることとしました。

Firebase

Firebase は、高品質のアプリを迅速に開発できる Google のモバイル プラットフォームで、ビジネスの成長に役立ちます。

Firebaseにはアプリのバックエンドとして必要な機能が一通り揃っています。この記事では、Hosting機能を使ってみます。

Firebaseプロジェクトの作成

事前準備

アカウントを登録して、Firebaseコンソールにログインできるようにしておきます。

Hostするwebアプリをビルドして動作確認しておきます。

flutter build web

以降の操作は、Firebaseコンソールで指示される通りに実行します。

Firebaseプロジェクトの追加

Firebaseコンソールからプロジェクトの追加を実行します。

次にプロジェクトにアプリを追加します。今回は、webアプリアイコン(</>)をクリックします。

WebアプリにFirebaseを追加

アプリのニックネームを決めます。

Hostingの設定にチェックし、新しいサイトを作成を選択して、サイト名を入力します。

Firebase SDKの追加

<script>タグを使用するを選択します。

flutterプロジェクトのindex.htmlを開いて、bodyタグ直下に以下のコードを挿入します。このコードは、Firebaseコンソールに表示されるので、コピーして使います。

<script type="module">
  // Import the functions you need from the SDKs you need
  import { initializeApp } from "https://www.gstatic.com/firebasejs/9.9.2/firebase-app.js";
  // TODO: Add SDKs for Firebase products that you want to use
  // https://firebase.google.com/docs/web/setup#available-libraries

  // Your web app's Firebase configuration
  const firebaseConfig = {
    apiKey: "<Your API Key>",
    authDomain: "<Youre Domain>",
    projectId: "<Your Project id>",
    storageBucket: "<Your StrageBucket>",
    messagingSenderId: "<Your messagingSenderId>",
    appId: "<Your appID>"
  };

  // Initialize Firebase
  const app = initializeApp(firebaseConfig);
</script>

Firebase CLI のインストール

Firebase Hostingへのデプロイ

コンソールの指示通りに、以下のコマンドを実行します。実行はflutterプロジェクトのルートディレクトリで行います。

firebase login
firebase init

firebase.jsonファイルの"public"を"build/web"に変更します。

{
  "hosting": {
    "site": <Your site>,
    "public": "build/web",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  }
}

最後に、コンソールに表示されたデプロイコマンドをコピーして実行します。

firebase deploy --only hosting:<Your site>

以上で、Firebase Hosting機能を使ったWebアプリが完成します。結局、画面の指示に従っただけで、できてしまいました。特にわかりにくい事はなかったです。