Ruby on railsとは？

# Railsの事前カリキュラム

## どんな記事？
ruby on railsとはなんなのか？ということ自分の中でアウトプットするための記事です、どうか暖かく見守ってください
## ruby on railsとは？
ruby on railsは簡単にいうとWebアプリケーション開発を開発するためのフレームワークです。<br>
ここではそもそもフレームワークが何なのかとrailsで使われているコーディングをするシステム(MVCモデル)、rubyとの違いを勉強していきます。

### フレームワーク
フレームワークとは、Webアプリケーションを機能させるために必要な共通部分を予め用意するものになります。<br>
アプリケーションの開発者は独自に必要なHTML/CSSやRubyの記述に時間を割くことができるので、開発効率が向上します。

### MVCモデル
Railsではユーザーからのリクエスト->ビュー->コントローラー→モデルの順番に処理が行われます。<br>
このようにモデル(model)とビュー(view)とコントローラー(controller)を使用して処理を行なうシステムをそれぞれの頭文字を取ってMVCモデルと呼ばれています。<br>
以下の図に処理の流れを簡単にまとめました。<br>
![MVC画像](https://res.cloudinary.com/ho9upjx8x/image/upload/v1557659768/%E9%81%A9%E5%BD%93%E3%81%AA%E5%86%99%E7%9C%9F/%E3%83%86%E3%82%99%E3%82%B5%E3%82%99%E3%82%A4%E3%83%B3%EF%BC%91.png "MVC画像")

### rubyとruby on railsの違い
よく間違えられるのですがRuby on Railsはプログラミング言語ではないです。<br>
プログラミング言語は、前テキストで学んでいただいたと思うのですが他にはpythonやJava,Cなどがありましてその名の通りプログラムを実装・実行するための言語です。<br>
例えば、前テキストでRubyを使い足し算や掛け算などの計算、条件に合わせたプログラムの実行、配列作成などを行なったと思います。<br>
一方でフレームワークであるRailsは足し算などをすることはできません。<br>

## ruby on railsでできること
### webアプリケーション開発
インターネット上に公開されているWebサイトはRuby, Ruby on Railsを使って作ることが可能です。<br>
RubyとRuby on Railsを使ってWebサイトを作るメリットはRuby on Railsというフレームワークによる開発スピードです。<br>
Ruby on Railsは非常によく出来たフレームワークで、Webアプリケーションの開発をするために最適化されたツールになります。<br>

ここではRuby, Ruby on Railsで開発されているwebサービスをいくつか紹介します。
<br>
#### クックパッド
![クックパッド画像](https://res.cloudinary.com/ho9upjx8x/image/upload/v1557645797/%E9%81%A9%E5%BD%93%E3%81%AA%E5%86%99%E7%9C%9F/cb9177780cf573a20ee1d72597afe29c.jpg "クックパッド画像")
  引用元：クックパッド https://cookpad.com/

#### マネーフォワード
![マネーフォワード画像](https://res.cloudinary.com/ho9upjx8x/image/upload/v1557645785/%E9%81%A9%E5%BD%93%E3%81%AA%E5%86%99%E7%9C%9F/a93b5fa1178ac642c22ce7223ed539b3.png "マネーフォワード画像")
  引用元：マネーフォワード https://moneyforward.com/

#### Airbnb
![Airbnb画像](https://res.cloudinary.com/ho9upjx8x/image/upload/v1557645776/%E9%81%A9%E5%BD%93%E3%81%AA%E5%86%99%E7%9C%9F/2b2a940e7b67bbe46a93095125192b42.jpg "Airbnb画像")
  引用元：Airbnb https://www.airbnb.jp/



### スマートフォンアプリ開発
iOSアプリの開発はobject-cやswift、Androidアプリの開発はJavaやKotlinが一般的です。<br>
しかしRubyでも「RUBYMOTION」(http://www.rubymotion.com/jp/)<br>
というソフトを使うことにより、AndroidアプリやiOSアプリを開発することが可能になります。

## ruby on railsの特徴

### 初心者に優しい
ruby on railsが初心者に優しい理由は主に２つあります

１つはシンプルにコーディングできることです。

Railsはコードが短く、簡単な書き方ができます。<br>
それによりコーディング量が少なくなり、短く速い開発を行うことができるメリットがあります。<br>
また次に説明するDRYの原則により、同じコードを何度も繰り返して使うことなく、規約に従った開発を行うことにより自分で設定を行うことなくコーディングを行えます。<br>
これはコードを読んだり書いたりすることの慣れていない初学者には大きなメリットになります。

２つ目はrubyが日本発祥の言語だということです。

これにより日本語の情報がオンラインで豊富に手に入ります。<br>
また、コミュニティが活発で初心者でも非常に学びやすい環境が整っています。<br>
例えばruby on railsを使ってオリジナルのアプリケーションを作っている中で遭遇したことのない様なエラーが出たとしても<br>
そのエラーに遭遇している人をオンライン上で見つけることが簡単なので素早くエラーを解決しアプリケーション開発を行うことができます。<br>


### DRY (Don’t Repeat Yourself)原則
Ruby on Railsには、「Don’t Repeat Yourself（繰り返しを避けよ）」というDRY原則という原則があります。<br>
DRY原則とは、自分でやった事を２度繰り返さないという意味です。<br>

同じことをソースコードやファイルの中で何度も記述すると、アプリケーションの仕様変更などがあった時に、一部を変更し忘れてしまう可能性があります。<br>
少しイメージがつきづらいと思うので例を出して説明していきたいと思います。<br>
例えば今ここで<br>

```
今hour時です       #hourは変数で中身は数字です
```

という文字列を100回出力したいとします、みなさんだったらどのようにコードを書くでしょうか？<br>
まさかputsメソッドを使って100回出力しないですよね、基本的にはwhileやfor文を使って繰り返しをさせます。<br>
ではなぜputsメソッドを使って100回出力させない方がいいのでしょうか？<br>
例えば上記の文字列を<br>

```
今hour時minutes分です       #minutesは変数で中身は数字です
```

に変更したいとしましょう、繰り返し構文を使っていないコードを変更するとしたら100回も変更を加えなければなりません。<br>
ただ繰り返しの構文を使っているとしたらその中の文字列１行を変更するだけですみます。<br>
このようにRuby on Railsでは、DRY原則を意識して開発することで、効率の良いアプリケーションを作成することができます。<br>



### 直感的にデータベースを操作することができる
そもそもデータベースとは？<br>
データベースとは一定の形式で整理されたデータの集まりです、現実世界にあるデータベースの例を出すとタウンページなどがわかりやすいと思います。<br>
タウンページは基本的に場所名＋電話番号が整理された形でずっと並んでいますよね。<br>
コンピューターの中にもタウンページのようにデータが整理され集合がありましてそれをデータベースと言います。<br>
一般的にデータベースを扱う場合、データベース言語「SQL」を書く必要があります。<br>
SQL言語とはデータベースを操作するための言語です。<br>
例えばTwitterなどを思い浮かべて見てください、Twitterにログインが成功した時には自分のユーザー情報が表示されますよね。<br>
これはユーザーの情報が入っているデータベースに対してSQL言語を書くことによってユーザー情報を表示することができています。<br>


ではこれを直感的に操作できるとはどういうことか<br>
例えば、データベースのproductsテーブルからプロダクトIDが1のデータを取得する場合、SQLを使うと以下のように書かなければいけません。

```
 SELECT * FROM products WHERE id = 1
```

しかしRailsアプリケーションでデータベースを扱う場合は、SQLを書く必要がなく

```
@product = Product.find(1)
```

という１行を記述するだけで、データを取得することができます。

これから学習していくテキストの中でもデータベースを扱う場面が多々あると思うのですが<br>
ruby on railsを使っていることで上記の様に直感的にデータベースを扱うことができるようになります。