質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.09%

「一定時間ごとにスクレイピング」をするのにはサーバーは必要かどうかについて

解決済

回答 5

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,519
退会済みユーザー

退会済みユーザー

前提・実現したいこと

今、自分のpcでvagrantとvirtualboxでサーバーを作り、crondを使い、言語はrubyとrailsで、同じニュースサイトを一定時間ごとにスクレイピングをし新着があればそれをビューに表示させるというものを作成しています。

「一定時間ごとにスクレイピング」をする方法としてサーバーでcrondのデーモンを使う方法は知ったのですが、疑問点があります。

vagrantとvirtualboxやレンタルのサーバーなしで自分のpcのruby、railsだけで「一定時間ごとにスクレイピング」をすることはできないのでしょうか?できたとしてもサーバーを使った方が良い理由は何かあるのでしょうか?

ググったり「rubyによるクローラー開発技法」の本を読んだ限りですと、サーバーを使用している例しか?見たことがないのですが、サーバーを使わないといけない?理由があれば教えて欲しいです。
宜しくお願いします。

補足情報(言語/FW/ツール等のバージョンなど)

mac

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

+3

自分で使う分にはローカルで動かし続けても構いません(もちろん、パソコンをつけっぱなしにする必要がありますが)。

なお、スクレイピングで得たデータをサイト構築に使うとなれば、著作権や利用規約など注意すべき点は多々あります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/23 22:32

    今は自分のpcでvagrantとvirtualboxでサーバーを作ってそこでcrondを使おうと思っているのですが、自分のpcでサーバーを作らなくてrubyとrailsだけでできるかという質問になります。
    わかりにくくて申し訳ありません。
    vagrantやvirtualboxのようなサーバーは必要なのでしょうか?

    キャンセル

+2

VMを立てることの直接的なメリットにも結局つながってくるのですが、
●VMを立てて構築する形式のほうが、解説が書きやすい
というのが、そういう解説記事の多くなる最大の理由かと思います。

個人のマシンに直接構築する場合、マシンごとの環境の違いに対応しなければなりません。
どんなポートが空いている? セキュリティソフトは入っている? どんなツールが導入済み? ディレクトリ構成は? 環境変数は?
それぞれのバリエーションについて考慮して「※ただし○○の場合は○○のところを○○と読み替えてください」と但し書きを付けまくるくらいなら、いちからVMを立てて「こういう風にOS環境ごと立ち上げましょう」と書いた方がノイズがない本質的な解説だけに絞って書けます。

これは、実践する人にとってのメリットと表裏一体です。
環境の影響を受けずに構築できるということは逆に言えば環境を汚さないということでもあります。
捨てるのも容易、誰かに渡すのも容易、もちろんクラウドプラットフォームに展開するのも容易。

なるほどいろいろな意味で取り扱いがしやすくなるのはわかった、しかしそれでも、プログラム一本動かすのにVM一本立ち上げるのはもののバランスとしてやはり過剰では? そうなんです、そこで「VMよりもっとずっと軽く動く、VMみたいに独立した環境を自由に作ったり消したり共有できたりする」ツールとして、Dockerが大流行しているわけです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/24 16:25

    ご回答ありがとうございます。
    VMでクローラーを作っている例ばかり目にしていたのはそういう都合上の意味合いもあったのですね。
    でも他の方の回答からVMなしでもできることはわかりました。

    キャンセル

  • 2017/07/24 17:31

    はい、やればできるのはその通りです。

    キャンセル

checkベストアンサー

+1

両方やっているので、
メリットデメリットを

自宅pcのメリット
○すべての環境が自分の支配下

自宅pcのデメリット
○電気代がかかる(以外と高い)
○うるさい(pc稼働音)
○pc稼働や通信が不安定になることも
○火事のリスク(居ない時に起こると、、、)

