「Google Technology」カテゴリーアーカイブ

Googleの各種APIをRubyから操作する方法

2016年に入ってから公開された、google-api-client gemのバージョン0.9系は、過去のバージョンとは非互換な大型アップデートがあったようで、ネットの記事がまったく参考にならない上にgoogleのサンプルコードもどれが信用できるものか良く分からなかったので苦労した。

現時点で信頼できる情報をまとめておきたい。

google-api-client gemのソース(README.mdに一通りの情報が書かれている)
・OAuth認証のライブラリはSignetgoogleauth gemの2つがあるが、Signetは古いので特別な理由がなければgoogleauth gemの方を使うと良さそう。(こちらもREADME.mdに一通りの情報が書かれている)
OAuth2とGoogle APIの連携周りのドキュメント。単なるAPI利用者であれば、シーケンス図だけ見れば十分です。

ここにGoogle Calendarの日本の祝日情報にアクセスするためのサンプルコードを置いておきました。

このような使いたいAPIのクラスは、ここに一覧があるので、必要なクラスをrequireして下さい。

次にこのようなScopeの定数は、先ほどと同じ一覧の下の方にクラスファイルがあるので、使いたいAPIのクラスファイルを開くと定数が定義されています。(例:Google Calendar

エンジニアなら絶対使いたいgsutil(Google Cloud Storage)

Google Cloud StorageはGoogleが提供するストレージサービスですが、gsutilsと呼ばれる便利なコマンドが提供されています。gsutilを使うとGoogle Cloud Storageをコンソールから簡単に扱えるようになります。

どれぐらい簡単かと言うとこんな感じ。

$ gsutil cp *.txt gs://my_bucket

$ gsutil cp gs://my_bucket/*.txt .

もちろんmvやrmといったコマンドも完備。さらに-Rオプションでrecursiveにコマンドを実行できます。

さらに!Google Cloud Storage <-> Amazon S3間のデータコピーもコマンド一発です。

$ gsutil cp s3://my_bucket/*.txt gs://my_bucket

$ gsutil cp gs://my_bucket/*.txt s3://my_bucket

Mac/Linuxの場合

gsutil.tar.gzをダウンロードします。

ファイルを展開します。

$ tar xfz gsutil.tar.gz -C /usr/local/share

パスを通します。

export PATH=${PATH}:$HOME/gsutil

パスが正しく通っているか確認します。以下のコマンドでバージョン番号が表示されればokです

$ gsutil version

gsutilを最新バージョンにアップデートします。

gsutil update

 

Windowsの場合

Windowsの場合はこちらをご確認ください。

 

Google Cloud Storageのセットアップ

Google Cloud Storageのセットアップの方法はこちらから

 

gsutilの設定

Google Cloud Storageのセットアップができたら、gsutilの設定をします。

$ gsutil config

以下のようなURLが表示されるので、ブラウザでアクセスします。

gsutil1-1

アクセスを許可すると、アクセスキーが表示されるので、それをコンソールにコピーします。

gsutil2

次にproject-idの入力が求められますが、Google Cloud Consoleから先ほど作ったプロジェクトのproject-idを確認することができます。入力が終わればセットアップ完了です。

 

gsutilの使い方

以下のようにファイルを簡単にアップロードやダウンロードできます。

$ gsutil cp *.txt gs://my_bucket

$ gsutil cp gs://my_bucket/*.txt .

もちろんrecursiveにコマンドを実行することもできます。

$ gsutil cp -R * gs://example/

さらにはGoogle Cloud Storage <-> Amazon S3間のデータコピーもコマンド一発です。

$ gsutil cp s3://my_bucket/*.txt gs://my_bucket

$ gsutil cp gs://my_bucket/*.txt s3://my_bucket

ヘルプコマンドかドキュメントでコマンドの一覧を確認することができます。

$ gsutil help

gsutil3

lsやmv、rmなど見慣れたコマンドが並んでいます。つまり普段ターミナルを使っているエンジニアであれば、Google Cloud Storageはローカルストレージと同等に使うことができます。

Google Cloud Storageの使い方

Google Cloud Storageの公式ページの右上にある[Try it now]ボタンから開始できます。

Googleのクラウドサービスはプロジェクト単位で利用金額などを分ける事ができるので、最初にProject nameとProject IDを設定する必要があります。Project nameは管理しやすいように好きに付けます。Project IDは入力しなければならないシーンがほとんど無いのと、必要であれば管理画面で調べる事ができるので、そのままでほとんど問題がありません。単にCloud Storageを使いたいのであれば、そのまま[Create]ボタンをクリックすると良いです。

storage1

Google Cloud Consoleが使えるようになったら、その中からCloud Storageを選択します。

storage2

[Enable Billing]をクリックします。Googleのクラウドサービスを使うにはカード情報の入力が必要になります。

storage6

カード情報の入力が完了したら、左上のボタンが[NEW BUCKET]に変わるので、これを押し、バケットを作成します。

storage4

バケットはストレージの単位(1つのHDDのようなもの)です。バケット名はグローバルに(他の利用者も含め)一意である必要があるので、自分の名前やサービス名をなるべく短くなるように設定すると良いです。

storage5

これで、Google Cloud Storageを使う準備ができました。バケット名を選択するとフォルダの作成やファイルのアップロードができます。

Google Driveに比べると以下のような特徴があります。

  • フォルダの概念が強く、階層化しやすく分かりやすい
  • 巨大なファイルを扱える(Google I/Oでは5ペタバイトのデータをアップロードした実例が紹介された)
  • 細かいアクセス制限ができる
  • バージョン管理ができる
  • 他人の変更の通知を受ける事ができる
  • 必要であればストレージをGoogleに送付して丸ごとインポートしてもらえるプランがある
  • Google App EngineやGoogle Compute Engine、BigQueryなどのGoogleのクラウドサービスのデータソースとして簡単に扱える