Ruby で Cloud Natural Language API を使う

Cloud Natural Language API とは

GCP の テキスト分析用 API です。

使い方(導入)

公式ドキュメント が全てですが、一部ハマったところを書いておきます。

1. 認証用の JSON ファイルの取得

認証用の JSON ファイル(秘密鍵込み)は、GCP の「IAM と管理」メニューから「サービスアカウント」を選択して作成します。「オプション」として設定できる内容はスキップしても大丈夫です。

この JSON ファイルは再度ダウンロードすることができないので、大切に取り扱います。

2. Ruby 2.7 では 'google-protobuf' gem のバージョンを 3.11.1 にする必要がある

Ruby 2.7 の場合は 'google-cloud-language' gem の依存で入ってくる 'google-protobuf' gem のバージョンを明示的に 3.11.1 に指定する必要があります。理由は次のとおりです。

github.com

3. 認証用の JSON ファイルの指定はコード内でも可能

認証用の JSON ファイルを指定する方法は、公式ドキュメントには以下のように書かれています。

環境変数 GOOGLE_APPLICATION_CREDENTIALS を、サービス アカウント キーが含まれる JSON ファイルのファイルパスに設定します。

この方法とは別に、Ruby のコードから場所を指定することもできます*1。具体的には gem のドキュメント に書かれている通りで、以下のようにします。

Google::Cloud::Language.configure do |config|
  config.credentials = '/path/to'
end

4. 公式ドキュメントにある 'language.analyze_sentiment' 以外の情報を取得する方法

公式ドキュメントではレスポンスの対象として analyze_sentiment を指定してます。Cloud Natural Language API には他のレスポンスもあり(公式サイト参照)、それぞれのレスポンスを取得するためのメソッドは gem のドキュメントに記載があります。

雑感

GCP のアカウントやプロジェクトの設定、API の有効化 などは一般的な方法で OK です。

*1:環境変数にもファイルの場所を設定できるので、柔軟に隠避できます