Ruby , Ruby on Rails学習 一日目(変数とメソッド)

#webアプリケーション開発、頑張るやで。

今日からデイトラで学んだことをどんどんアウトプットしていこうと思います。

フロントエンドエンジニアを目指していたのですが、正直バックエンドの知識も
ないとぶっちゃけ頭がこんがらがってわからなくなるときがあります。。。。
なので学んだことをどんどんQiitaにアップロードしていこうと思います！

#Rubyってなんぞや

今まで学習してきたHTML,CSS,JavaScriptと違ってRubyはサーバーサイド言語と
呼ばれるもの。
機能としては
・ロジックをつくるんだよー
・データを保存したり取り出したりできるんだよー

そしてこの言語は日本人よって作られたらしい。地味にすごすぎワロタ。
そしてこのRubyとRuby on Railsというものを使うと爆速でWebアプリケーションが作れるみたい。
フロントでいうところのVue.jsとかReactみたいなもんなんかね。

この便利なRailsですが、実務ベースで使用していくには生のRubyをちゃんと知らないと
だめだよということなのでしっかり基礎学習していこうと思います！！

#文字の表示
基本形はこいつ

```
puts("こんにちは")
```

かっこなしでもいける

```
puts "こんにちは"
```

文字を改行して表示しない場合はprintを使用する(putsは勝手に改行が入る)

```
print "こんにちは"
```

putsやprintのような処理を行うものを「メソッド」と呼ぶ。
※シングルクォーテーションとダブルクォーテーションの違い
シングルにすると中の処理がしっかり行われないで文字として表示することがある。

```
puts 'こんにちは\nうっす'
```
処理としては
こんにちは\nうっす　となる。こういうのを防ぐために基本はダブルクォーテーションで書こう。

#型の判別(p)
putsとpの文字の扱いをみると、putsは数字なのか文字列なのかわからない。
pを使うと数字なのか文字列なのか判別出来る。
・putsの場合

```
puts "100"
puts 100
```

```
100
100
```

・pの場合

```
p "100"
p 100
```

```
"100"
100
```

#計算
四則演算や文字列の結合もすることが出来る。
また、数字の整数をInteger、少数をFloatと呼ぶ(型)

```rb
puts 1 + 1
puts 10 - 9
puts 30 * 20
puts 10 / 2
puts 7 % 3
puts 3.14 * 2
puts "田中" + "、" + "こんにちは"
```

```
2
1
600
5
1
6.28
田中、こんにちは
```

また、計算の優先順位をかえたいときは()を使用する。まぁ普通の算数と同じですね。

```
puts (1 + 10) * 2
puts 1 + 10 * 2
```

```
22
21
```

#変数

変数とはデータにラベルをつけ、意味づけをするものというイメージ。
値を代入して使用する。

```rb
score = 87
puts score
```
こうするとscoreの値を出力することが出来る。

変数の値を文字列と結合して使用したい場合は{}を使用すると楽に書ける。
JavaScriptだとこれバッククォーテーションとかでだるいんですけど、Rubyだと簡単にかけて
最高！！！って思いました。
ちなみにこれを使用する場合は必ずダブルクォーテーションで囲って使用する。

```rb
name = "Takumi"
puts "#{name}こんにちは！"
```

出力されるとこんなかんじ。

```
Takumiこんにちは！
```

「変数でわざわざ数字を置き換える意味あんの？」って思われるかもしれませんが、
置き換えることで何を計算しているのかを分かりやすくなったりします。
たとえば

```rb
pai = 3
radius = 4
area = puts radius * radius * pai
puts area
```

これをみると直感的に円の計算をしているってわかりませんか？
こうやってデータに意味付けをすることでコードを見たときのわかりやすさが変わるんです。
なので変数として置き換えて使い回す意識は大切！！

また変数を使用するときのルールがいくつかあります。
・アルファベットで書く
・先頭は数字を置かない
・スネークケース(snake_case)、キャメルケース(CamelCase)で書く

ということを守って書くようにする。

#メソッド

メソッドとは「処理をまとめたもの」

型としては以下のように書く。defはdefineの略で定義するということ。

```rb
def hello
  #処理
end
```

例をみてみましょう。

文字を出力するという処理をまとめたメソッドを定義します。

```rb
def hello
  puts "Hello World"
  puts "HELLO"
end

hello
```

そうすると以下のように出力されることが確認できます。

```
Hello World
HELLO
```

また、計算機としてメソッドを定義する例をみてみます。

```rb
def calculate_area(radius)
  pai = 3
  radius * radius * pai
end

area = calculate_area(5)
puts area
```

ここで大切なのは()をつけることで引数を定義しているという点です。
ここに数字をいれることで値をもってくることが出来る。
Rubyでは返り値としてreturnを使用しなくてもいいみたいなので直感的でわかりやすいなと感じました。

引数を複数もたせることもできる。

```rb
def hello(first_name , family_name)
  puts "Hello #{first_name} #{family_name}"
end

hello("takumi","osanai")
```

また、返り値を複数もたせることも出来る(まれに使う)。
1と2という値が返り値となり、aとbにtestの返り値を代入している。
こうすることで返り値を複数もたせることができる。

```rb
def test
  return 1,2
end

a , b = test
puts a
puts b
```

次にキーワード引数というものも覚えよう。
こいつを使用することで引数に入れた値はなんの値なんだ？？？というのが
直感的に分かりやすくなります。
急に(5)って書いてても5ってなんの数字なんだ？とわからないですよね。
こう書くとradiusつまりは半径に5を入れてるんだと簡単にわかるようになるので便利。

```rb
# キーワード引数
def calculate_area(radius: 0) 
  pai = 3
  radius * radius * pai
end

area = calculate_area(radius: 5)
puts area
```

最後に平均点を求めるメソッドを定義してこの記事は終わろうと思います。

```rb
def calculate_average(score_a,score_b) 
  (score_a + score_b) / 2
end

score = calculate_average(45,25) 
puts score
```

(score_a + score_b) / 2のところはtotal = score_a + score_b 
とまとめて書いてもきれいですね。total / 2で返り値となります。

以上、まずはRubyの基礎文法と変数、メソッドでした。
次は条件分岐と繰り返し表現について勉強していきます。