継続的にAPIを叩くシステムを作るために
node.jsとかPythonとか悩んだけども、
Wikipediaとか
人気プログラミング言語の記事とか、
処理速度がどーだのって動画を見たりとか、
色々考えたけど、
書いてて楽しいって重要だよなと思ってRubyを使うことにしました。
元々Github pagesでJekyll使うためにインストールしてたのもある。
TL;DR
とりあえず導入は済んでるので
書く→実行→書く→書く→(ループ)
とやってるところもあるので長いです。
環境
- XUbuntu 16.04
- ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]
対象読者
- Rubyインストールしたけど何するか決めてない方
- Rubyマスターの方の暇つぶしになれば(希望)
1 安定と安心と信頼の”Hello world”
% mkdir work_rb
% cd work_rb
% vi hello.rb
# 普通に出力させるだけならこれでいい
print "Hello world"
Hello world
# 改行付はputsを使う 通常はこちらが多そう
puts "Hello world"
2 変数を使う
いくつか種類があるけど
いつものように書けば良さそうでした。
msg = "Hello world"
puts msg
Hello world
3 条件分岐
one = 1
two = 2
if one == 1
puts "ONE"
elsif two == 2
puts "TWO"
end
ONE
TWO
本当はthenを記述する方が丁寧なのでしょうが、
十分読めますからね。
あと、評価式のイコール1つにしてしまって5秒くらい思考停止しました。
いつものことです。
4 繰り返し文
month = 1
while month <= 12 do
puts month.to_s + '月: ' + ( (month <= 3) ? 'まだお年玉ある' : 'もう使っちゃった!' )
month = month + 1;
end
1月: まだお年玉ある
2月: まだお年玉ある
3月: まだお年玉ある
4月: もう使っちゃった!
5月: もう使っちゃった!
6月: もう使っちゃった!
7月: もう使っちゃった!
8月: もう使っちゃった!
9月: もう使っちゃった!
10月: もう使っちゃった!
11月: もう使っちゃった!
12月: もう使っちゃった!
for文使うこと少ないのかーって読んでて勝手にfmfmしてました。
5 〇秒ごとに実行
今回作りたいものは指定秒数ごとに実行してくれるものなので
# 指定したsecごとに処理を実行する
def execute_each_sec(sleep_sec)
yield
sleep sleep_sec
end
5.times do
execute_each_sec(1) do ||
puts "実行時間:#{Time.now}"
end
end
実行時間:2012-06-24 23:45:40 +0900
実行時間:2012-06-24 23:45:41 +0900
実行時間:2012-06-24 23:45:42 +0900
実行時間:2012-06-24 23:45:43 +0900
実行時間:2012-06-24 23:45:44 +0900
出力結果そのものはまったく問題無いんですが、
個人的には yieldというのが謎でした。
要は可読性を配慮した体の良いevalのようなものと捉えてしまいました。
ブロックそのものを引数にして渡せるってなかなかユニークだなあと、
勉強になりました。
今回はここまで
この記事書いてて知ったんですが
とても読みやすい参考サイトがありました。
良かったらどうぞ。
これからどうするか
あとはAPIを叩いてそのレスポンスを整形して
定期的に実行させるプログラムを書いていこうと思ってます。
Rubygemという便利なパッケージ管理システムがありますからね、
雰囲気でなんとかなるでしょう。
あとがき
最近になってクエリパラメータが
http://hoge.fuga ?text=foo
の太文字の部分のことだと知りました。
そんな私でも元気にやってます。
それでは。