Supabaseとは05:社内備品管理アプリに画像機能追加!セキュアなStorageを使ってみよう

supabaseの使い方

Supabase(スーパーベース・スパベース)の使い方5回目となります。

今回はこれまで作成してきたWebアプリに、画像をアップロードする機能をつけます。Supabaseのstorage機能を使っていきます。

storageもまたセキュリティが高いのよね~

くまみ
くまみ

気になるわ!

なお前回までの記事を見ていない方は、まずはこちらをチェックしておいてくださいね。

SupabaseでStorage設定

まずはSupabase側でStorageの設定を進めておきましょう。最初に、ファイルを入れる箱(Bucket・バケツ)を作ります。

Bucketの作成

ログインし、プロジェクトを開きます。サイドバーのStorageを開き、【New bucket】をクリック。

下記のように設定しておきます。

  • Bucket Nameはimagesとしておきます。
  • Publicにチェックを入れます。Publicにすると、URLを知っていれば誰でもファイルにアクセスできるようになります。
  • Restrict file sizeには、ファイルサイズの上限をいれます。今回は5MBまでとします。
  • Restrict MIME typesには、保存するファイルの種類をいれます。今回はJPEGまたはPNG形式の画像ファイルのみ保存したいので、 image/jpeg,image/pngとします。

誰にでも見られたくない場合は、Privateを選んでね。すると、Webアプリのコードを通じてしかアクセスできなくなるから。

くまみ
くまみ

そんなことも簡単にできるのね!

Bucketのポリシー設定

次に、Bucketのポリシーを設定します。前回はデータベースにポリシーを設定しましたが、Supabaseでは、Bucketにもポリシーを設定し、細かくアクセス制限をかけられます。

ポリシーでは、Webアプリのコードを通じたアクセスを制御できます。

画像の新規作成、編集、削除を誰ができるか設定できるの。

くまみ
くまみ

まあ。色々できるのね。

作成したBucketをクリックします。【Policies】をクリックします。

【New policy】をクリックします。

今回は【For full customization】を選択します。

下記のように設定します。

  • Policynameを適当につけます。
  • Allowed operationでは、すべてにチェックを入れます。
  • Target rolesでは、今回はauthenticatedを選択します。これで、認証ユーザーのみがすべての操作(アップロード・閲覧・更新・削除)を行えるようになります。

テーブルにカラム(列)追加

画像が追加されたときには、データベースにパスをいれるようにします。これによって、パスを使って画像を表示することができます。

サイドバーのTable Editorより、テーブルを選びます。本記事ではbihinsテーブルを選択します。【Insert】ボタンをクリックし、Insert columnを選択します。

下記のように設定します。

  • Nameには、カラム(列)名をいれます。image_pathとしておきます。
  • Data Typeには、データ型をいれます。今回はtextにします。

Webアプリ側の修正

これでSupabase側の準備が整いました。次に、Webアプリ側に機能を搭載します。

Claude Code等で下記のように指示してコードを書いてもらいます。

Supabaseにimagesという名前のbucketを作りました。バケットはpublicです。認証ユーザーのみ操作できます。bihinを登録するときに、画像も登録できるようにしてください。登録した画像は、一覧や編集画面でも表示できます。画像の差し替えもできます。削除すると画像も消すことができます。

コードを搭載後、実際にテストしてみてください。

【テスト手順】

  • Webアプリにログイン
  • 画像を登録
  • SupabaseのTable Editor → bihinsテーブルのimage_pathカラムにパスが入ることを確認
  • SupabaseのStorage → imagesに画像が入っていることを確認
  • 編集・削除も実行

くまみ
くまみ

あら、ちゃんと画像が登録できるわ。なんだか嬉しい!

画像がちゃんとひょうじされると嬉しいよね。もし表示されない場合は、ポリシーを見直したりしてみて。

さいごに

Storage機能でも、色々とアクセス制御ができることをご紹介しましたが、いかがでしたか。

今回はPublic設定で手軽に進めましたが、Privateにすれば、「見る」ことにも制限をかけられます。さらにコードで署名付きURLを発行すれば、有効期限付きでファイルを共有することも可能です。

詳しくは公式ドキュメントのSigning URLsをご覧ください。

くまみ
くまみ

普段はそこまで必要ないかもしれないけど、いざという時は、ルールを強めにできるのが良いわね。

でしょ。

Supabase講座、また時々更新したいと思うので、ご興味あれば見てくださいね。

 

 

 

supabaseの使い方 生成AI関連

ご相談受付

お問い合わせ

生成AIを使った開発の研修・各種ご相談承っています。お気軽にお問い合わせください。

詳細を見てみる

ご相談受付

お問い合わせ

生成AIを使った開発の研修・各種ご相談承っています。お気軽にお問い合わせください。

詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪

Laravelの使い方を分かりやすく解説した書籍を出版しました。 ご好評につき、最新版に対応した改訂版を2025年7月に発売
書店やAmazon等のオンラインショップにて販売中です。 詳しくは下記ボタンをクリック

書籍の詳細を見てみる

Laravelの本書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravelの使い方を分かりやすく解説した書籍を出版しました。ご好評につき最新版対応の改訂版発売。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる
Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました