カテゴリ: Rails 更新日: 2026/02/21

Rails Active Storageのストレージ選定完全ガイド|Disk・S3・GCSの違いと本番設定を初心者向けに解説

ストレージ選定:Disk/S3/GCSの違いと本番設定(credentials/ENV)
ストレージ選定:Disk/S3/GCSの違いと本番設定(credentials/ENV)

先生と生徒の会話形式で理解しよう

生徒

「Railsで画像をアップロードするとき、DiskとかS3とか聞くんですが、違いが全然わかりません…」

先生

「RailsではActive Storageという仕組みを使って、保存場所を切り替えられるようになっています」

生徒

「本番環境では、どれを使えばいいんですか?」

先生

「それぞれの特徴と設定方法を、順番に見ていきましょう」

1. RailsとActive Storageの基本的な役割

1. RailsとActive Storageの基本的な役割
1. RailsとActive Storageの基本的な役割

Railsは、Webアプリケーションを効率よく作るためのフレームワークです。その中でActive Storageは、画像やファイルをアップロードして保存するための仕組みです。

Active Storageを使うと、「ファイルをどこに保存するか」を意識せずに、同じ書き方で扱えます。保存場所のことをストレージと呼びます。

初心者の方は、まず「写真を預けるロッカーの場所を選ぶ」と考えると分かりやすいです。ローカルの引き出しがDisk、インターネット上の倉庫がS3やGCSです。

2. Diskストレージとは?ローカル保存の特徴

2. Diskストレージとは?ローカル保存の特徴
2. Diskストレージとは?ローカル保存の特徴

Diskは、パソコンやサーバーの中に直接ファイルを保存する方法です。Railsをインストールした直後は、基本的にDiskが使われます。

これは「自分の机の引き出しに書類をしまう」ようなものです。設定が簡単で、開発中の確認に向いています。

ただし、本番環境ではサーバーが壊れたり、増えたりするとファイルが消える可能性があります。そのため、長期保存には不向きです。


# config/storage.yml
local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

3. Amazon S3とは?クラウドストレージの定番

3. Amazon S3とは?クラウドストレージの定番
3. Amazon S3とは?クラウドストレージの定番

Amazon S3は、インターネット上にファイルを保存できるサービスです。世界中から安定してアクセスでき、本番環境でよく使われます。

これは「巨大な貸し倉庫に荷物を預ける」イメージです。自分で管理しなくても、壊れにくく安全です。

RailsのActive Storageは、S3と簡単に連携できます。画像アップロード、PDF保存、動画管理などにも対応できます。


# config/storage.yml
amazon:
  service: S3
  region: ap-northeast-1
  bucket: my-app-bucket

4. Google Cloud Storage(GCS)の特徴

4. Google Cloud Storage(GCS)の特徴
4. Google Cloud Storage(GCS)の特徴

Google Cloud Storageは、Googleが提供するクラウドストレージです。考え方はS3とほぼ同じで、高速かつ安全にファイルを保存できます。

すでにGoogle Cloudを使っている場合は、GCSを選ぶと管理が楽になります。

「Googleの巨大データセンターに預けるロッカー」と考えると理解しやすいです。


# config/storage.yml
google:
  service: GCS
  project: my-gcp-project
  bucket: my-gcs-bucket

5. Disk・S3・GCSの違いをやさしく比較

5. Disk・S3・GCSの違いをやさしく比較
5. Disk・S3・GCSの違いをやさしく比較

Diskは設定が簡単で、開発環境向きです。S3とGCSは本番環境向きで、安全性と拡張性に優れています。

初心者のうちは「開発はDisk、本番はS3かGCS」と覚えておくと十分です。

保存場所を後から切り替えられるのが、Active Storageの大きなメリットです。

6. 本番環境でのストレージ設定の考え方

6. 本番環境でのストレージ設定の考え方
6. 本番環境でのストレージ設定の考え方

本番環境では、パスワードや秘密情報をコードに直接書きません。代わりに環境変数credentialsを使います。

環境変数とは、アプリの外から設定できる箱のようなものです。大切な情報を安全に扱えます。


# config/environments/production.rb
config.active_storage.service = :amazon

7. credentialsとENVの基本的な使い分け

7. credentialsとENVの基本的な使い分け
7. credentialsとENVの基本的な使い分け

credentialsは、Railsが用意している暗号化メモ帳です。APIキーやシークレット情報を安全に保存できます。

ENVは、サーバー側で設定する変数です。クラウド環境ではこちらがよく使われます。

どちらも「他人に見せない鍵付きの箱」と考えると分かりやすいです。


# storage.yml で環境変数を使う例
access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>

8. 初心者が失敗しやすいポイント

8. 初心者が失敗しやすいポイント
8. 初心者が失敗しやすいポイント

開発環境と本番環境で、同じストレージを使ってしまうとトラブルが起きやすくなります。

また、APIキーをGitHubに公開してしまうのもよくある失敗です。必ずcredentialsやENVを使いましょう。

ストレージ選定は、アプリの安全性と安定性に直結する重要なポイントです。

カテゴリの一覧へ
新着記事
New1
Ruby
“すべてはオブジェクト”を体感!初心者向けRubyのオブジェクト指向入門【irbで学ぶ】
New2
Ruby
Rubyの標準入出力を完全ガイド!puts・print・pの違いとデバッグ活用法
New3
Ruby
Gemとは?RubyGemsとBundlerを初心者向けに完全解説!依存関係管理も図解でわかりやすく理解
New4
Ruby
Rubyの文字エンコーディング入門!UTF-8・マジックコメント・外部/内部エンコーディングを完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
Rubyのreduceとinject入門!合計計算や集計を初心者向けに分かりやすく解説
No.2
Java&Spring記事人気No2
Ruby
Rubyの文字列エンコーディング完全ガイド!Encoding・force_encoding・encodeを初心者向け解説
No.3
Java&Spring記事人気No3
Ruby
Rubyの始め方ガイド:インストールから最初のHello Worldまで(Windows/Mac/Linux)
No.4
Java&Spring記事人気No4
データベース
PostgreSQLのWHERE句を徹底解説!初心者でもわかるSQLデータ抽出の基本
No.5
Java&Spring記事人気No5
Ruby
Rubyのfind/detect/find_indexを徹底解説!目的のデータを素早く探す方法
No.6
Java&Spring記事人気No6
Ruby
Rubyで比較演算子を完全解説!==・===・<=>・eql? の使い分け
No.7
Java&Spring記事人気No7
Ruby
Rubyのselect/reject/filterの使い方を完全解説!初心者向けの条件抽出レシピ
No.8
Java&Spring記事人気No8
データベース
PostgreSQLで順位付け!ROW_NUMBER関数の使い方を初心者向けに徹底解説