###前提・実現したいこと
今、自分のpcでvagrantとvirtualboxでサーバーを作り、crondを使い、言語はrubyとrailsで、同じニュースサイトを一定時間ごとにスクレイピングをし新着があればそれをビューに表示させるというものを作成しています。
「一定時間ごとにスクレイピング」をする方法としてサーバーでcrondのデーモンを使う方法は知ったのですが、疑問点があります。
vagrantとvirtualboxやレンタルのサーバーなしで自分のpcのruby、railsだけで「一定時間ごとにスクレイピング」をすることはできないのでしょうか?できたとしてもサーバーを使った方が良い理由は何かあるのでしょうか?
ググったり「rubyによるクローラー開発技法」の本を読んだ限りですと、サーバーを使用している例しか?見たことがないのですが、サーバーを使わないといけない?理由があれば教えて欲しいです。
宜しくお願いします。
###補足情報(言語/FW/ツール等のバージョンなど)
mac
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
自分で使う分にはローカルで動かし続けても構いません(もちろん、パソコンをつけっぱなしにする必要がありますが)。
なお、スクレイピングで得たデータをサイト構築に使うとなれば、著作権や利用規約など注意すべき点は多々あります。
投稿2017/07/23 12:55
総合スコア145183
0
VMを立てることの直接的なメリットにも結局つながってくるのですが、
●VMを立てて構築する形式のほうが、解説が書きやすい
というのが、そういう解説記事の多くなる最大の理由かと思います。
個人のマシンに直接構築する場合、マシンごとの環境の違いに対応しなければなりません。
どんなポートが空いている? セキュリティソフトは入っている? どんなツールが導入済み? ディレクトリ構成は? 環境変数は?
それぞれのバリエーションについて考慮して「※ただし○○の場合は○○のところを○○と読み替えてください」と但し書きを付けまくるくらいなら、いちからVMを立てて「こういう風にOS環境ごと立ち上げましょう」と書いた方がノイズがない本質的な解説だけに絞って書けます。
これは、実践する人にとってのメリットと表裏一体です。
環境の影響を受けずに構築できるということは逆に言えば環境を汚さないということでもあります。
捨てるのも容易、誰かに渡すのも容易、もちろんクラウドプラットフォームに展開するのも容易。
なるほどいろいろな意味で取り扱いがしやすくなるのはわかった、しかしそれでも、プログラム一本動かすのにVM一本立ち上げるのはもののバランスとしてやはり過剰では? そうなんです、そこで「VMよりもっとずっと軽く動く、VMみたいに独立した環境を自由に作ったり消したり共有できたりする」ツールとして、Dockerが大流行しているわけです。
投稿2017/07/24 01:37
総合スコア5568
0
ベストアンサー
両方やっているので、
メリットデメリットを
自宅pcのメリット
○すべての環境が自分の支配下
自宅pcのデメリット
○電気代がかかる(以外と高い)
○うるさい(pc稼働音)
○pc稼働や通信が不安定になることも
○火事のリスク(居ない時に起こると、、、)
レンサバ等のメリット
○以外と安くつく(用途をきちんと絞りこめばコスパがよくなる
○pc稼働や通信環境が安定
○
デメリット
○環境の制約がつく(サーバー会社の)
個人的には
「用途が絞り込めて、安定稼働を長期に行う予定」ならレンサバ
「研究や学習、遊びに」なら自宅で
特にlinuxサーバーに慣れていないなら、一度苦労して自宅サーバーを立ち上げて、運用開始までやってみる。コレをするといろんな事が学べてレンサバ使うにも楽になりますよ
投稿2017/07/24 00:21
総合スコア95
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/24 07:22
2017/07/24 10:46
退会済みユーザー
2017/07/26 17:04
0
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/23 16:27
総合スコア21158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/26 17:06
0
もし、ご利用のPCがWindowsの場合crondを使う方法だと上手くいかないかもしれません。
(最近のWindowsには詳しくないので確実にそうだとは言い切れないのですが…)
これはWindowsにcrondというツールが無いためです。
crondを利用しない方法であればWindowsを利用している場合でも定期的にプログラムを動作させることは出来ると思います。
ご利用のPCがLinuxやMacであればVagrantで仮想マシンを作ること無くプログラムを動作させることは可能です。
サーバーを利用したほうがいい理由ですが、例えばVagrantのような仮想マシンを利用する場合とレンタルサーバーを利用する場合では理由が異なってきます。
Vagrantを利用する場合であれば、
- 利用しているOSの制約(Windowsではcrondが無い)を受けることなく開発が出来る
レンタルサーバーを利用する場合であれば、
- スクレイピングをするためのリソース(CPUやメモリ)を多く割り当てることが出来る
といったメリットが得られるのかなと思います。
投稿2017/07/23 14:43
総合スコア78
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/23 15:25
2017/07/23 15:38
退会済みユーザー
2017/07/23 15:41
2017/07/23 15:50
退会済みユーザー
2017/07/24 06:34
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/23 13:32