Ruby初心者の学習過程まとめ記事#2

#はじめに

こんにちは。
この記事はRuby初心者の私がRubyを学習した過程をまとめた記事です。
目的は学習した内容を自分の手でまとめることで知識の定着をさせることです。
また、公開する事でたくさんの人の意見を聞くことが出来れば幸いです。
恐縮ではありますが、間違っている箇所や改善点があればご教示願います。

#学習環境

環境：AWS Cloud9
バージョン：Ruby２.５.1
教材：Udemy "はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう"

#学んだコードまとめ

**・何かを出力する方法　puts**

```qiita.rb
puts 'Hello,Qiita!'
```
解説：文字列'Hello,Qiita!'を出力する

**・コメントにする方法　#　もしくは　=begin　〜〜〜　=end　実務では#がよく使われる**
　コメントを有効/無効にするショートカットキー　mac:command+/ windows:ctrl+/
　コメントにする目的は特定の処理を一時的に無効にするもしくはメモを残す

```qiita.rb
# puts 'Hello,Qiita!'
```
解説：文字列'Hello,Qiita!'がコメントになり、出力されなくなる

**・変数の宣言と代入　変数名=式**
　変数とは：扱うデータに名前をつけて一時的に利用できるようにしたもの

```qiita.rb
name = 'Kensuke Watanabe'
```
解説：変数nameに文字列'Kensuke Watanabe'を代入

**・変数の命名規則　アルファベットの小文字またはアンダースコア（_）で始まる。それに続けてアルファベット、数字、アンダースコアで記述する**
※注意点
1,原則、変数名に数字を使わない事　業務上のトラブルに繋がりやすい
2,単語同士をつなげる際にはスネーク方式を利用（単語と単語の間をアンダースコアで繋ぐ方法）
3,予約語は変数名に使用できない（予約語とはifなどRubyで使用するメソッドのこと）

```qiita.rb
#OK
name = 'Kensuke Watanabe'
current_age = 23
#NG
1name = 'Kensuke Watanabe'
currentage = 23
if = xxx
```
解説：NGのみ解説　一つ目は変数名に数字が含まれているためNG
　　　　　　　　 二つ目は単語同士をつなげる際にアンダースコアが無いためNG
　　　　　　　　 三つ目は予約語を使用しているためNG

**・良くない変数の使い方（エラーではないが、メンテナンス性など業務効率が悪化する使い方）**
1,同じ変数に文字列、数値、配列など違う型を代入する 何が入っているか分からなくなる

```qiita.rb
n = 'Kensuke Watanabe'
n = 23
n = {name: 'Kensuke Watanabe', age: 23}
```
解説：変数nに文字列、数値、ハッシュを代入している　nには何を入れているか困惑する原因になるため良くない

**・定数の宣言と代入　定数名 = 式**
　定数とは変化しないまたは頻繁に変化しない値を扱う時に使う値のこと
　例：手数料率、消費税率、バージョンなど
 ※注意点
　1,定数名は大文字
　2,単語を繋げるときはアンダースコアを使う
　3,再代入は行わない

```qiita.rb
SALES_TAX_LATE = 0.1
```
解説：定数SALES_TAX_LATEに0.1を代入　

**・数値について**
数値の型の種類
Numeric：数値クラス　Integer：整数クラス　Float：浮動小数点数クラス（小数点以下の値が使える）
上記の様に3つの型があるが、動的型付けと言って値によって自動的に判断して型が指定される為、実際にプログラミングをしていて使うことはほとんどない。

四則演算
足し算：+　引き算：-　掛け算：*　割り算：/　余りを求める：%　x乗する：**x

IntegerをFloatに変更する方法：数値.to_f
FloatをIntegerに変更する方法：数値.to_i

```qiita.rb
n = 1 + 1
x = 3 ** 2
y = x / n.to_f
```
出力結果

```
Cloud9User:~/environment/qiita $ ruby qiita.rb 
2
9
4.5
```
解説：nに1足す1を代入、xに3の２乗を代入、yにx割るnのFloat型を代入（nがFloat型になっている為、出力結果は小数点が出る様になる）

