☁️ STEP 9: Google Cloud Storage(GCS)の紹介
GCPのオブジェクトストレージを学び、S3との違いを理解しよう
📋 このステップで学ぶこと
- Google Cloud Storage(GCS)の基礎
- バケット作成と基本操作
- S3との違いと共通点
- gsutilコマンドの使い方
- Python SDKでのGCS操作
- 実践演習:GCSの基本操作
前提条件:STEP 8までの内容を理解していること
🎯 このステップのゴール
このステップを終えると、GCSでバケットを作成し、ファイルをアップロード・ダウンロードできるようになります。また、S3との違いを理解し、AWS・GCP両方のオブジェクトストレージを扱えるようになります。
🎯 1. Google Cloud Storage(GCS)とは
GCSの基本
Google Cloud Storage(GCS)は、Google Cloud Platform(GCP)が提供するオブジェクトストレージサービスです。AWSのS3と同じように、ファイルを保存・管理できます。
💡 S3とGCSの関係を例えると
S3とGCSは、異なる運送会社の倉庫サービスのようなものです。
GCSの特徴
🌍 Googleのグローバルネットワーク
YouTube、Gmail、Google検索を支える高速ネットワークを使用。世界中どこからでも高速アクセス。
🔗 BigQueryとの強力な連携
GCSに保存したデータをBigQueryで直接クエリ可能。データ分析に最適。
💰 シンプルな料金体系
S3より料金体系がシンプル。データ転送料金も比較的わかりやすい。
🔒 強固なセキュリティ
データは自動的に暗号化。IAMでアクセス制御。監査ログも標準装備。
GCSの用語(S3との対応)
| GCSの用語 | S3の対応用語 | 説明 |
|---|---|---|
| バケット | バケット | ファイルを入れる「箱」。同じ概念。 |
| オブジェクト | オブジェクト | 保存されるファイル。同じ概念。 |
| プロジェクト | アカウント | GCPの管理単位。バケットはプロジェクト内に作成。 |
| ロケーション | リージョン | データを保存する地域(東京など)。 |
| ストレージクラス | ストレージクラス | アクセス頻度に応じた保存方法。 |
💡 S3を学んでいれば、GCSは簡単!
S3とGCSは基本概念が同じなので、S3を理解していればGCSもすぐに使えます。違いは「コマンド名」と「細かい設定」くらいです。
🪣 2. バケット作成と基本操作
バケットの作成(Webコンソール)
まずは、GCPのWebコンソールからバケットを作成してみましょう。
ステップ1〜4: バケットを作成
- GCP Consoleにアクセス(https://console.cloud.google.com/)
- 左メニューから「Cloud Storage」→「バケット」を選択
- 「作成」ボタンをクリック
- バケット名を入力(例:
my-gcs-bucket-20240115-abc)
ステップ5〜8: 詳細設定
- ロケーションタイプを選択
- Region: 単一リージョン(最安、東京なら
asia-northeast1) - Dual-region: 2つのリージョン(高可用性)
- Multi-region: 複数リージョン(グローバル配信向け)
- Region: 単一リージョン(最安、東京なら
- ストレージクラスを選択(Standard推奨)
- アクセス制御:「均一」を選択(推奨)
- 「作成」をクリック
⚠️ バケット名の注意点(S3と同様)
- グローバルで一意:世界中で誰とも被らない名前が必要
- 小文字とハイフンのみ:大文字やアンダースコアは使えない
- 3〜63文字:短すぎても長すぎてもダメ
- 変更不可:作成後は変更できない(S3と同じ)
ストレージクラスの選択
GCSには4つのストレージクラスがあります。S3と同様に、アクセス頻度に応じて選びます。
| GCSクラス | S3の対応クラス | 用途 | 料金(GB/月) |
|---|---|---|---|
| Standard | S3 Standard | 頻繁にアクセスするデータ | $0.020 |
| Nearline | S3 Standard-IA | 月1回程度のアクセス | $0.010 |
| Coldline | S3 Glacier IR | 年4回程度のアクセス | $0.004 |
| Archive | Glacier Deep Archive | 年1回未満のアクセス | $0.0012 |
💡 どのストレージクラスを選ぶ?
ファイルのアップロード(Webコンソール)
アップロード手順
- 作成したバケットを開く
- 「ファイルをアップロード」または「フォルダをアップロード」をクリック
- ファイルを選択してアップロード
- アップロード完了後、ファイル一覧に表示される
ダウンロードや削除も、ファイルを選択して右クリックまたはメニューから実行できます。
📁 フォルダの仕組み(S3と同じ)
GCSにも実際のフォルダは存在しません。ファイル名に/を含めることで、フォルダのように見せています。
🔍 3. S3との違いと共通点
共通点(ほぼ同じ)
S3とGCSは同じオブジェクトストレージなので、基本的な考え方は同じです。
✅ 共通する概念
- オブジェクトストレージ:ファイルを「オブジェクト」として保存
- バケット構造:ファイルは「バケット」という箱に保存
- フラット構造:フォルダは実際には存在しない(プレフィックス)
- HTTP/HTTPSアクセス:URLを使ってファイルにアクセス可能
- ストレージクラス:アクセス頻度に応じた複数のクラス
- ライフサイクル管理:古いファイルを自動で削除・移動
- バージョニング:ファイルの履歴を保存
違い(細かい点)
| 項目 | AWS S3 | GCP GCS |
|---|---|---|
| バケット名の一意性 | グローバルで一意 | グローバルで一意 |
| ストレージクラス数 | 6種類 | 4種類(シンプル) |
| コマンドラインツール | aws s3 |
gsutil |
| Python SDK | boto3 |
google-cloud-storage |
| URI形式 | s3://bucket/key |
gs://bucket/key |
| データ分析連携 | Athena、Redshift | BigQuery(直接連携) |
| 料金体系 | 複雑 | 比較的シンプル |
💡 結局、どっちを使えばいい?
- AWSを既に使っている → S3が便利(他AWSサービスとの連携)
- BigQueryを使いたい → GCSが便利(直接連携)
- どちらも使っていない → どちらでもOK(両方学ぶのがベスト)
実務では:会社がメインで使っているクラウドに合わせることが多いです。ただし、両方使えるエンジニアの方が市場価値は高いです!
💻 4. gsutilコマンドの使い方
gsutilとは
gsutilは、GCSを操作するためのコマンドラインツールです。AWSのaws s3コマンドと同じ役割です。
💡 gsutil = GCS版のaws s3コマンド
gsutilのインストール
Google Cloud SDKをインストール
gsutilの基本コマンド
📝 バケット操作
📝 ファイル操作
📝 同期(差分だけ転送)
S3コマンドとの対応表
| 操作 | AWS S3 (aws s3) | GCS (gsutil) |
|---|---|---|
| バケット一覧 | aws s3 ls |
gsutil ls |
| バケット作成 | aws s3 mb s3://bucket |
gsutil mb gs://bucket |
| ファイル一覧 | aws s3 ls s3://bucket |
gsutil ls gs://bucket |
| アップロード | aws s3 cp file s3://bucket/ |
gsutil cp file gs://bucket/ |
| ダウンロード | aws s3 cp s3://bucket/file . |
gsutil cp gs://bucket/file . |
| 同期 | aws s3 sync |
gsutil rsync |
💡 覚え方のコツ
s3://をgs://に置き換え、aws s3をgsutilに置き換えるだけ!基本的なコマンド(cp, ls, rm, mb)は同じです。
🐍 5. Python SDKでのGCS操作
google-cloud-storageライブラリ
PythonからGCSを操作するには、google-cloud-storageライブラリを使います。boto3(S3用)と似た使い方ができます。
インストール
認証の設定
基本的な操作
📤 ファイルのアップロード
📥 ファイルのダウンロード
📋 ファイル一覧の取得
boto3との対応表
| 操作 | S3 (boto3) | GCS (google-cloud-storage) |
|---|---|---|
| クライアント作成 | s3 = boto3.client('s3') |
client = storage.Client() |
| バケット取得 | - |
bucket = client.bucket('name') |
| アップロード | s3.upload_file('file', 'bucket', 'key') |
blob.upload_from_filename('file') |
| ダウンロード | s3.download_file('bucket', 'key', 'file') |
blob.download_to_filename('file') |
| 一覧取得 | s3.list_objects_v2(Bucket='bucket') |
bucket.list_blobs() |
💡 boto3とgoogle-cloud-storageの違い
🧪 6. 実践演習:GCSの基本操作
演習の目標
GCSでバケットを作成し、Pythonからファイルをアップロード・ダウンロードします。
演習1: バケット作成とファイルアップロード
要件:
- バケット名:
your-name-gcs-practice-20240115(ユニークな名前に変更) - ロケーション:asia-northeast1(東京)
- サンプルのCSVファイルを作成してアップロード
演習2: ファイルのダウンロードと処理
要件:
- GCSからCSVファイルをダウンロード
- Pandasで読み込んで内容を表示
演習3: 複数ファイルの一括アップロード
🎉 演習完了!
これで、GCSの基本操作ができるようになりました。S3と同様に、バケット作成、ファイルのアップロード・ダウンロード、Pythonからの操作ができます。
📝 STEP 9 のまとめ
✅ このステップで学んだこと
1. GCSの基本
- GCSはGCPのオブジェクトストレージ(S3のGCP版)
- バケット、オブジェクト、ロケーション、ストレージクラス
2. S3との比較
- 基本概念は同じ(オブジェクトストレージ)
- 違いはコマンド名とSDK
3. gsutilコマンド
gsutil cp、gsutil ls、gsutil rm- aws s3コマンドとほぼ同じ
4. Python SDK
- google-cloud-storageライブラリ
- blob.upload_from_filename()、blob.download_to_filename()
💡 次のステップへ
S3とGCSの両方を学んだことで、AWS・GCP両方のオブジェクトストレージを扱えるようになりました。
次のSTEP 10では、「データレイク設計」を学びます。S3やGCSを使って、大量のデータを効率的に管理する設計手法を習得しましょう!
📝 理解度チェック
GCSの4つのストレージクラスを答え、それぞれの用途を説明してください。
【解答】
- Standard:頻繁にアクセスするデータ(例:アクティブなデータ、Webサイトの画像)
- Nearline:月1回程度アクセスするデータ(例:月次バックアップ、レポート)
- Coldline:年4回程度アクセスするデータ(例:四半期レポート、アーカイブ)
- Archive:年1回未満のアクセスデータ(例:長期保管データ、法令遵守用)
S3とGCSの主な違いを3つ挙げてください。
【解答例】
- コマンドラインツール:S3は
aws s3、GCSはgsutil - Python SDK:S3は
boto3、GCSはgoogle-cloud-storage - URI形式:S3は
s3://、GCSはgs://
他にも「ストレージクラスの種類」「料金体系」「データ分析連携先」なども正解です。
以下のgsutilコマンドと同じ操作をPythonで実装してください:
gsutil cp local_file.csv gs://my-bucket/data/
【解答例】
GCSからCSVファイルをダウンロードせずに、直接Pandasで読み込むコードを書いてください。
【解答例】
ポイント:download_as_text()でテキストとして取得し、StringIOでPandasに渡します。
❓ よくある質問
両方学ぶことをおすすめします。
基本的な考え方は同じなので、片方を覚えればもう片方も簡単に習得できます。実務では、会社が使っているクラウドに合わせることになりますが、両方使える方が市場価値は高いです。
まずはS3(このコースの中心)を深く学び、その後GCSを学ぶと効率的です。
はい、あります。
- Standard Storage: 5GB/月
- Class A オペレーション: 5,000回/月
- Class B オペレーション: 50,000回/月
- エグレス(北米内): 1GB/月
学習用途なら、無料枠で十分練習できます。ただし、バケットを放置すると課金される可能性があるので、使い終わったら削除しましょう。
Google Cloud SDKがインストールされていない可能性があります。
- https://cloud.google.com/sdk/docs/install にアクセス
- OSに合ったインストーラをダウンロード
- インストール後、
gcloud initを実行して初期設定 gsutil versionで確認
インストール後は、gcloud auth loginで認証してください。
認証が設定されていません。
方法1(推奨):
gcloud auth application-default loginを実行
方法2:
サービスアカウントキー(JSON)を作成し、環境変数を設定:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/key.json"
はい、いくつか方法があります:
方法1:gsutilのrsyncコマンド
gsutil -m rsync -r s3://my-s3-bucket gs://my-gcs-bucket
方法2:Google Cloud Storage Transfer Service(大量データ向け)
GCP ConsoleからGUIで設定可能。スケジュール実行も可能。
データ量が多い場合は、Storage Transfer Serviceが最も効率的です。
学習メモ
クラウドデータ基盤(AWS・GCP) - Step 9