子育て情報アプリを作れるように vol7 ~少し作り直し~

今回はクローラーを作るのは一旦やめて、
ソースコードの見直しを行います。

今回の目標

  1. 構造を見直す

1. 構造を見直す

今までのファイル構成は、
f:id:tumiki_jp:20150819004958p:plain
こんな感じでした。

これでも問題なく動いているのですが、
いくつか気になる点が。
* movie-site.rbcook-site.rbなどの複数箇所にCapybaraのインクルードが書かれている。
* main.rbにcapybaraの初期設定が書かれている
* ファイル名がわかりにくい *

これらを解決していきます。

(1) 設定ファイルの追加

mainフォルダの下に
設定系のファイルを置くためのフォルダ
configフォルダを作ります。
中には、Capybaraの設定を記述した
capybara-config.rbを追加しています。
今までは、各クローラー(****-site.rb)で
Capybaraのインクルード処理を書いていたのですが、
これをやめてcapybara-config.rbに移したことで
クローラーは同じ処理を書く必要がなくなりました。

今後は、capybara以外の設定ファイルが増えた時には、
このフォルダに追加していきます。

(2) クローラーの共通クラス作成

今までも継承元クラスとして

  • cook-site.rb
  • news-site.rb
  • movie-site.rb
  • qa-site.rb
  • blog-site.rb

を用意していましたが、 さらに、これらの継承元 を作成します。
理由は、クローラーの共通処理は一つのクローラー
書いた方がシンプルになるからです。
ファイル名はcrawler.rbにします。

で、今までは各クローラーのファイル名を
***-site.rb
としていましたが、
こちらも
***-crawler.rb
に変更します。
こっちの方がわかりやすいですよね。

最終的にどういうクラス構成になるかというと、
Crawler
┣BlogCrawler
 ┗(まだ何もありません)
┣CookCrawler
 ┗CookpadCrawler
┣MovieCrawler
 ┗YouTubeCrawler
┣NewsCrawler
 ┗(まだ何もありません)
┗QACrawler
 ┗YahooChiebukuroCrawler

といった感じです。

また、 クローラーが収集したデータを
保持するためのクラスも用意します。

  • MovieSiteData
  • CookSiteData
  • QASiteData

といった感じでクローラーの種類ごとに作成しました。

修正後のファイル構成
f:id:tumiki_jp:20150902091006p:plain

詳しくはソースコードを直接見ていただければと思います。
github.com

今回は以上になります!