**・文字列について**
文字列はシングルクォーテーション(')もしくはダブルクォーテーション(")で囲む
ダブルクォーテーションで囲む場合は、式展開を用いる時か文字列の中に特殊記号を入れるとき

文字列を連結して出力する方法：puts '文字列' + '文字列'
文字列（小文字）を大文字にして出力する方法：puts 変数.upcase
破壊的に文字列を大文字にして出力する方法：puts 変数.upcase!
※破壊的とは変数の値の変更を行うこと

```qiita.rb
puts 'Kensuke' + 'Watanabe'
my_name = 'kensuke'
puts my_name.upcase
puts my_name.upcase!
puts my_name
```
出力結果

```
Cloud9User:~/environment/qiita $ ruby qiita.rb 
KensukeWatanabe
KENSUKE
KENSUKE
KENSUKE
```
解説：文字列Kensukeと文字列Watanabeを連結して出力、変数my_nameにkensukeを代入しそれを大文字にして質力、変数my_nameを破壊的に大文字にして出力、破壊的かどうかの確認の出力

**・比較演算子について**
<：より小さい　<=：以下　>：より大きい　>=：以上　==：等しい　!=：等しくない
上記の関係が正しい時は真（true）正しくない時は偽（false）が戻り値として返ってくる

```qiita.rb
x = 1
y = 2
puts x < y
puts x == y
```
出力結果

```
Cloud9User:~/environment/qiita $ ruby qiita.rb 
true
false
```
解説：xに１を代入しyに２を代入、x<yの関係を出力、x==yの関係を出力
　　 １は２より小さい為true、１と２は等しくない為false

**・文字列と数値の変換**
文字列を整数に変換する方法：文字列.to_i
文字列を少数に変換する方法：文字列.to_f
数値を文字列に変換する方法：数値.to_s

```qiita.rb
x = '2'
y = 2
puts x.to_i + y
puts x + y.to_s
```
出力結果

```
Cloud9User:~/environment/qiita $ ruby qiita.rb 
4
22
```
解説：xに文字列の２を代入しyに数値の２を代入、xを数値に変換してyと足した結果を出力、yを文字列に変換してxと足した結果を出力
　　 数値の２足す２は４のため４が出力される、文字列の２足す２は２２のため２２が出力される

**・インクリメントとデクリメントについて**
インクリメントとは：値に1を足すこと　数値 += 1　という風に表す
デクリメントとは：値から1を引くこと　数値 -= 1 という風に表す
※rubyではJavaScriptで言うところの 数値 ++ や 数値 -- と言ったようなものはないから注意

```qiita.rb
x = 1
x += 1
puts x
```
出力結果

```
Cloud9User:~/environment/qiita $ ruby qiita.rb 
2
```
解説：xに1を代入して、xをインクリメント、出力結果は1に1を足した２

**・論理演算子について**
論理演算子とは複数の条件を一つにまとめることができるもの
　論理積&&（and）：どちらも真の時に真　例：a && b　aとb共に真の時に真
　論理和||（or）：少なくともどちらか片方が真の時に真　例：a || b aかb少なくともどちらかが真の時に真
　　　　　 ※両方真でも真
　結果を反転させる！（not）：trueをfalseに、falseをtrueに変換する

ここで真偽値について解説
真偽値とは命題の真偽を示す値で、falseまたはnilであれば偽、それ以外は全てtrue

論理演算子の優先順位について
&&とand、||とor、!とnotは同じ意味だが優先順位に差が出る
&&など記号の方が優先順位が上

```qiita.rb
x = 1
y = 5
puts x < 2 && y > 3
puts x > 2 || y > 3
puts ! (x < 2) && (y > 3)
```
出力結果

```
Cloud9User:~/environment/qiita $ ruby qiita.rb 
true
true
false
```
解説：xに１を、yに５を代入
xは２より小さくyは３より大きい為、どちらも真である。よって出力はtrue
xは２より大きくないがyは３より大きい為、片方が真である。よって出力はtrue
xは２より小さくyは３より大きい為、どちらも真である。!で結果を反転させる為、出力はfalse

#まとめ
今回はRubyの基礎部分についてまとめました。内容が簡単で少し退屈かもしれませんが、勉強のまとめなのでご了承下さい。次回は条件式や繰り返し処理についてまとめていきます。