Edited at

Ruby勉強しているので備忘録

More than 1 year has passed since last update.

継続的に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

の太文字の部分のことだと知りました。

そんな私でも元気にやってます。

それでは。