レンサバ等のメリット
○以外と安くつく(用途をきちんと絞りこめばコスパがよくなる
○pc稼働や通信環境が安定

デメリット
○環境の制約がつく(サーバー会社の)

個人的には
「用途が絞り込めて、安定稼働を長期に行う予定」ならレンサバ
「研究や学習、遊びに」なら自宅で
特にlinuxサーバーに慣れていないなら、一度苦労して自宅サーバーを立ち上げて、運用開始までやってみる。コレをするといろんな事が学べてレンサバ使うにも楽になりますよ

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/24 16:22

    ご回答ありがとうございます。
    virtualboxとvagrantでcentos、ruby、rails、mysqlを入れてsequelproでssh接続くらいまでならなんとかできました。
    エラーだらけで開発環境を作るまででかなり苦戦したのですが。

    キャンセル

  • 2017/07/24 19:46

    「エラーだらけ」こそ、経験、資産ですよ。
    最初はわけのわからないエラーでも、色々やってみることで解決法や解決方法の調べ方見つけ方(特にこっち)がわかってくるものです。
    近年はサーバー回りも複雑ですし、パッケージ化されて見えない所も増えています。
    ここのような質問サイトで解決方法を聞いても、自分の状況を正確に伝えられなければ、なかなか良い解決方法にたどり着かない事に
    どこら辺で、どんな風なエラーが出るか、知っていれば、きっと役に立ちますよ

    キャンセル

  • 2017/07/27 02:04

    ありがとうございます。
    引き続き頑張っていこうと思います。

    キャンセル

+1

crondはLinuxのタスクスケジューラです。
もしWindowsでやりたければWindows用のタスクスケジューラを用意すれば解決でしょ?

ruby、railsだけで

タスクスケジューラ無しならRubyのSleepを使うのが一般的ですかね?
無限ループ内に突っ込んで、30秒なり1分毎に今何時かを計算して1時間置きに実行するとか…

RailsはWebサーバーを立ち上げるフレームワークです。
Webサーバーは何処かのフォルダやDB等に突っ込んでおいた取得済みのニュース一覧を参照する事に専念します。

それとは別にスクレイピングしてニュース一覧を取得しまくるバッチを作って実行しましょう。
バッチにする場合はRubyネイティブでゴリゴリ動かしてもいいのですが、
RailsのModel等を利用出来る仕組みのrunnerと一緒に起動すればはかどりそうですね。
Rails runnerを使ってファイルを実行しました - Qiita

従って立ち上げるプロセスは2つになります。

  • Ruby on RailsによるWebサーバー
  • スクレイピング取得バッチ(Rails runner使用)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/27 02:06

    なるほど、runnerというやり方もあったのですね。
    初めて知りました。参考にさせていただきます。
    ご回答ありがとうございました。

    キャンセル

0

もし、ご利用のPCがWindowsの場合crondを使う方法だと上手くいかないかもしれません。
(最近のWindowsには詳しくないので確実にそうだとは言い切れないのですが…)

これはWindowsにcrondというツールが無いためです。

crondを利用しない方法であればWindowsを利用している場合でも定期的にプログラムを動作させることは出来ると思います。

ご利用のPCがLinuxやMacであればVagrantで仮想マシンを作ること無くプログラムを動作させることは可能です。


サーバーを利用したほうがいい理由ですが、例えばVagrantのような仮想マシンを利用する場合とレンタルサーバーを利用する場合では理由が異なってきます。

Vagrantを利用する場合であれば、

  • 利用しているOSの制約(Windowsではcrondが無い)を受けることなく開発が出来る

レンタルサーバーを利用する場合であれば、

  • スクレイピングをするためのリソース(CPUやメモリ)を多く割り当てることが出来る

といったメリットが得られるのかなと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/24 00:41

    macでそのままターミナルに$ crontabで書けば良いのでしょうか?

    キャンセル

  • 2017/07/24 00:50

    はい

    キャンセル

  • 2017/07/24 15:34

    ご回答ありがとうございました

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.09%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる