FirebaseのStorageを使ったWEBアプリを作る

FirebaseのStorageを使ったWEBアプリを作る

FirebaseのStorageを使ったWEBアプリを作る

Firebase Storageは、ファイルや画像を自由にアップロード・ダウンロード管理できるGoogle管轄のストレージサービスです。

クライアントアプリやWEBアプリからUPしたデータは、FirebaseのConsole上で管理する事ができます。

用意するのはアップロード部分だけであり、それ以外のバックエンド機能は全てFirebase側が担当してくれます。

FirebaseのStorageとは

Cloud Storage for Firebase(以下:Firebase Storage)は、写真や動画などのバイナリーデータなどを保存する事ができるサービスです。

Googleの基準や規模をもとに構築され、強力かつシンプルでコスト効果が高いとされています(無料枠あり)。

Cloud Storage用の「Firebase SDK」を使用し、 クライアントからファイルのアップロード・ダウンロードができます。

実際の保存先は Google Cloud Storage(GCS)ですので、実はFirebaseとGCSの両方からアクセスが可能です。

画像をアップするWEBアプリ

本記事では、このFirebase Storageサービスを使ったWEBアプリを作成していきます。

アプリからUPした画像は、Firebase Console上から管理できる様になっています。

ストレージとしてのバックエンド機能はFirebase側に任せ、ファイルをUPするスクリプトを準備するだけです。

Hostingも併用

クライアントアプリを作ったら、本記事ではそれをHostingでFirebaseにデプロイします。

ドメイン名をつけて、ファイルUPアプリを一般公開する事もできる訳ですね。

ユーザーから書類などの撮影画像などを送ってもらい、画像を保存・確認するアプリなどに使える事でしょう。

ただしWEBページとして一般公開する場合、セキュリティルールの設定が必要です。

Firebase Hosting

Firebase HostingによるWEBページの開設方法については、以下の記事で詳しく解説しています。

では早速構築してみましょう。

Storageの準備

プロジェクトの作成

アプリを作る前に、Firebase側で初期準備をしておきます。

プロジェクトを追加をクリック

Firebase Console画面TOPから「プロジェクトを追加」をクリックします。

プロジェクト名を決定

名前は自由に決定して下さい。

GoogleアナリティクスをOFFにした状態

今回もGoogleアナリティクスの設定はOFFにして、プロジェクトの作成をクリックします。

Storageの開設

構築メニューからStorageを押し、始めるボタンをクリックする

プロジェクトを作成したら、右の構築メニューから「Storage」を選択して下さい。

画面が変わったら、中央の「始める」をクリックしましょう。

Cloud Storageの設定

Cloud Storageの設定ページが開きます。

本番モードで開始するを選択

まず2つのマークのうち、「本番環境モードで開始する」にマークがついた状態で右下の「次へ」をクリックします。

ロケーションコードが表示された状態

次の「Cloud Storageのロケーション設定」では、左下にロケーションのコードが表示されています。

これはこのまま何もせず、右の「完了」を押しましょう。

ストレージ枠の開設ができると、ファイル管理をする画面に切り替わります。

セキュリティルールの編集

Storageの管理画面が表示された状態

画像をアップする前に、まずは「Files」の隣のタブ「Rules」を開きましょう。

ストレージのセキュリティルールのコード

以下の様なコードが表示されているはずです。これの一部分を書き換えます。

セキュリティコードを書き換えた状態

編集し始めると上部に「公開」「破棄」のボタンが表示されます。編集後に「公開」を押して下さい。

これにより、誰でもデータUPができるルールとなります。

画像のアップロード、確認

ではテスト画像をアップしてみましょう。

ファイルをアップロードボタンを押して画像を選択する様子

「ファイルをアップロード」ボタンを押すと、PC内の画像を選択できるようになります。

画像を選択して「OK」してみましょう。

画像がアップロード登録された状態

画像がFirebase Storageにアップされ、一覧に追加されます。

画像左のチェックをつけて、UPした画像を消す事もできます

アップロード画像の詳細

