GCP Natural Language APIでWebアプリを作る方法【Ruby on Rails】

GCP Natural Language APIでWebアプリを作る方法【Ruby on Rails】
えびかずき
えびかずき

こんにちは、えびかずきです。

今回は、GCP自然言語処理APIを使ったWebアプリを作ったので紹介します!

こんな人におすすめ:
・GPC(Google Cloud Platform)でAI開発をしたい
・APIを使ったWebアプリ開発をしたい

開発環境

ローカル環境:MacOS Catalina/Macbook pro

Webフレームワーク:Ruby on Rails
運用サーバー:Heroku

完成したアプリ

ポジティブしりとり
https://positive-siritori.herokuapp.com

スクリーンショット 2020-11-12 23 09 25

ポジティブなワードしか受け付けない、しりとりアプリです。
GCP Natural-Language APIで感情分析をしてポジティブ度を判定しています。

Github:ソースコードはこちら↓
https://github.com/ebikazuki/positive-siritori

制作手順

GCP Natural-Languageの利用登録

https://cloud.google.com/

1.まずはGCPのユーザー登録をします。

下記の公式ページから「無料で開始」をクリックし、ユーザー登録を実施します。

https://cloud.google.com/

GCPは有料コンテンツを使用しない限りは無料で利用を開始できます。

また、最初に300$分の有料枠をお試しで使えるようになっています。

2.新規プロジェクトを作成する

ユーザー登録ができたら、「コンソールへ移動」をクリックして自分のページへいきましょう。

すると、コンソールが開くので、下図赤枠をクリックして「新しいプロジェクト」から進んで新規プロジェクトを作成します。

3.Google Natural Languageの有効化

「APIとサービス」→「ライブラリ」を選択します。

検索窓に「Cloud Natural Language」と入力し、下に現れる「Cloud Natural Language API」を選択し、「有効にする」をクリックする。

4.サービスアカウントの作成とAPIキーの取得

「IAMと管理」から「サービスアカウント」を選択します。

「サービスアカウントを作成」をクリックして、サービスアカウントを作成します。

・サービスアカウント名はなんでもOK
・2,3のアクセス許可設定は省略して「完了」でOK

つづいて、作成したサービスアカウントをクリックして、「鍵を追加」を選択→タイプを「JSON」として、鍵を作成する。

すると、自分のPCにJSON形式のキーファイルが保存される。

これでNatural Language APIの利用準備は完了です。

(JSONファイルは後で使います。)

利用料金

一応利用料金の説明しておきます。(2020/12現在)

https://cloud.google.com/natural-language/pricing?hl=ja

いずれの分析も月5,000回までは、無料です。

無料枠の中だけで運用したいなら、「割り当て」から利用制限を設定しましょう。

下のように「requests/日」を「161」と設定すれば、うっかり月5,000リクエストを超える心配はなくなります。

Ruby on Railsによるプロジェクト作成

1.google-cloud-languageのインストール

まず、gemでAPIを利用するためのライブラリをインストールします。

gem install google-cloud-language

2.Railsによるプロジェクト作成

詳しい説明は省略しますが、モデル(app/models/siritori.rb)のソースコードは以下のような感じ。

「# google Natural Language -感情分析APIによるScore取得」以下の部分がAPIを取得するコードです。

※ここで作成するプロジェクトディレクトリ内に、上で取得したAPIキーのJSONファイルも一緒に保存しておきましょう。

class Siritori < ApplicationRecord

    # しりとりを成立させるバリデーション
    validate do
        errors.add(:word, 'がしりとりになっていません') if word !~ /\A[#{Siritori.last.word[-1]}][ぁ-ん]*[ぁ-を]\z/
    end

    # ポジティブ度を判定するバリデーション
    validates :score, 
    numericality: { greater_than_or_equal_to: 0.4, message: "が低いです、もっとポジティブに!"} ,
    if: :score_is_float?
    
    def score_is_float?
        score.instance_of?(Float)  
    end

    # google Natural Language -感情分析APIによるScore取得
    before_validation :get_score
    def get_score
        require 'google/cloud/language' #APIを使う
        language = Google::Cloud::Language.language_service

        document = { type: :PLAIN_TEXT, content: word }
        response = language.analyze_sentiment document: document
        sentiment = response.document_sentiment
        self.score = sentiment.score.to_f.round(1)

    end
end

Railsによるプロジェクトは下に紹介した参考書籍を参考に作成しました。

Herokuへのデプロイ/公開

1.まずHerokuの利用登録(無料)をします。

下の公式ページの「無料で登録」から進んで利用登録を完了させてください。

https://jp.heroku.com

2.Create new app

「New」→「Create new app」を選択し、新しいappを作成します。

・名前はなんでもOKだが、ここで指定した名前がサブドメインになる。

3.Herokuへデプロイする

まずHerokuのCLIをインストールします。

$ brew install heroku/brew/heroku

ターミナルからherokuへログインします。

$ heroku login

Herokuへリモートリポジトリを作成します。

コマンドは、Herokuで新規作成したappのダッシュボードに記載されていますので、そちらを参考にしましょう。

$ heroku git:remote -a xxxxxxxxxxx

リモートリポジトリへプロジェクトファイルをプッシュします。

$ git push heroku master

gitの使い方がわからない人は、こちらの記事が参考になります。

データベースについて:

私の場合はDBにPostgreSQLを使用しているので、HerokuのPostgreSQL利用設定も実施しました。

ちなみにmigrateは以下のようにします。

$ heroku run bin/rails db:migrate

初心者のためのGitコマンドまとめ

4.環境変数の設定

下のようキーパスを環境変数として設定します。

$ eroku config:set GOOGLE_APPLICATION_CREDENTIALS="キーパス.json" --app "アプリ名を指定" 

下のコマンドでうまく設定できたか確認できます。

$ heroku config:get GOOGLE_APPLICATION_CREDENTIALS --app "アプリ名を指定"

これで、アプリが公開できました!

何に苦労したか?

Ruby on Railsでアプリ制作をするのはこれが初めてだったので、そもそもRubyの文法とRailsの基本操作を習得するのに苦労しました。

アプリ自体は簡単な作りだけど制作期間としては二週間くらいかかった。

まとめ

私はPythonが得意なのでこれまではDjangoでプロジェクトを作ることが多かったのですが、Railsを触ってみると意外と簡単にアプリが作れて純粋にWeb制作を楽しめました。

最近やれることが増えてきて楽しくなってきたので、今後もどんどん趣味の作品を公開していこうと思っています。

お楽しみに!

参考URL

Natural Language APIの使用方法は以下の記事が参考になりました。

RubyでGoogle Natural Language APIを使う

Google Cloud Natural Language APIをRubyで実行する

Herokuの環境変数設定は以下が参考になりました。

Herokuで環境変数を設定する方法

参考書籍

Ruby on RailsによるWebアプリ作成には、以下の書籍を参考にしました。

詳しい説明は置いておいて初心者でもさくっとアプリ作成ができるような構成になっています。

Railsはよくわからないけど、とりあえず何か作りたいという人におすすめ。

Ruby on Rails 6 エンジニア 養成読本 Software Design plus

Web開発カテゴリの最新記事