Be a Engineer.

社会人からWEBエンジニアになった人間の備忘録的勉強記録

hubot-google-images を復活させた

先日、Hubotのhubot-google-imagesが急に使えなくなったので、その修復で行った作業内容を備忘録的に記事にします。

ちなみに使えなくなった理由ですが、これは2011年5月からdeprecatedになっていたGoogle Image Search APIが完全に利用不可になってしまったためでした。

また、hubot-google-imagesがv0.1.5以降のバージョンであれば下記の手順で使えるようになります。

1. Google Custom Search API Key を取得する

Google Developers Console
Google Custom Search API Key(CSE_KEY)はGoogle Developers Consoleから取得します。

プロジェクトを作成する

プロジェクトが1つもない状態ならば、プロジェクトを作成します。
Google APIを利用する」をクリックすると、プロジェクト作成モーダルが出てくるので、プロジェクト名を入力して作成します。

f:id:shirakiya:20151207011935p:plain

f:id:shirakiya:20151207011953p:plain

Custom Search APIを有効にする

Custom Search APIを選択して、有効にします。

f:id:shirakiya:20151207012011p:plain

f:id:shirakiya:20151207012042p:plain

APIキーを取得

「認証情報」タブに移動し、「認証情報を追加」します。
APIキーを選択すると、下の画像のモーダルが表示されるので、ここはサーバーキーを選択します。(Hubotはサーバーで動いていますので。)

f:id:shirakiya:20151207012055p:plain

f:id:shirakiya:20151207012115p:plain

APIキーの名前とリクエスト元のIPアドレスを入力します。
※リクエストを受け入れるサーバーIPアドレスには、セキュリティを鑑みて入力してください。

f:id:shirakiya:20151207012127p:plain

f:id:shirakiya:20151207012141p:plain

これで取得できました!

2. Google Custom Search Engine ID を取得する

Googleカスタム検索
Google Custom Search Engine ID(CSE_ID)はGoogleカスタム検索から取得します。

カスタム検索を作成する

「新しい検索エンジン」から作成画面にいきます。

f:id:shirakiya:20151207012300p:plain

などとして作成します。

CSE_IDを取得する

CSE_IDを取得していきます。
「コントロールパネル」をクリックすると詳細情報が見れます。
詳細ページで画像中央の「検索エンジンID」をクリックすると、モーダルが表示されるのでこの中に入っているのがCSE_IDです。

f:id:shirakiya:20151207012323p:plain

f:id:shirakiya:20151207012347p:plain

f:id:shirakiya:20151207012357p:plain

Tips

「検索するサイト」に先ほど入力したwww.google.co.jpが入っています。

これを設定したままだと、実際にHubotにimage機能で検索文字列を投げかけると、www.google.co.jpに含まれるコンテンツの中からその検索文字列を探してくるので、ある種googleに偏った検索結果になってしまいます。

そこで、 検索するサイト は全て削除して、「追加したサイトだけ検索する」と表示されているプルダウンから 「追加したサイトを重視して、ウェブ全体を検索する」に変更 します。

f:id:shirakiya:20151207012414p:plain

こうするとことでウェブ全体から重み付けなく検索してくれるようになります。

CSE_KEY/CSE_IDのチェック

CSE_KEYとCSE_IDが有効であるかどうかは実際にAPIにリクエストを送って確認します。

https://www.googleapis.com/customsearch/v1?key={CSE_KEY}&cx={CSE_ID}&searchType=image&fields=items(link)&q={何か検索したい文字列}

↑のURLのCSE_KEYとCSE_IDにこれまでで取得した実際のものを使って、ブラウザでリクエストします。
itemsというキーが存在するJSONが返ってきたら成功です。

3. HubotにCSE_KEYとCSE_IDを設定する

最後の仕上げに、以上の手順で取得したCSE_KEYとCSE_IDを環境変数に設定します。

変数名は、

  • CSE_KEY:HUBOT_GOOGLE_CSE_KEY
  • CSE_ID:HUBOT_GOOGLE_CSE_ID

とします。

herokuでHubotを動かしていたり、色々な環境で動かしているので設定方法は一概になんとも言えないので、具体的な方法は割愛します。
(起動スクリプトを用意している場合は、exportさせて環境変数を設定したりとかです。)

さいごに

ちなみにCustom Search APIは無料枠であれば1日100クエリまでとなっています。
なかなか少ないですね…。

リクエストがどんな場合でカウントされてしまうのかは下記の記事で軽く書かれていましたので、掲載しておきます。

Google Custom Search API を使ってみる

Enjoy Hubot Life !!