記事一つでわかるRuby

# 言語の種類
まず初めにプログラミング言語の種類について深ぼっていきます。
プログラミング言語は大きく分けて下記の二つに分かれます。
### フロントエンド言語
フロントエンド言語とはwebサイトの見た目の部分を司る言語となります。
これも、厳密に言うと大きく二つに分類されます。
<b>マークアップ言語</b>
見た目の部分を作り込む言語。HTMLとCSSのことを指します。
<b>プログラミング言語</b>
フロントエンド言語の中のプログラミング言語は主にJavascriptがあります。
Javascriptは、動的なwebサイトを実現するときによく採用される言語です。

### バックエンド言語(サーバーサイド言語)
フロントエンドが見た目の部分を司るのに対し、こちらは内部の構造を司るものになる。例えば、自動販売機にお金を入れオレンジジュースのボタンを押すとお金が計算され、ジュースとお釣りが出てくるような物です。
こちらは、フロントエンド言語と違い全てプログラミング言語となります。
それぞれ、言語には特化したものがありニーズに合わせて使い分けるのが良い。
例)python、ruby、java、C、C#、C++、PHP等

#フレームワークとは
フレームワークとは、簡単に言えばプログラミングの言語を使うための便利ツールのような物です。本来であれば、膨大な量のコードを書かなければいけないのに対し、フレームワークを使用することで、簡単にシステムを開発することができます。
### Ruby on Rails
Rubyのフレームワーク。開発を効率化する仕組みが多数用意されているため生産性が高い。

### Laravel
PHPのフレームワーク。手軽さや扱いやすさから人気を集め最近ではよく使用されるようになっている。

上記以外にも多数のフレームワークが存在するがここでは省略します。

# 今回学んだ言語
題名の通り今回学んだ言語はRubyとなります。Rubyは習得が比較的簡単かつ最近注目されてきている言語の一つである。

# 文字,数字の出力、計算

・文字の出力

```ruby
puts "文字が出力される"

文字が出力される #出力結果　
```

・数字の出力

```ruby
puts 10

10 #出力結果
```

・計算の出力

```ruby
puts 5 + 5
10 #出力結果(足し算を行う)

puts 5 - 5
0 #出力結果(引き算を行う)

puts 5 * 5
25 #出力結果(掛け算を行う)

puts 5 / 5
1 #出力結果(割り算を行う)

puts 5 % 5
0 #出力結果(割り算の余りを出す)

# 組み合わせも可能
puts (5 + 5) * 5
50 #出力結果
```

# 変数
変数とは簡単に言えば数学における代入と同じです。
例えば、aに数字の10を代入したいときは以下のようなコードで記します。

```ruby
a = 10
puts a
10 #出力結果
```
変数には文字列であったり四則計算も代入することができます。変数における＝は等しいではなく、代入を指します。

# 条件分岐処理(if文)
条件分岐の処理を行いたいときはif文を用いて行います。

```ruby
#条件分岐がないの場合
if "条件"
  "処理の内容"
end

#条件分岐がある場合
if "条件"
  "処理の内容"
else
  "処理の内容"
end

#条件分岐が複数の場合
if "条件"
  "処理の内容"
elsif "条件"
  "処理の内容"
else
  "処理の内容"
end
```
ここで重要なのが必ずendをつけること。付けないと、どこで処理が終わって良いのかわからず、エラーが発生してしまいます。
条件には下記のような内容を記載します。

```ruby
#AとBが等しいかどうか(=ではなく必ず==にすること)
A == B

#AはB以下かどうか
A <= B

#AはB未満またはAはC以上かどうか(||でまたはを意味する。複数つけることも可能)
A < B || A >= C

#AはBより大きいかつAとCが等しいかどうか(&&でかつを意味する。複数つけることも可能)
A > B && A == C
```
<b>&と&&、|と| |の違い</b>
&は共通する要素を出力し、&&はtrueかfalseを出力する。
同様に|は和集合の値を出力し、||はtrueかfalseを出力する。

