見出し画像

Cloud Storage for Firebase によるストレージ機能を試す

「Cloud Storage for Firebase」によるストレージ機能を試したのでまとめました

1. Cloud Storage for Firebase

「Cloud Storage for Firebase」は、Firebaseが提供するクラウドストレージサービスです。画像、音声、動画などのファイルを格納することができます。

2. 使用料金

使用料金は、次のとおりです。

3. バケットの作成

はじめに、バケットを作成します。

(1) Firebaseのコンソールでプロジェクトを作成。

(2) Firebaseプロジェクトで「Storage」を選択し、「始める」を押す。

(3) 「本番モード」と「テストモード」を選択。
「テストモード」は、全ユーザーがアクセスが許可されているモード、「本番モード」は自分でアクセス権限のルールを編集するモードです。

(4) 「リージョン」を選択。

デフォルトの「バケット」が生成されました。バケットの各種操作が可能になります。

・Files : ファイルやフォルダの追加、削除。
・Rules : アクセス権限のルールの設定。
・Usage : 使用状況の確認。

4. サービスアカウントキーの準備

「Firebase Admin SDK」を利用するには、Firebaseプロジェクトの「サービスアカウントキー」が必要です。

(1) Firebaseプロジェクトの歯車アイコンをクリックし、「プロジェクトの設定」を選択し、「サービスアカウント」タブを選択し、「サービスアカウントを作成」ボタンを押す。

(2) 「新しい秘密鍵の生成」ボタンを押す。
「サービスアカウントキー」(*.json)がダウンロードできます。

5. PythonによるCloud Storageの操作

5-1. ファイルアップロード

(1) Pythonの仮想環境の準備。
(2) パッケージのインストール。

$ pip install firebase-admin

(3) Pythonスクリプトの作成。
serviceAccountKey.json」は自分のサービスアカウントキー、「example.appspot.com」は自分のバケット名を指定してください。

import firebase_admin
from firebase_admin import credentials, storage

# Cloud Storageへの接続
cred = credentials.Certificate("serviceAccountKey.json")
firebase_admin.initialize_app(cred)
bucket = storage.bucket("example.appspot.com")

# ファイルのアップロード
blob = bucket.blob("cat.png")
blob.upload_from_filename("./cat.png")

スクリプトを実行すると、バケットに画像がアップロードされます。

ファイルアップロードのメソッドは、次のとおりです。

・テキスト : blob.upload_from_string(data)
・ファイルオブジェクト : blob.upload_from_file(file_obj)
・ファイルパス : blob.upload_from_filename(filename)

5-2. ファイル一覧の取得

# ファイル一覧の取得
blobs = list(bucket.list_blobs(prefix=""))
for blob in blobs:
    print(blob.name)
cat.png

5-3. ファイルのダウンロード

# ファイルのダウンロード
blob = bucket.blob("cat.png")
blob.download_to_filename("./cat2.png")

ファイルダウンロードのメソッドは、次のとおりです。

・テキスト : blob.download_as_text()
・ファイルオブジェクト : blob.download_to_file(file_obj)
・ファイル : blob.download_to_filename(filename)
・バイトデータ : blob.download_as_bytes()

5-4. ファイルの削除

# ファイルの削除
blob = bucket.blob("cat.png")
blob.delete()

6.SwiftによるCloud Storageの操作

6-1. ファイルアップロード

(1) XcodeプロジェクトのFirebaseセットアップ。
FirebaseコンソールでFirebaseプロジェクトにiOSアプリを追加し、指示に従ってXcodeプロジェクトのFirebaseセットアップを行います。
(2) パッケージのインストール。
「firebase-ios-sdk」で「FirebaseAnalytics」と「FirebaseStorage」をインストールします。

https://github.com/firebase/firebase-ios-sdk

(3) コードの作成。

import FirebaseStorage
func main() async {
    // Cloud Storageへの接続
    let storage = Storage.storage()
    let storageRef = storage.reference()
    
    // ファイルのアップロード
    let image:UIImage = UIImage(named:"cat")!
    let assetRef = storageRef.child("cat.png")
    assetRef.putData(image.pngData()!, metadata: nil) {
        (metadata, error) in
        if error != nil {
            print("Error: \(error!)")
            return
        }
    }
}

スクリプトを実行すると、バケットに画像がアップロードされます。

ファイルアップロードのメソッドは、次のとおりです。

6-2. ファイル一覧の取得

// ファイル一覧の取得
storageRef.child("/").listAll {
    (result, error) in
    if let error = error {
        print("Error: \(error)")
    } else if let result = result {
        for item in result.items {
            print(item.name)
        }
    }
}
cat.png

6-3. ファイルのダウンロード

// ファイルのダウンロード
storageRef.child("/cat.png").getData(maxSize: 1 * 1024 * 1024) { 
    (data, error) in
    if let error = error {
        print("Error: \(error)")
    } else if let data = data {
        let image = UIImage(data: data)
        print("Image: \(String(describing: image))")
    }
}
Image: Optional(<UIImage:0x281ad1c20 anonymous {512, 512} renderingMode=automatic>)

6-4. ファイルの削除

// ファイルの削除
storageRef.child("/cat.png").delete() { 
    (error) in
    if let error = error {
        print("Error: \(error)")
    }
}

関連



この記事が気に入ったらサポートをしてみませんか?