[アウトプット用] 初心者が押さえるべき-Ruby,Rails用語集-

# オリジナルのWEB用語集

作成経緯として、プログラミングを学習して専門用語と衝突し何となくの理解や知識が浅はかである知識の理解を深めるのが狙い:writing_hand_tone2:

この発信の期待効果として、

* __人に教えるスキルを習得__
* __記憶力の定着__
* __頭の中が言語化され理解度UPを図る__
* __備忘録としての有効活用__


# Ruby,Railsって何？？

https://qiita.com/kinoshitaken123/items/918618618e4628a3ba4a

Ruby,Railsについて概要を押さえたい方はこちらを参照して下さい。

# WEB用語集　説明書
* 作者の躓き・理解の浅い分野のアウトプットリスト（初心者に教えるように心掛ける）
* アルファベット・５０音順
* 随時更新とする

# 更新履歴
8/25 オブジェクト、メソッド
8/26 CoC,DRY,MVC
8/27 DB,インスタンス変数
9/1  MVCモデルの利点
# CoC
CoCはConvention over Configuration（設定より規約）」の意味で、開発者が考えたり決定すべきことを極力少なくして、ロジックに集中させる思想。アプリケーションの設定を行うファイルや項目は、増えれば増えるほど仕組みが複雑化していきます。
CoCの思想を徹底することで、アプリケーションの実装に集中できるようになります。

Ruby on Railsは、このDRYやCoCの思想を徹底させることで、開発者の余計な手間を減らし、保守しやすいウェブアプリケーション開発環境を生み出しているのです。

# DB
データベース（Database, DB）」は、データを格納する保存先です。データベースを利用することで、データを効率的に保存したり、高速で検索できるようになります。Railsでは、これらのデータを「テーブル」にまとめ、複数のテーブルを関連付けて保存しています。
![スクリーンショット 2021-08-27 23.31.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1572216/432968f5-4dff-601f-1dc5-20214a5b8b74.png)
__テーブルを利用することで、情報が整理され、取り出しやすくなる。__

# DRY
DRYは、「Don't Repeat Yourself（同じ記述を繰り返さない）」の意味です。
同じコードや似たようなコードが、メンテナンスや修正がしにくくなります。個人的には可読性が低下に繋がります。
コードも同様に、似たようなコードを1ヵ所にまとめることで、修正が必要になったときでも1ヵ所を修正するだけで済ませられるので、ミスを最小限に抑えられます。

# to_s （文字列を他のクラスと連結）

to_sは、文字列を他のクラスのインスタンスと混ぜて処理したいときに有効です。

```ruby:age.rb
puts "私の年齢は" + 18 + "です"
```
実行すると「私の年齢は18です」と出力されて欲しいですが...

```
ruby: $ ruby age.rb
Traceback (most recent call last):
        1: from age.rb:1:in `<main>'
age.rb:1:in `+': no implicit conversion of Integer into String (TypeError)
```

実行するとエラー。なぜエラーになったのでしょう。
鍵を握るのは「文字列」です。

:point_up_tone1:前提知識として押さえておきたい事:point_up_tone1:

①Rubyでは様々な型が存在します。文字列(String)整数型(Integer)など...
②ダブルクォーテーション（"）で囲ったものは、文字列型として扱われ、
囲っていないものは、整数型として扱われます。
今回のプログラムをそれぞれ分けて考えてみると、以下のようになります。

```
puts "私の年齢は" + 18 + "です"
# "Samの年齢は" : 文字列型
# 18 : 整数型
# "です": 文字列型
```

<font color="Red">
age.rbでは、文字列型と整数型を連結しようとしています。
このように、型が違うものを+でつなげると今回のようなエラーが起こります。
+でつなげる際は、全て同じ型にする必要があります。
※エラー文の「no implicit conversion of Integer into String 」は、
整数型から文字列型に勝手に変換することはありません、という意味になります。
</font>

さて、目的の「私の年齢は18です」という表示するには、
整数型18が文字列になれば解決できそうです。
to_sメソッド、文字列以外のオブジェクトを文字列に変換するメソッドを用いることで解決です:smiley:

```ruby:age.rb
puts "私の年齢は" + 18.to_s + "です"
```

# MVC

Ruby on Railsは、MVC（Model View Controller：モデル ビュー コントローラ）という考え方で構成されています。ウェブアプリケーションでは、さまざまな処理が行われています。中でも、ユーザーインタフェースの処理は、データ処理とは性質が大きく異なります。両者を混ぜて記述してしまうと、コードが複雑になってわかりにくくなり、保守性が悪くなってしまいます。このため、Ruby on Railsでは、Model、View、Controllerの3つの処理パターンに分けて管理しています。

__Model（モデル）__
アプリケーション固有のデータを扱う部分です。データベース（後述）に対して、データの登録や取得、更新、削除などの処理を行います。

__View（ビュー）__
PCの画面（ユーザインタフェース）に関わる部分です。ブラウザに表示させるHTMLを実際に組み立てます。

__Controller（コントローラ）__
モデルやビューを統合的に制御する部分です。ユーザーからのリクエストを受けて、Modelと連携したり、どの画面（View）を表示するのかといったことを制御します。

このように、Ruby on Railsでは、プログラムの構造をMVCの役割によって分けることで、プログラムのメンテナンス性を向上させたり、複数人で開発するときに影響する箇所を限定できるようになっています

# MVCモデルの利点
* 開発、改修の文業がが容易になること

各要素が分離することで、各要素へ影響を及ぼさないため、要素ごとに個別に開発することが可能。近年のWebアプリケーションは規模が大きく、少しずつ機能追加が行われている。そのため、改修や機能追加が容易で、分業で開発しやすいMVCモデルが採用されている。

#　インスタンス変数
「インスタンス変数」は、クラスのオブジェクト（インスタンス）がもつ変数の1つです。
コントローラのインスタンス変数をViewと共有することで、コントローラからViewへのデータの受け渡しが行われます。
インスタンス変数に代入した値は、そのオブジェクトがある限り、オブジェクトとともに存在し続けます。
インスタンス変数の名前には、先頭に必ず@（アットマーク）を付ける。

```
class TodolistsController < ApplicationController
  def new
    # Viewへ渡すためのインスタンス変数に空のモデルオブジェクトを生成する。
    @list = List.new  end
end
```

# オブジェクト
Rubyでは、

* 文字列　(Hello)
* 数値(8)
* 変数
* 配列

すべての値がオブジェクトになっています。
オブジェクトは、操作対象の状態（データ）と便利な機能（メソッド）を1つにまとめたものです。

# メソッド
オブジェクトが持っている固有の機能や処理のことです。メソッドは、自分で定義することも可能です。
例えば、メソッドを使うことでこんなに便利に処理ができます
文字列　(Hello)　→ カウントメソッド　5文字
数値  (2.11)　　　→　　四捨五入するメソッド