ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ 3/全46 


#主な内容
[#03 MVCとは何か？](http://dotinstall.com/lessons/basic_rails/6503 "#03 MVCとは何か？")
Ruby on RailsはMVCフレームワークですよ
MVCはこんなものですよ
###MVC
Model: データに関するいろいろ
View: 見た目に関するいろいろ
Controller: ModelとViewをとりもつもの

#Ruby on Railsとは
詳しくみてみる。
Rubyを元に作られたMVCフレームワークで、Webアプリケーション（Webサービス）を効率的に開発するために揃えられたライブラリとツールのセットです。

そして、 **RubyとRuby on Railsは違うものだ！** ということは当然のこととして理解しておくべきです。
 **Rubyは「言語」** 、 **Ruby on Railsは「フレームワーク」**ですね。
ごっちゃにして話ていると恥ずかしいですね。

# MVCフレームワーク
順に追ってみます。
##・フレームワークとは
フレームワークとは直訳すると「枠組み」のことで、開発の世界では「ある特定種類のシステム（サービス）が最低限動作する枠組みとその動作や開発の際に頻繁に必要とされる汎用的な機能を提供するソフトウェア」のことです。アプリケーションの土台ですね。

##・MVCとは
以下の3つのに分割して設計・実装するという技法、またはそのような構造、またはそのような概念のこと。
###- Model
アプリケーションで扱うデータに関する規約を記述します。
その規約に準じてModelがデータベースからデータを持ってきます。
Modelはあくまでも **「データの規約を扱うだけ」**です。
###- View
ユーザーインターフェースを生成するコードを記述します。
Controllerが操作したデータを表示するコードを記述します。
Viewはあくまでも **「表示するだけ」**です。
###- Controller
処理のメインコード的なものです。
 **Viewからユーザーの操作や入力を受け取り**、
その **操作や入力に応じてModelやViewを選択し**、 
**Modelから受け取ったデータを目的の形に整形し、
Viewに渡す**。
といった流れです。
Controllerはなるべく **簡潔に、少ない量に**することが望ましいです。そのためにはヘルパーやライブラリを多分に使用して書くことが重要です。（だからといって、ViewやModelにControllerに書くべき処理を書くというのはよろしくないです。だからこそのヘルパーやライブラリですね。）
>####- ん？ヘルパー とか ライブラリ ってなに？？？
**ヘルパー** とは **複数のコントローラで共通して使う機能を書く** 場所
**ライブラリ** とは **一度しか使わない機能を書く** 場所

以上のModel, View, Controllerの頭文字をもじってMVCですね。

###・で、MVCフレームワークとは？
このMVCという概念を使ったある特定種類のシステム（サービス）が最低限動作する枠組みとその動作や開発の際に頻繁に必要とされる汎用的な機能を提供するソフトウェアのことです。
Railsだけでなく、FuelPHPなどの他のフレームワークにも採用されています。

##2-2-3 Ruby on Railsのまとめ
Rubyで動くMVCフレームワークです。

さらに言えば、Rubyで動くMVCという概念を使ったWEBアプリケーション（WEBサービス）が最低限動作する枠組みとその動作や開発の際に頻繁に必要とされる汎用的な機能を提供するソフトウェアのことです。

#メモ一覧
1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (1〜2)/全46](http://qiita.com/hirokishirai/items/34d26a40f99425333f79 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (1〜2)/全46")
>[#01	Ruby on Railsとは何か？](http://dotinstall.com/lessons/basic_rails/6501 "#01	Ruby on Railsとは何か？")
[#02	必要となるツールを揃えよう](http://dotinstall.com/lessons/basic_rails/6502 "#02	必要となるツールを揃えよう")
>
>* Ruby on Railsはこんなものですよ
>* 必要な情報はここら辺で集まりますよ
>* 必要な知識にはこんなものがありますよ
>* 開発環境はこんな感じですよ

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ 3/全46](http://qiita.com/hirokishirai/items/e0d3a7aa1de02ca2dbfc "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ 3/全46")
>[#03	MVCとは何か？](http://dotinstall.com/lessons/basic_rails/6503 "#03	MVCとは何か？")
>
>* Ruby on RailsはMVCフレームワークですよ
>* MVCはこんなものですよ

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (4〜8)/全46](http://qiita.com/hirokishirai/items/0038bbe5cd35ca92d60f "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (4〜8)/全46")
>[#04 はじめてのRailsプロジェクト](http://dotinstall.com/lessons/basic_rails/6504 "#04 はじめてのRailsプロジェクト")
[#05 ファイル構成をみていこう](http://dotinstall.com/lessons/basic_rails/6505 "#05 ファイル構成をみていこう")
アプリケーションを作成する基本的な流れを覚えましょう
>
>[#06 Webサーバーを立ち上げよう](http://dotinstall.com/lessons/basic_rails/6506 "#06 Webサーバーを立ち上げよう")
作成したWebアプリケーションをどうささせてみましょう
>
>[#07 scaffoldを使ってみよう (1)](http://dotinstall.com/lessons/basic_rails/6507 "#07 scaffoldを使ってみよう (1)")
[#08 scaffoldを使ってみよう (2)](http://dotinstall.com/lessons/basic_rails/6508 "#08 scaffoldを使ってみよう (2)")
DB、Model、View、Controllerの作成、URLの設定をしてみましょう

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (9〜13)/全46](http://qiita.com/hirokishirai/items/3c756d65fa837f765dc9 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (9〜13)/全46")
>[#09 ブログシステムを作ろう](http://dotinstall.com/lessons/basic_rails/6509 "#09 ブログシステムを作ろう")
[#10	新しいプロジェクトを作ろう](http://dotinstall.com/lessons/basic_rails/6510 "#10	新しいプロジェクトを作ろう")
[#11	Postモデルを作ろう](http://dotinstall.com/lessons/basic_rails/6511 "#11	Postモデルを作ろう")
[#12	Postsコントローラーを作ろう](http://dotinstall.com/lessons/basic_rails/6512 "#12	Postsコントローラーを作ろう")
[#13	ルーティングの設定をしよう](http://dotinstall.com/lessons/basic_rails/6513 "#13	ルーティングの設定をしよう")
Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）
プロジェクト、Model、Controllerを作成し、ルーティングの設定をしよう

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (14〜21)/全46](http://qiita.com/hirokishirai/items/9c9b02311a95fb6a2e5d "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (14〜21)/全46")
>[#14	デバッグに使えるコンソールについて](http://dotinstall.com/lessons/basic_rails/6514 "#14	デバッグに使えるコンソールについて")
[#15	コントローラーのメソッドについて](http://dotinstall.com/lessons/basic_rails/6515 "#15	コントローラーのメソッドについて")
[#16	記事の一覧を表示する (1)](http://dotinstall.com/lessons/basic_rails/6516 "#16	記事の一覧を表示する (1)")
[#17	記事の一覧を表示する (2)](http://dotinstall.com/lessons/basic_rails/6517 "#17	記事の一覧を表示する (2)")
[#18	リンクを貼ってみよう](http://dotinstall.com/lessons/basic_rails/6518 "#18	リンクを貼ってみよう")
[#19	HTMLテンプレートを変更しよう](http://dotinstall.com/lessons/basic_rails/6519 "#19	HTMLテンプレートを変更しよう")
[#20	ロゴ画像を表示させてみよう](http://dotinstall.com/lessons/basic_rails/6520 "#20	ロゴ画像を表示させてみよう")
[#21	記事一覧画面をrootにしてみよう](http://dotinstall.com/lessons/basic_rails/6521 "#21	記事一覧画面をrootにしてみよう")
>
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
`rails console`とか、`rails dbconsole`なんかの便利なツールがありますよ
コントローラーのメソッドと、それに対応するViewを作っていきましょう
>
>Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（まずは１つ）

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (22〜23)/全46](http://qiita.com/hirokishirai/items/ba9bea6679ca1a1f8629 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (22〜23)/全46")
>[#22	記事の詳細を表示する (1)](http://dotinstall.com/lessons/basic_rails/6522 "#22	記事の詳細を表示する (1)")
[#23	記事の詳細を表示する (2)](http://dotinstall.com/lessons/basic_rails/6523 "#23	記事の詳細を表示する (2)")
>
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* コントローラーのメソッドと、それに対応するViewを作っていきましょう（続き）
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（続き - show）

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (24〜30)/全46](http://qiita.com/hirokishirai/items/979a1ca68716698ec103 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (24〜30)/全46")
>
[#24 新しい記事を追加しよう (1)](http://dotinstall.com/lessons/basic_rails/6524 "#24 新しい記事を追加しよう (1)")
[#25	新しい記事を追加しよう (2)](http://dotinstall.com/lessons/basic_rails/6525 "#25	新しい記事を追加しよう (2)")
[#26	新しい記事を追加しよう (3)](http://dotinstall.com/lessons/basic_rails/6526 "#26	新しい記事を追加しよう (3)")
[#27	バリデーションを設定しよう](http://dotinstall.com/lessons/basic_rails/6527 "#27	バリデーションを設定しよう")
[#28	バリデーションエラーを表示しよう](http://dotinstall.com/lessons/basic_rails/6528 "#28	バリデーションエラーを表示しよう")
[#29	フラッシュメッセージを表示する](http://dotinstall.com/lessons/basic_rails/6529 "#29	フラッシュメッセージを表示する")
[#30	メッセージをjQueryで消す](http://dotinstall.com/lessons/basic_rails/6530 "#30	メッセージをjQueryで消す")
>
Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* コントローラーのメソッドと、それに対応するViewを作っていきましょう（続き）
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（続き - new,create）
>
>記事のタイトル一覧を表示するindexメソッド、その記事を表示するshowメソッドは完成したので次はその記事を表示するページが欲しいですね。ということでnewメソッド（新規作成フォーム）を作ります。また、フォームから送信されたデータを処理して新しい記事を作成するcreateメソッドも作成します。
>
バリデーション（検査）の設定をやってみよう（実践的）

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (31〜33)/全46](http://qiita.com/hirokishirai/items/3c0552e258b2f7d5defc "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (31〜33)/全46")
>
[#31	記事を更新してみよう (1)](http://dotinstall.com/lessons/basic_rails/6531 "#31	記事を更新してみよう (1)")
[#32	記事を更新してみよう (2)](http://dotinstall.com/lessons/basic_rails/6532 "#32	記事を更新してみよう (2)")
[#33	記事を更新してみよう (3)](http://dotinstall.com/lessons/basic_rails/6533 "#33	記事を更新してみよう (3)")
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* コントローラーのメソッドと、それに対応するViewを作っていきましょう（続き）
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（続き - edit, update）
>
>記事のタイトル一覧を表示するindexメソッド、その記事を表示するshowメソッド、記事の新規作成フォームを作成するnewメソッド、記事を作成するcreateメソッドは完成したので次はその記事を編集するページが欲しいですね。ということでeditメソッド（記事編集フォーム）を作ります。また、フォームから送信されたデータを処理して記事を上書きするupdateメソッドも作成します。
1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (34〜36)/全46](http://qiita.com/hirokishirai/items/cf4cc479b09d35501fc3 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (34〜36)/全46")
>
[#34	記事を削除してみよう](http://dotinstall.com/lessons/basic_rails/6534 "#34	記事を削除してみよう")
[#35	削除処理をAjax化しよう (1)](http://dotinstall.com/lessons/basic_rails/6535 "#35	削除処理をAjax化しよう (1)")
[#36	削除処理をAjax化しよう (2)](http://dotinstall.com/lessons/basic_rails/6536 "#36	削除処理をAjax化しよう (2)")
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* コントローラーのメソッドと、それに対応するViewを作っていきましょう（続き）
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（続き - destroy）
>
>記事のタイトル一覧を表示するindex、その記事を表示するshow、記事の新規作成フォームを作成するnew、記事を作成するcreate、記事を編集するeditは完成したので次はその記事を削除するページが欲しいですね。ということでdestroyを作ります。

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (37〜46)/全46](http://qiita.com/hirokishirai/items/a25da39da0e6b32246ed "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (37〜46)/全46")
>
[#37	Commentモデルを作ろう](http://dotinstall.com/lessons/basic_rails/6537 "#37	Commentモデルを作ろう")
[#38	Commentsコントローラーを作ろう](http://dotinstall.com/lessons/basic_rails/6538 "#38	Commentsコントローラーを作ろう")
[#39	コメントを表示させよう](http://dotinstall.com/lessons/basic_rails/6539 "#39	コメントを表示させよう")
[#40	コメントを投稿してみよう (1)](http://dotinstall.com/lessons/basic_rails/6540 "#40	コメントを投稿してみよう (1)")
[#41	コメントを投稿してみよう (2)](http://dotinstall.com/lessons/basic_rails/6541 "#41	コメントを投稿してみよう (2)")
[#42	バリデーションを設定しよう](http://dotinstall.com/lessons/basic_rails/6542 "#42	バリデーションを設定しよう")
[#43	コメントを削除してみよう (1)](http://dotinstall.com/lessons/basic_rails/6543 "#43	コメントを削除してみよう (1)")
[#44	コメントを削除してみよう (2)](http://dotinstall.com/lessons/basic_rails/6544 "#44	コメントを削除してみよう (2)")
[#45	コメント件数を表示してみよう](http://dotinstall.com/lessons/basic_rails/6545 "#45	コメント件数を表示してみよう")
[#46	Railsを日本語化しよう](http://dotinstall.com/lessons/basic_rails/6546 "#46	Railsを日本語化しよう")
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* 新しい機能（Comment）を追加させましょう
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。