Flutterでアプリ開発 (Netflix風) その5

2024年10月18日

Hostingの実装

Hostingってなんぞや

■□■□ プロンプト ■□■□

Hostingを実装したいと思います。 現行のソースにFirebase Hostingの実装サンプルをいただきたいです

Firebase Hostingを既存のFlutterプロジェクトに実装するには、以下の手順を踏む必要があります。現行のソースコードに大きな変更を加える必要はありませんが、いくつかの設定ファイルを追加し、コマンドを実行する必要があります。

1,まず、Firebase CLIをインストールしていない場合は、以下のコマンドでインストールします:

npm install -g firebase-tools

2,Firebase CLIにログインします:

firebase login

3,プロジェクトのルートディレクトリで以下のコマンドを実行し、Firebaseプロジェクトを初期化します:

firebase init hosting
  1. 初期化プロセス中に以下の質問に答えます:
    • Firebaseプロジェクトを選択します。
    • 公開ディレクトリとして build/web を指定します。
    • シングルページアプリケーションとして設定するかどうかを尋ねられたら、Yes と答えます。
  2. 初期化が完了すると、プロジェクトのルートに firebase.json と .firebaserc ファイルが作成されます。
  3. firebase.json ファイルを以下のように編集します:
{
  "hosting": {
    "public": "build/web",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

コマンド実施!結構時間かかる。。! 3分ほど待ちました

$ firebase login
Firebase CLI v13.22.0 is incompatible with Node.js v16.14.2 Please upgrade Node.js to version >=18.0.0 || >=20.0.0

2個目のコマンド打とうとすると nvmのバージョン古いからできない、言われました >> nvm 18系へ変更

firebase init hosting

What do you want to use as your public directory?

「公開ディレクトリとして何を使用しますか?」

これは、Firebase が公開するための静的ファイル(HTML、CSS、JavaScript、画像など)が格納されているディレクトリを指します。以下のように回答することをお勧めします:

build/web

Configure as a single-page app (rewrite all urls to /index.html)?

この質問は、Firebase Hostingの設定時に表示され、

シングルページアプリケーション(SPA)としてサイトを構成するかどうかを尋ねています。

意味:
“シングルページアプリケーションとして構成しますか?(全てのURLを /index.html にリライトします)"

推奨:

  • Flutterウェブアプリやその他のSPA(React, Vue.jsなど)を使用している場合は Yes を選択します。
  • 複数のHTMLページを持つ従来型のウェブサイトの場合は No を選択します。

Flutter webアプリケーションの場合は、通常 Yes を選択することをお勧めします。これにより、アプリのルーティングが正しく機能し、ページの更新時やディープリンクでの問題を回避できます。

i  Writing configuration info to firebase.json...
i  Writing project information to .firebaserc...

✔  Firebase initialization complete!

complete! と出たので問題なしです!
続いてデプロイしていきます

$ firebase deploy

=== Deploying to '************'...

i  deploying hosting
i  hosting[************]: beginning deploy...
i  hosting[************]: found 2 files in build/web
✔  hosting[************]: file upload complete
i  hosting[************]: finalizing version...
✔  hosting[************]: version finalized
i  hosting[************]: releasing new version...
✔  hosting[************]: release complete

✔  Deploy complete!

無事達成したのでhostした状態で起動

Hostingには成功したけど

Youtubeが再生できないのはこれが理由ではなかったようで。。。

調べるとYoutubeAPIなるものが必要のよう、、

そこまでする必要があるか検討中。。。

シンプルにYoutubeのタグ埋め込みでいけそうな。。