こんにちは、えびかずきです。
今回は、GCP自然言語処理APIを使ったWebアプリを作ったので紹介します!
こんな人におすすめ:
・GCP(Google Cloud Platform)でAI開発をしたい
・APIを使ったWebアプリ開発をしたい
開発環境
ローカル環境:MacOS Catalina/Macbook pro
Webフレームワーク:Ruby on Rails
運用サーバー:Heroku
完成したアプリ
ポジティブしりとり
https://positive-siritori.herokuapp.com
ポジティブなワードしか受け付けない、しりとりアプリです。
GCP Natural-Language APIで感情分析をしてポジティブ度を判定しています。
Github:ソースコードはこちら↓
https://github.com/ebikazuki/positive-siritori
制作手順
GCP Natural-Languageの利用登録
1.まずはGCPのユーザー登録をします。
下記の公式ページから「無料で開始」をクリックし、ユーザー登録を実施します。
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現在)
いずれの分析も月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の利用登録(無料)をします。
下の公式ページの「無料で登録」から進んで利用登録を完了させてください。
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
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の環境変数設定は以下が参考になりました。
参考書籍
Ruby on RailsによるWebアプリ作成には、以下の書籍を参考にしました。
詳しい説明は置いておいて初心者でもさくっとアプリ作成ができるような構成になっています。
Railsはよくわからないけど、とりあえず何か作りたいという人におすすめ。
Ruby on Rails 6 エンジニア 養成読本 Software Design plus
コメントを書く