TECH　DAY　１　Ruby

勉強した項目：　Ruby
時間： ４：３０
内容：

＊学習アウトプットです。なにぶん間違いなんかもあります。気をつけますがその際はご指摘いただけますと幸いです＊

###【メソッド】
　メソッド：オブジェクトをメソッドと呼ばれる処理によって自身の形を変えたりすること
###【lengthメソッド】
　文字列が利用できるメソッドで、文字列の文字の数を数えてくれる
　返り値として数値オブジェクトの数字で返してくれる
###【to_sメソッド】
　文字列と数値は別のオブジェクトなので、連結することができないため、to_sメソッドを利用して数値を文字列に変換する

###【Rubyの演算子】
•　　+(足し算)
•　　-(引き算)
•　　* (かけ算)
•　　/(割り算)
•　　%(剰余)

```
`比較演算子(>, <, ==)  　式が正しければtrue、間違っていればfalse,等しい場合は＝＝`

`比較演算子(>=, <=)　　比較演算子>,<のあとに=を続けることで〜以上、〜以下を表す`

`not演算子(!)　　　!(エクスクラメーションマーク)はnot演算子と呼ばれ、否定の意味
　　　　　　　　　　!と=を合わせた!=は==と反対で、値同士が等しくない場合にtrueを返す`
```

###【変数】
　変数とは、オブジェクトの入れ物、またはオブジェクトを識別する名札のようなもの
　　=を挟んで右側においたオブジェクトの返り値を、左側の変数の中に入れるイメージ

　変数 = 格納するオブジェクト

　変数の名前は、原則として小文字から

　putsの返り値は「nil」となります。これは、オブジェクトが何もない、という意味

###【変数の命名規則】
　・原則、小文字から始める
　　（_(アンダーバー)から始めることも可能ですが、特に理由がない場合は避けましょう。）
　・名前の１文字目でなければ大文字や数字、_(アンダーバー)を使ってもよい
　・名前にスペースが入ってはいけない
　・予約語（Rubyによって最初から用途を与えられた単語）と同一の名前は使ってはいけない

###【プログラミングにおける=の意味】
　Rubyにおいて=が1つの式は必ず『右側の値を左の変数に代入する』という意味になる

###【名札としての変数】
　変数にはオブジェクトが何であるかを識別する名札という役割があります。変数を定義することにより、ソースコード中でオブジェクトをわかりやすく使える

###【定数】
　定数は、一度オブジェクトを代入したら再代入することをせずに、定義するときは名前の最初を大文字にする。
　　hello world　ではなく　Hello World

###【アプリケーションの作成】
　putsメソッドは最後に自動で改行する
　putsの改行はputs""でも可能

###【バックスラッシュ記法】
　`バックスラッシュの打ち方は option + \ `


|        記法       |	    意味        |
|:-----------------|------------------:|
|        \n	   |        改行        |
|        \t	   |        タブ         |
|        \b	   |    バックスペース     |
|        \\	   |    バックスラッシュ    |

　バックスラッシュ記法が適応されるのは文字を"(ダブルクォテーション)で囲んだときのみ

　バックスラッシュ記法で改行は、

```ruby
puts "吾輩は猫である\n\n名前はまだない"　　で表せる
```

###【式展開】
　式展開の書き方は文字列中で#{式}とするだけ
　　ポイントは、"(ダブルクォテーション)で囲む必要があります。'(シングルクォテーション)で囲んだ場合は式展開が行われない

```ruby:
 "#{式}"
```

```ruby:例
  name = "小池"

  puts "わたしの名前は#{name}です。"
  puts "1と3を足した値は#{(1 + 3)}です"

  # シングルクォテーション
  puts 'わたしの名前は#{name}です。'
  puts '1と3を足した値は#{(1 + 3)}です'
```
結果は、

```ruby:ターミナル
わたしの名前は小池です
1と3を足した値は4です
```

###【getsメソッド】
　getsメソッドはユーザーからターミナルへ入力できるようにするメソッド
　　返り値はユーザーが入力した値の文字列オブジェクト
　getsメソッドが呼ばれるとターミナル画面は入力待ちの状態になる

```ruby:
  input = gets

  puts "入力した値は#{input}です"
```

###【chompメソッド】
　chompメソッドは文字列の末尾の改行文字を取り除いた新しい文字列を返してくれるメソッド
　getsメソッドで返ってきた文字列オブジェクトは勝手に文末で改行してしまうのを防ぐ

　　`gets.chomp`のように後方につける

```ruby:
  string = "改行します\n\n"

  puts string       # 改行される
  puts string.chomp # 改行されない
```

###【ハッシュ】
　ハッシュという複数の情報を扱うことのできるオブジェクト

###【ハッシュオブジェクト】
　ハッシュオブジェクトは、自身の中にデータとそれに対応するキーのセットを所持することができる

###【キーバリューストア】
　ハッシュのように、保存したいデータ(バリュー)とそれに対応する標識(キー)を対応させてペアで保存する方式のこと

###【ハッシュオブジェクトの変数を作る】

```ruby

 hash = {}
```


　ハッシュは{} (中括弧)を使って記述します。また左辺のhashは変数名であり、任意の名前を定義

【シンボルオブジェクト】
　シンボルオブジェクト(略称:シンボル)とは今回のハッシュのキーのような名前を識別するためのラベル
　基本的に先頭に接頭語:をつける

```ruby
　# どちらも同じ
  hash1 = {:title => "時をかける少女"}
  hash2 = {"title" => "時をかける少女"}
```
　ハッシュではシンボルを使うようにする、実行の速度がシンボルの方が早いため、ハッシュのキーにはシンボルの使用が推奨

`例：変数をハッシュオブジェクトpostで生成する`

```ruby
　　post = {} # 空のハッシュの宣言

  #以下で要素の追加
  post[:genre] = "マンガ"
  post[:title] = "キングハム"
  post[:review] = "面白い!"
  puts post # => {:genre=>"マンガ", :title=>"キングハム", :review=>"面白い"}
```

##【条件分岐　if文】

```ruby

if 条件式 then
    # 条件式が真(true)のときに実行する処理
end
```

`条件式とは基本文法で出てきた(3 > 0)などのような返り値がtrueかfalseの式のことです。
if 条件式 thenとendの間にはその条件式がtrueのときに実行する処理を書く`

###【条件式が偽の場合の処理】
　条件式が偽のときに処理を行うには以下のようにelseを使う

```ruby

 if 条件式 then
    # 条件式が真(true)のときに実行する処理
  else
    # 条件式が偽(false)のときに実行する処理
 end
```


　**複数の条件分岐を書くときはelsifという文法を使う**

```ruby

if 条件式1 then
    # 条件式1が真(true)のときに実行する処理
  elsif 条件式2 then
    # 条件式1が偽(false)のとき、かつ
    # 条件式2が真(true)のときに実行する処理
  else
    # 条件式1と条件式2がどちらとも偽(false)のときに実行する処理
end
```


###【to_iメソッド】
　`文字列オブジェクトに対してto_iメソッドを使うとその文字列を数値オブジェクトに変換すること`

```ruby

  string = "30"           # 文字列の30
  number = string.to_i    # 数値の30に変換
  puts number + 20        # => 50が出力
```

###【メソッド】
　`メソッドとは、ある処理をまとめること。定義したメソッドを呼び出すことで同じ処理を何度も実行すること`

`【メソッドの定義方法】`

```ruby

　def メソッド名
    # 実行する処理
 end
```

`メソッドを呼び出すときは、メソッド名を記述`

```ruby

  def say_hello # メソッドの定義
    puts "Hello World"
  end

  say_hello # メソッドの実行