子育て情報アプリを作れるように vol7 ~少し作り直し~
今回はクローラーを作るのは一旦やめて、
ソースコードの見直しを行います。
今回の目標
- 構造を見直す
1. 構造を見直す
今までのファイル構成は、
こんな感じでした。
これでも問題なく動いているのですが、
いくつか気になる点が。
* movie-site.rb
やcook-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
といった感じでクローラーの種類ごとに作成しました。
修正後のファイル構成
詳しくはソースコードを直接見ていただければと思います。
github.com
今回は以上になります!