#繰り返し処理(timesメソッド、whileメソッド、eachメソッド等)
繰り返しの処理を行いたいときは、様々な方法があるが代表的なものをあげると、times文、while文、each文などがある。

### timesメソッド
回数を指定する時に用いる

```ruby
3.times do
  puts "アイウ"
end

アイウアイウアイウ #出力結果
```

### whileメソッド
条件式を用いて、それが真で有る限り繰り返す

```ruby
num = 0
while num < 5
  puts num
  num += 1
end

#出力結果
0
1
2
3
4
```

### eachメソッド
eachメソッドは使う頻度がかなり多く、繰り返し処理の中で最も使われていると言っても過言ではないです。のちに出てくる配列を用いるため、そちらと照らし合わせて確認するのをお勧めします。

```ruby
nums = [a,b,c,d,e]
nums.each do |num|
 puts num
end
# 出力結果
a
b
c
d
e
```
変数numsに代入した値を順に繰り返し変数numに代入していきながら、処理を繰り返し、全ての値が終了した時、処理が終わります。

# 配列とハッシュについて

### 配列
配列とは、複数の値をまとめて管理する時に用います。
配列は変数に代入することもできる。

```ruby
lists = [a,b,c,d,e]

puts lists[0]
a #出力結果

puts lists[4]
e #出力結果
```
配列は左から順番に0から数字が割り当てられ、出力の際は上記のように記載する。

### ハッシュ
ハッシュは配列と一見似ているが、簡単に言えば辞書のようなものです。
ハッシュにはキーとバリューというものが存在していて、それらで管理するこの方式をキーバリューストアといいます。こちらも変数に代入可能です。コードの記述の仕方は以下の三つとなります。

```ruby
lists = { "key" => "value" }
lists = { :key => "value" }
lists = { key : "value" }

puts lists[key]
```
上記のように出力を行う。

※配列とハッシュは組み合わせることも可能。

#メソッド、class(クラス)、インスタンスについて
### メソッド
メソッドとは今までも条件分岐であったり、繰り返し処理を行う時に使用してきましたが、簡単な処理の塊と覚えると楽です。
メソッドは自分で作成することも可能でその際は、defメソッドを使用します。

```ruby
def "変数名"
  "メソッドの処理"
end

def "変数名"("引数1", "引数2")
  "メソッドの処理"
end
```
defで指定したメソッドは変数名を記載することで呼び出すことができます。また引数というものを指定することで、スコープの外の変数を使用することができるようになります。

<b>スコープ</b>
スコープとは、変数を扱える範囲のことです。メソッド内で定義した変数はメソッド外で使用することができないのと同時に、メソッドを定義した後に記述した変数はメソッド内では使用できません。それらの範囲のことを専門用語としてスコープと呼びます。
<b>引数</b>
引数とは、スコープ外の変数を使用したい時に用います。例えば、引数を指定することで、引数の値により処理内容を変化させることができるので汎用性が上がります。

### class(クラス)
クラスとは簡単に説明すると沢山のメソッドをまとめた箱のようなものです。
クラスを指定してあげることで、コードの可読性が上がったり、保守がしやすくなります。よく設計図と言い表されることがあります。

```ruby
class "クラス名"{
  def "変数名"
  end
  def "変数名"
  end
}
```
上記のように記載します

### インスタンス
簡単に説明すると、classの中に定義したメソッドを呼び出すためのもの。変数名.newをクラス外に記載することで、使用可能になる。

```ruby
class "Item"{
  def "hello"
    puts "こんにちは"
  end
  def "変数名"
  end
}

item = Item.new
item.hello

こんにちは # 出力結果
```
上記のようにインスタンスの生成を行う。

# まとめ

まだまだ、rubyで行えることはたくさんありますが、量があまりにも膨大なため今回はここまでとします。ここまでの内容は基礎の範囲なので、必ず抑えておきたいポイントだと思いました。次回はRubyのフレームワークのRuby on Railについての記事を書いていきます。