Ruby　基礎

この記事は完全に個人のRuby開発の際に使用するためだけに作っている。
参考にしていただいてもいいのだが、あくまで個人用という事だけわかって頂きたい。
*執筆者はPHP学習済みなので、飛ばす部分があるが大目に見て欲しい

# 開発環境

AWS cloud9
理由：パソコンにもうファイルが入れられないし、USBなど外部に入れるとあとあとメンドくさい可能性があるから


#Rubyメモ開始


まつもとゆきひろ氏が作った言語。
最近ベンチャー企業とかでめちゃくちゃ使われている。
比較的書きやすい言語

##環境構築

```terminal
$ gem install rails -v 5.2.4
$ rails -v
Rails 5.2.4
```

##Ruby基礎文法

###出力

```ruby
puts 'hello world'
p "hello world"
#hello world
```

###型
型についてはPHPとほぼ同じ。

だが妙なものがたくさんある

```ruby
puts "kaiseiblogの年齢は" + 20 + "才です"
#エラー
puts "kaiseiblogの年齢は" + 20.to_s + "才です"
#kaiseiblogの年齢は20です

#整数型→文字列型(多分toStringって意味)
```

```ruby
puts puts 10 + "10"
#エラー
puts puts 10 + "22".to_i
#kaiseiblogの年齢は20です
#32

#文字型→整数列型(tointですね笑)
```

###文字数数え(length)

```ruby
puts "kaisei".length
#6
```

###文字列逆(reverse)

```ruby
puts "kaiseiblog".reverse
#golbiesiak
```

###変数

基本はPHPと一緒

###定数

効果はPHPと同じ

アルファベット大文字で始まる識別子は定数

```ruby
Kaisei = "ばか"
puts Kaisei
#ばか
```
変えようとするとエラーは出るけど出ちゃうらしい…

###四則演算ほか

数字を文章と繋げて出力したいときは、先ほどのto_sをつける

それがめんどくさい時は以下のものが使える

###変数展開

```ruby
name = "kaiseiblog"
pv = 8000

puts name + "は" + pv.to_s + "pvの閲覧数がある"
#↓この書き方
puts "#{name}は#{pv}kgです" 
```

注意!!!!：""では使えるけど、''では使えない！

###配列

PHPとめちゃくちゃ似ていてビッくらポン

```ruby
blog = ["kaiseiblog", "sabichou", "siva"]
puts names[1]
#sabichou
```

言うことなしですね

###ハッシュやらシンボルやら

```ruby
age = {"kaiseiblog"=>20, "daniel"=>48, "roland"=>90}
puts age["kaiseiblog"]
#20
```

```ruby
age = {:kaiseiblog=>20, :daniel=>48, :roland=>90}
puts age[:kaiseiblog]
#20
```

###if文

なんか後にコロンが書かなくて良いとかいう優しさを見せるRuby

```ruby
kaiseiblog_pv = 8000
if kaiseiblog_pv < 5000
  puts "アマチュアブロガー"
end

if kaiseiblog_pv >= 5000  
  puts "プロブロガー"
end  
```

```ruby
kaiseiblog = "Kaisei"

if kaiseiblog == "Abe"
  puts "この人のブログはAbemaです。"
elsif kaiseiblog == "Kaisei"
  puts "この人のブログはkaiseiblogです。"
else
  puts "誰だお前"
end
```

###input系

Rubyはユーザーの入力にinput系の関数を使わないらしい

getsってやるぽいですね。

```ruby
puts "あなたの名前は？"
input_key = gets
puts "あなたの名前は#{input_key}"
#あなたの名前は(入力したもの)
```

###while系

```ruby
pv = 8000  

while pv < 10000 do  
  pv += rand(1000..6000) 
  puts pv
end
#10725
```

さりげなくランダムも学ぶスタイル

###繰り返し

ややPythonと似てるかな

```ruby
for i in 1000..8000 do  
  puts i
end
```
👆絶対にこれをコピペしないほうがいい。
ターミナルが埋まった

###配列オブジェクト取り出し

なんかPythonで似たのあったよね

```ruby
amounts = {"kaisei"=>20, "Robert"=>35, "Michel"=>73}
amounts.each do |people, age|  
  puts "#{people}は#{age}才です。"
end
```

###繰り返し中断

お馴染みですね

```ruby
kaisei_age = 0
while kaisei_age <= 100 do
  if kaisei_age == 20
    puts "現在になりました"
    break  
  end
  puts kaisei_age
  kaisei_age += kaisei_age
end
```

###メソッド(関数)

returnとか書かなくていいの?(歓喜)
と思ってたらやっぱりダメだった(二文以上書く場合は、return書かないと最後のやつしか反映されない)

```ruby
def call(name)
  "もしもし！ #{name} さん！"
end

puts call("kaisei")
```


```ruby
def call(name)
  return "もしもし！ #{name} さん！"
  "おい！#{name}！"
end

puts call("kaisei")
#もしもし！kaiseiさん！
```

###オブジェクト指向

うわ…だるいのきたよ
(好きだけど)


見た所、ほぼ今までのPythonやPHPと同じ

```ruby

class Blog
    
    
    attr_accessor :name, :pv, :ctr
    
    def initialize
        self.name = "WordPress"
        self.pv = 200
        self.ctr = 20
    end
    
    
    def write(article_keyword)
        puts "#{self.name}が#{article_keyword}の記事を更新して#{self.pv}回閲覧されました。"
    end
    
end
    
    
kaiseiblog = Blog.new

kaiseiblog.write("プログラミング")


```

多分色々コンストラクトとかあると思うが省略。