2019/06/16
【Webサービスをリリースしました!】
— 新居陽太 (@yotaarai85) 2019年5月7日
SNSで行きたい飲食店をシェアできるサービスです。
全国すべての飲食店に対応している(はず)です。
ぜひSNSでつながっている友達をtabegoでご飯や飲みに誘ってみてください!https://t.co/LojeLZfg3U
ログイン後のホーム画面から店舗検索できるようになっています
まず店舗検索をどのAPIを使って実現させようかを考えたのですが
色々考えましたが、掲載店舗数の多さと商用利用OKを考慮した結果、最終的にGoogleMapsAPIにしました。
ただGoogleMapsAPIも無料枠を過ぎると有料になってしまうので、早めに広告貼ったりしてマネタイズしないと赤字に苦しんじゃうなぁと思ってるとこはあります。
こちらの公式ドキュメントにあるTextSearchRequestsを使用していくのですが、「飲食店」というカテゴリで分かれておらず、「レストラン」、「カフェ」、「バー」などと細分化されたジャンルでしか取得できないようです。なかなかこの仕様が厄介でしたが、
https://maps.googleapis.com/maps/api/place/textsearch/json?types=restaurant&query=...
https://maps.googleapis.com/maps/api/place/textsearch/json?types=cafe&query=...
と、2回に分けてAPIを呼ぶことにして一旦fixしました
この画像にInterventionImageを使ってテキストを挿入します。InterventionImageの詳しい操作はググってください。
private function createOgpImage($placeId, $shopName){
//ベースとなる画像
$path = public_path('images/ogp_base.jpg');
$img = \Image::make($path);
//画像にテキスト挿入
$img->text($shopName, 520, 250, function($font){
$font->file(public_path('fonts/03SmartFontUI.ttf'));
$font->size(62);
$font->color('#272A2C');
$font->align('center');
$font->valign('top');
});
$img->text('に食べ行こ!', 520, 340, function($font){
$font->file(public_path('fonts/03SmartFontUI.ttf'));
$font->size(32);
$font->color('#272A2C');
$font->align('center');
$font->valign('top');
});
//編集した画像をストレージに保存
$save_path = storage_path('app/public/ogp_images/' . $placeId . '.jpg');
$img->save($save_path);
}
あとは「meta property="og:image"」と「meta name="twitter:image:src"」の部分で画像を指定して、ページにも表示させるだけですね。
実際のページはこちら
かなりざっくりで、あまり実用的な記事ではないと思いますが、雰囲気がなんとなく伝わればいいなぁと思います
そこまで難しいものでもないと思うのでLaravelの青本を一通り写経した方はぜひOGP画像生成サービスにぜひ挑戦してみてください。