追加されている画像名をクリックすると、画像サムネイルや詳細情報が表示されます。

アップロード画像の詳細情報ページ

右欄の「名前」をクリックすれば、画像URLを表示する事ができます。

アプリの登録

では次に、プロジェクト内にFirebaseアプリを登録します。

プロジェクト名が、先程作ったプロジェクト名になっている事を確認してくださいね。

アプリ追加マークをクリックする

左上の「プロジェクトの概要」をクリックすると、右下に各種アプリのマークが横並び表示されます。

アプリ追加となる「</>」マークをクリックしましょう。

ウェブアプリへFirebaseを追加

ニックネームをつけてアプリを追加する

アプリのニックネームを適当につけて、「アプリの登録」をクリックします。

次の画面では一番下にある「コンソールに進む」をクリックしましょう。

これでアプリが追加されました。

アプリIDの確認

自動的に画面が変わり、プロジェクト設定の「全般」タブページが開くと思います。

画面が変わらない場合は、左上の「プロジェクト設定」欄にある歯車マークをクリックして下さい。

ページの下に、Firebase SDKのアプリID情報が表示されているはずです。

プロジェクトの設定ページ全般タブ下のアプリID情報

・npm(今表示中のページ)
・cdn
・config

3種類の表記がありますが3つとも中身は同じです。後ほどコピーしますので開ける様にしておきましょう。

ここまででFirebase側の設定はほぼ終了しました。

次はローカル環境上でアプリを作成していきます。

コマンドラインによるFirebaseの初期化

今回はWindows11環境ですので、コマンドプロンプトを使って構築していきます。

まずはアプリを入れるフォルダを一つ作りましょう。

今回はプロジェクト名と同じ名前でフォルダを作りました。

Firebase初期化

コマンドプロンプトを開き、まずは作ったディレクトリまで移動しましょう。

cd C:\Users\info\デスクトップ\ディレクトリ名

このディレクトリ内で、Firebaseを初期化していきます。

firebase init

Firebaseの初期化

Are you ready to proceed?

上の様に聞かれるので「Y」を押しましょう。

利用サービスの選択(2つ)

次に利用するサービスを選択します。今回はHostingとStorageの2つを利用します。

上下矢印で該当サービスに合わせて、スペースを2か所押しましょう。

スペースを押すのは以下の2つです。

Hosting: Configure files for Firebase Hosting and (optionally) set up GitHub Action deploys Storage: Configure a security rules file for Cloud Storage

Firebaseサービスの選択

上記2つに※印が付いたことを確認したら、Enterを押して下さい。

プロジェクトの選択

次にプロジェクトの利用方法を選びます。矢印で次の項目を選びましょう。

Use an existing project

上記に合わせてEnterを押します。

これまでに作ったプロジェクト一覧が表示されますので、今回作成したプロジェクト名を選択して下さい。

オプション選択

What do you want to use as your public directory?

これに「Y」を押す事で、「public」が公開フォルダとして作られます。

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

Spaは今回無視しますので、これに「N」を押します。

Set up automatic builds and deploys with GitHub?

今回GitHubも無視しますので、これに「N」を入力してEnterキーを押します。

Firebase initialization complete! と表示されれば、初期化が完了したことになります。

アプリの作成

初期化が終了したら、フォルダの中を確認してみましょう。

おおよそ以下のような構成になっているはずです。

ディレクトリ構成

├― 作成ディレクトリ ├─ public/フォルダ ├─ .firebase/フォルダ ├─ .firebaserc ├─ .gitignore ├─ firebase.json ├─ storage.rules

さらに、「public」フォルダの中身は以下です。

├― 作成ディレクトリ ├─ public └─ index.html └─ 404.html

中にはindex.htmlと404.htmlファイルのみが入っている状態になります。

今回アプリ記述するページはindex.htmlのみで、後は触りません。

index.html内ソース

ではいよいよindex.html内にファイルをアップするコードを入れていきます。

以下が完成ソースになります。

コードの解説

ここからは、上のindex.htmlソース内の各説明になります。

