■ はじめに
Laravel上でGoogleの検索機能を応用したWebアプリを作りたいと思い立ったので、
よさげなライブラリ「Laravel Google Custom Search Engine」を調査/試用してみた。
ざっと調べた感じ、GoogleのCustom Search APIは「1日100リクエスト」までなら無料で利用できるらしい。
それ以上のリクエストは有料のようだ。
(もともと、Googleの検索用APIは「Google Web Search API」という名称だったようだが、こちらは2010/11/1から非推奨となり、2014/9/29で廃止されている。)
https://developers.google.com/web-search/docs/ (廃止版のドキュメント)
■ 前提
- Googleアカウントを持っていること
- Laravelアプリケーションが動作する環境が整っていること
■ 作業
◇ Google Custom Search APIの設定
- Google APIの一覧ページから「Custom Search API」を選択
- プロジェクト未作成であればプロジェクトを作成し、APIを有効にする
- 必要な認証情報の設定を行う
- APIを呼び出すためのキーが発行される
◇ カスタム検索エンジンの作成
上記のAPIを利用するには、Googleの「カスタム検索エンジン」を設定する必要がある
https://cse.google.com/cse/
- 検索エンジンを新規追加
「検索エンジンの名前」と「schema.orgタイプ」を入力し、検索エンジンを作成
(schema.orgタイプは、あとから設定画面で自由に編集/削除可能)
schema.orgタイプについては、参考リンクからどうぞ。
◇ Laravel Google Custom Search Engineの用意
公式の手順に従ってインストール
https://github.com/jdrda/laravel-google-custom-search-engine
- Laravelプロジェクト直下で、composerを利用しライブラリ本体をインストール
composer require jan-drda/laravel-google-custom-search-engine
- インストーリしたライブラリを、サービスプロバイダーとファサードに設定する
config/app.php
'providers' => [
...
'JanDrda\LaravelGoogleCustomSearchEngine\LaravelGoogleCustomSearchEngineProvider',
],
...
'aliases' => [
...
'GoogleCseSearch' => 'JanDrda\LaravelGoogleCustomSearchEngine\Facades\LaravelGoogleCustomSearchEngineProvider',
],
3.コンフィグファイルを作成
php artisan vendor:publish --provider="JanDrda\LaravelGoogleCustomSearchEngine\LaravelGoogleCustomSearchEngineProvider"
4. 上記で作成したファイルに、「APIキー」と「検索エンジンID」を設定
/config/laravelGoogleCustomSearchEngine.php
'engineId' => '検索エンジンID',
'apiKey' => 'APIキー'
5.検証用コントローラを作成
php artisan make:controller GoogleSearchController
6. サンプルプログラムを用意
app/Http/Controllers/GoogleSearchController.php
use Illuminate\Http\Request;
use JanDrda\LaravelGoogleCustomSearchEngine\LaravelGoogleCustomSearchEngine;
use JanDrda\LaravelGoogleCustomSearchEngine\LaravelGoogleCustomSearchEngineProvider;
use Log;
class GoogleSearchController extends Controller
{
public function index(){
// CustomSearchEngineライブラリ
$searchModel = new LaravelGoogleCustomSearchEngine();
// リクエスト送信
$searchKeyword = '猫とは';
// get first 10 results for query '猫とは'
$results = $searchModel->getResults($searchKeyword);
Log::debug('$searchKeyword -> '.print_r($searchKeyword, 1));
Log::debug('$results -> '.print_r($results, 1));
return view('googleCustomSearch', [
'results' => '',
]);
}
}
7.ログに吐き出してみた結果
[2017-02-12 02:19:12] local.DEBUG: $searchKeyword -> 猫とは
[2017-02-12 02:19:12] local.DEBUG: $results -> Array
(
[0] => stdClass Object
(
[kind] => customsearch#result
[title] => ネコ - Wikipedia
[htmlTitle] => ネコ - Wikipedia
[link] => https://ja.wikipedia.org/wiki/%E3%83%8D%E3%82%B3
[displayLink] => ja.wikipedia.org
[snippet] => しかし、チアミナーゼは熱によって失活するため加熱すれば問題はなく、イカ・タコなどは
ネコにとっての必須 ... アワビ、サザエ、ノリ: 死亡する危険はないが、春先のアワビの
ツノワタ(内臓)を食べさせるとネコの耳が ...
[htmlSnippet] => しかし、チアミナーゼは熱によって失活するため加熱すれば問題はなく、イカ・タコなどは
ネコにとっての必須 ... アワビ、サザエ、ノリ: 死亡する危険はないが、春先のアワビの
ツノワタ(内臓)を食べさせるとネコの耳が ...
[cacheId] => -fmMe8ASwpYJ
[formattedUrl] => https://ja.wikipedia.org/wiki/ネコ
[htmlFormattedUrl] => https://ja.wikipedia.org/wiki/ネコ
[pagemap] => stdClass Object
(
[cse_thumbnail] => Array
(
[0] => stdClass Object
(
[width] => 230
[height] => 219
[src] => https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTe8GqM-P_zkvNOS94EMawclL8kr20rWiNRIqZH5KBKwZPFSj5p06_hhQvE
)
)
[metatags] => Array
とりあえずできた。
次はこのデータをどう加工するかを考えていきたい。