23
【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第10回 TickleCode Yoshinori Kobayashi 1 Sinatra x Kimono で作る焼き鳥店舗リスト “Kimono” is web scraping service

Sinatra x Kimono で作る焼き鳥店舗リスト “Kimono” is web scraping service|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第10回

Embed Size (px)

Citation preview

【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第10回

TickleCode

Yoshinori Kobayashi 1

Sinatra x Kimono で作る焼き鳥店舗リスト

“Kimono” is web scraping service

2

生まれは 奈良県 です

小林由憲(こばやしよしのり)

Twitter:

TickleCode ブログ:

@yoshiii514

もくもく会(自主勉強会) を複数の運営メンバーや アドバイザーの方々と ともに、定期開催しています。

勉強会を開催しています)^o^(

3

【CoEdo.rb】

Ruby / Ruby on Rails ビギナーズ勉強会

Swiftビギナーズ勉強会

WordPressもくもく 勉強会

http://wp-moku.doorkeeper.jp/

https://swift-beginners.doorkeeper.jp/

https://coedo-rails.doorkeeper.jp/

自己紹介

4

Kimono とは?

クラウド上で他のサイトをスクレイピングしてくれて、データも蓄積。

データを取得するためのAPIも生成してくれる。

スクレイピングのための工数が大幅に削減できる!!

5

Sinatra x Kimono サイト構成

データ

Scraping

API

Kimono はクラウドサービス Kimono が定期的にスクレイピングしてデータを蓄えてくれる。 蓄えたデータをAPIで利用できる。

今回のプログラムソースは次のGitHubにあります。

6

Kimono > Sinatra > Webサイト

デモします。

https://github.com/YoshinoriKobayashi/sinatra_kimono_yahoo_restaurant

8

Kimono を手っ取り早く学ぶなら

https://www.kimonolabs.com/learn

★チュートリアル動画

9

Kimono の特徴

Chrom拡張機能を使って、 Webページ上で項目を指定できる。

10

Kimono の特徴

CSS セレクタで項目を指定することもできる。

11

Kimono の特徴

クロール頻度が設定できる。(日・週・月)

12

Kimono の特徴

ページネーション、Ajaxに対応している。

13

Kimono の特徴

Modify Results: 取得したデータをクラウド上で整形して、APIで返すことができる。

14

Kimono Pricing Plan

★フリープラン

・API無制限 ・スケジュール実行 ・APIは公開(だれでも) ・過去30日間のデータにアクセス化

★エンタープライズプラン

・サポート(24時間365日) ・プライベートAPI(非公開) ・高速クロール ・独自APIの開発

15

Kimono Smart App Builder

https://www.kimonolabs.com/newapp

スマホアプリ(HTML版)をジェネレート

16

Sinatra について

MVCモデルの軽量フレームワーク。

コードを自動生成する機能はないが、コンパクトで学習コ

ストがかなり低くとても使いやすい!

18

Sinatra main.rb

require 'sinatra'

require 'sinatra/reloader'

require 'rest_client'

require 'json'

module JSON (Ruby 2.2.0)

APIの結果がJSONなので、JSONモジュールが便利!

19

Sinatra main.rb

get '/' do

rest = RestClient.get

'https://www.kimonolabs.com/api/34330hpu?apikey=cg9dj

d7otr92ApB2hF22VSs8vEWo7vK3'

rest_json = JSON.parse(rest)

#店舗リストを抽出

@shibuya_shops = rest_json["results"]["collection1"]

erb :index

end

20

Sinatra index.erb

<h2>渋谷・表参道・青山</h2>

<%

# 1店舗ずつ情報を出力

for shop in @shibuya_shops do

<div class="col-sm-6 col-md-3">

<div class="thumbnail">

<img src="<%= shop['image']['src'] %>"

alt="<%= shop['image']['alt'] %>">

<div class="caption">

<h3><a href="<%=

shop['shop_name']['href'] %>"><%=

shop['shop_name']['text'] %></a></h3>

・・・・

% end %>

21

Sinatra のススメ!

Railsでなかなか学習が進まない人や、難しいと感じて

いる人はSinatraから初めてみるとよいかもしれないで

す。

Sinatraにはコードを自動生成する機能がないので、1

つずつ組み立てることになりますが、それがMVCを理解

しやすくしてくれます。

また、Rubyの基本文法やGemfile・erbなども活用する

のでRailsを学習していくための基礎体力が身に付きま

す。

22

今後の問い合わせ先

何かございましたら、

ご連絡ください(・∀・)

Twitter: @yoshiii514

Facebook: Yoshinori.Koba

Mail: [email protected]

最後に

23

ご清聴ありがとうございました。