「Ruby on Rails 4 アプリケーションプログラミング」を一読。気づいたことなど書き綴ります。
Rails(アプリケーションフレームワーク)とは何か
「それで、Railsって何なんですか?」といつの日か聞かれるかもしれない…。何なんだふれぃむわーくって…?となる前に目を通しておきたい。
- Rails = アプリケーションフレームワーク
- PCのマザーボードのようなもの
- ひとつのアプリケーションを作るのに最適な既成の枠組み
- 個々の開発者が枠組みに対してパーツを付与し完成させる
- アプリケーション自体が開発者の用意したコードを適切に実行する
- 主導権がアプリケーションにあり開発者は規約にそって開発する
※フレームワークには以下の様なメリットがある。
-
開発生産性の向上
すべての開発者が一定の規約にしたがって開発するために一貫性の担保が可能。かつ機能単位に役割分担しやすい。
-
メンテナスの容易さ
コードに一貫性があるため可読性が向上する。またアプリケーション間の統合や分離も比較的容易に実現できる。
-
品質の担保
オープンソースで公開されているフレームワークは大勢の開発者の目に晒され、テストされているため相対的に高い信頼性を期待できる。
Railsに通底する2つの概念
Railsを使用した開発を行っていると必ず耳にする2つの哲学。意味も説明できずに「DRYじゃないよね〜」とか口ずさむ大人にはなりたくない。
-
DRY
(Don't Repeat Yourself)
「同じ記述を繰り返さない」ソースコードの中で同じような処理や定義を記述することを極度に嫌う傾向にある。例えばデータベースにテーブルを作成するときには構造定義を記述する必要がない。Railsが自動的に認識してくれる部分が多くある。
-
CoC
(Convention over Configuration)
「設定よりも規約」Railsが予め用意している名前付けのルールを表す場合が多い。usersテーブルを利用する際にUserクラスを作るだけで関連付けされるのはRailsの規約に依る。
Railsの構成要素たち
Railsにはアプリケーション開発を支える様々な機能や初期設定が組み込まれています。1つのメソッドを当たり前のように使えるのもRailsの涙ぐましい努力のおかげ…かも。
【予備知識:MVCとは】
RailsのアプリケーションはMVCモデルに則る。
◆ Model :ビジネスロジック
◆ View :ユーザーインターフェース
◆ Controller :全体の管理
簡潔に言うと、
◆ モデルはデータの保存や取り出し等の操作をし
◆ ビューは処理結果に応じて個別のページを描画し
◆ コントローラーはリクエストに応じてそれらを適切に管理する
という役割分担のなされた構造である。
これによりデザイン面・ロジック面共同での開発も容易になる。
-
Action Pack
-
Action Controller
Controllerの管理。リクエスト処理等を司る。
-
Action View
HTMLなど各種フォーマットでのユーザー側へのレスポンスを生成する。ビュー開発に役立つレイアウト機能やヘルパーも提供。
-
Action Dispatch
リクエストをどこで処理するか決定するルーティング機能を提供。
-
-
Active Model
命名規則などModelの基本的な規約を定義する。
-
Active Record
データベースアクセスのための基本機能を提供する。
-
Active Mailer
メールの送受信を管理する。
-
Active Support
Ruby標準ライブラリの拡張を担う。
-
Railties
Railsの各種構成要素等を繋ぎ合わせるRailsの中心核。
Railsアプリケーションの中身
Railsで開発しようとした時に必ず通る道 rails new
。ところでこいつら何なんだ?ってファイルはありませんか?
-
/app :
アプリケーションのメインフォルダ
- /assets
画像/javascript/cssファイルなどのリソース
- /images -> 画像ファイル
- /javascripts -> Javascript(CoffeeScript)ライブラリ
- /stylesheets -> CSS(SCSS)ライブラリ
- /controllers
コントローラクラス
- /concerns -> コントローラ共通モジュール
- application_controller.rb -> アプリケーション共通のコントローラ
- /helpers
ビューヘルパー
- application_helper.rb -> アプリケーション共通のビューヘルパー
- /mailers
Action Mailer実装クラス
- /models
モデルクラス
- /concerns -> モデル共通モジュール
- /views
ビュースクリプト
- /layouts -> レイアウト
- application.html.erb -> アプリケーション共通のレイアウト
- /assets
/bin :
コード生成や開発サーバの起動に関するヘルパー
-
/config :
アプリケーション本体・ルーティング等の設定情報
- /environments
環境単位の設定ファイル
- /initializers
初期化ファイル
- /locales
辞書ファイル
- /environments
/db :
DB本体やスキーマ情報・マイグレーションファイル
-
/lib :
自作のライブラリなど
- /assets
自作ライブラリに関するアセット
- /task
タスク関連
- /assets
/log :
ログの出力先
/public :
公開フォルダ
/test :
テストスクリプトなど
/tmp :
一時ファイル
-
/vendor :
サードパーティーのコード
- /assets
サードパーティから提供されるアセット
- /assets
config.ru :
アプリケーションのエントリポイント
Gemfile :
必要なgemファイルを定義
Rakefile :
ターミナルから実行可能なジョブ
README :
readmeファイル
最後の方の雑感…(´・ω・`)