head内の読込パスは、もともと記載されていたfirebaseコードのままでOKです。

実物にはstyleタグが入っていますが、わかりやすくなる様ソース上では削除しています。

formタグソース

body部分に以下の様なフォームタグソースを入れます。

<form> <input type="file" value="画像選択"> <input type="submit" value="アップロード"> </form>

ごく普通のファイルをアップロードするソースコードですね。

firebaseアプリのID登録

次にfirebaseアプリのID登録です。

アプリIDは先程確認した、Firebase Consoleのプロジェクト設定「全般ページ」に記載されています。

真ん中の「cdn」欄に記載されているコードを、丸ごとコピペしてきましょう。

<script type="module"> import { initializeApp } from "https://www.gstatic.com/firebasejs/9.12.1/firebase-app.js"; const firebaseConfig = { apiKey: "○○○○○○○○○○○○○○○○", authDomain: "○○○○.firebaseapp.com", projectId: "○○○○", storageBucket: "○○○○.appspot.com", messagingSenderId: "○○○○○○○○", appId: "1:○○○○○○○○○○○○○○○○" }; const app = initializeApp(firebaseConfig); </script>

アップロード操作js

次にフォーム上で選択した画像をFirebase Storageにアップするjsコードです。

<script> var form = document.querySelector('form'); form.addEventListener('submit', function (e) { e.preventDefault(); var imgs = form.querySelector('input'); var uploads = []; for (var file of imgs.files) { var storageRef = firebase.storage().ref('form-uploaded/' + file.name); uploads.push(storageRef.put(file)); } Promise.all(uploads).then(function () { alert('アップロード完了'); }); }); </script>

Storage内では「form-uploaded/」専用フォルダを作って、その中にUPする様にしています。

ファイル名ができるだけ被らない様にするためですね。

アップロードが完了したら、アラート表示されるようにしています。

以上でアプリ作成は終わりです。非常に簡単でシンプルですよね。

WEBアプリとして公開する

localhostでの実行

ではこのアプリをまずはローカル環境上で実行してみましょう。

コマンドプロンプトで「cd」をし、対象フォルダへ移動します。

次に以下のコマンドを入れましょう。

firebase serve

完了すると、http://localhost:5000/で確認できる様になります。

localhost上のWEBページ

上記ページを開いたら「ファイル選択」ボタンを押して、PC内画像を一つ選びましょう。

画像を選択して名前が表示された状態

OKすると、画像名が隣に表示されます。右の「アップロードボタン」を押して下さい。

画像がアップロードされたことを示すアラート表示

ちょっと時間が掛かりますが、「アップロード完了」のアラート画面が表示されると思います。

これでFirebaseへのアップが完了しました。

Console画面の確認

Firebase Consoleの左メニュー欄から「Storage」をクリックして、先程のファイル管理画面を出します。

form-uploadedのフォルダが表示された状態

画像リスト一覧(Filesタブ)に、「form-uploaded」のフォルダが表示されているのがわかると思います。

form-uploadedフォルダ内の画像

そのフォルダを開くと、先程UPした画像が表示されているはずです。

Firebaseへデプロイ

ではWEBアプリを一般公開するため、アプリをFirebaseへデプロイしましょう。

コマンドプロンプトで「cd」をし、対象フォルダへ移動します。

次に以下のコマンドを入れましょう。

firebase deploy

これによりFirebaseのHostingへデプロイされます。

Hostingダッシュボードを確認

デプロイが無事に完了したら、Firebase Consoleの画面へ戻ります。

左のメニュー欄から「Hosting」をクリックしましょう。すると「デプロイされました」という結果が表示されていると思います。

そこをクリックするとHostingのダッシュボードに移動します。

クライアントアプリと同じ動作

2種類のURLが生成されており、どちらのURLも同じWEBページが表示されます。

いずれもクライアントアプリと同じ動作をするはずです。

これでFirebase上にファイルアップロードアプリを公開する事ができましたね。

この記事をシェアする

人気記事

Firebase関連記事