Railsの基礎を学ぼう(。-`ω-)

Ruby on Railsの基本的な概念を理解しよう!

Railsとは?

Ruby on Railsは、Rubyで書かれたWebアプリケーションフレームワークです。

例えるなら 「システム開発の『高級システムキッチン!!』」

ゼロからカマドを作ったり、調理器具を鉄から打って作る必要はありません。Railsには、プロのシェフ(開発者)が必要とする「コンロ」「冷蔵庫」「調理器具」があらかじめ最適な配置で用意されています!

そのため、私たちは「料理(アプリの機能)」を作ることにだけ集中すれば良いのです(`・ω・´)

↓ 以下のコマンド一発で、そのキッチンセット(アプリの土台)を用意できます ↓

$ rails new myapp
Creating new Rails application...

基本的なコマンド

Railsで開発するときによく使うコマンドをおさえておきましょう!

$ rails server

サーバーを起動 - お店をオープンするイメージで、これでブラウザからアクセスできるようになります!
起動後は'http://localhost:3000/'でアクセス可能です。

$ rails generate

コードを生成 - 新しい機能の雛形を自動で作ってくれます!
例: rails generate controller Welcome

$ rails console

コンソールを起動 - 裏側でデータベースと対話したり、実験したりするための場所。
Rubyのコードを直接試すことができます。

Tips: コマンドには短縮形があります!
rails s (server)、 rails g (generate)、 rails c (console) と入力できます。

MVCフレームワークとは??(゜-゜)

MVCとはModel・View・Controllerの頭文字で、「役割分担をして開発しましょう」という設計思想です。
RailsはこのMVCを採用しています!

レストランで例えると...

User(Webブラウザ)

お客さん

Controller

店長(ウェイター)

Model

シェフ・食材庫番

View

盛り付け係

[ 注文の流れイメージ ]

  1. 1. User:「オムライスください(URLにアクセス)」
  2. 2. Controller(店長):「オーダー入りました!Modelさん、卵と米(データ)をお願い!」
  3. 3. Model(シェフ):「あいよ!(DBからデータを取り出し、加工して店長に渡す)」
  4. 4. Controller(店長):「ありがとう。次はViewさん、これをお皿に綺麗に盛って!」
  5. 5. View(盛り付け):「了解!(HTMLというお皿にデータを載せてページを作る)」
  6. 6. Controller(店長):「へいお待ち!(Userに画面を表示)」

技術的な役割分担

[Webブラウザ] ---Request---> [Controller]
[Controller] <---Data---> [Model] <---SQL---> [DB]
[Controller] ---Data---> [View] ---HTML---> [Webブラウザ]

Model = データ担当

View = 見た目担当

Controller = 司令塔

この図式は、開発しながら徐々に体感で分かってきます。筆者もアプリを作りながら「仕事が早い君が店長か!見た目がおいしそうだ、君が盛り付け役か!おいしすぎる、君がシェフか!」と理解しました(*‘ω‘ *)

Railsアプリのフォルダの役割は??(゜-゜)

$ rails new でアプリを作ると大量のファイルが生成されます。
「うっ、何この大量のファイルたち!」と焦る必要はないです。
まずは以下の主要な場所だけ覚えればOKです!

家の間取りで例えると...

app/

【リビング・居住スペース】

私たちがコードを書くメインの場所です。

models/ - データ担当(Model)の部屋

views/ - 見た目担当(View)の部屋

controllers/ - 司令塔(Controller)の部屋

config/

【設計図・ルールブック】

アプリ全体の設定を置く場所です。

特に routes.rb は「URLとControllerを繋ぐ地図」のような超重要ファイルです。

db/

【倉庫】

データベースに関するファイルが入ります。

Gemfile

【道具カタログ】

アプリで使うライブラリ(Gem)を管理するリストです。

bin/

【道具類】

railsコマンドなどの実行ファイル置き場です(普段あまり触りません)。