LoginSignup
41

More than 5 years have passed since last update.

今さら人に聞けなくなってきた時のRailsのキホン

Last updated at Posted at 2015-07-26

「Ruby on Rails 4 アプリケーションプログラミング」を一読。気づいたことなど書き綴ります。

Rails(アプリケーションフレームワーク)とは何か

「それで、Railsって何なんですか?」といつの日か聞かれるかもしれない…。何なんだふれぃむわーくって…?となる前に目を通しておきたい。

  • Rails = アプリケーションフレームワーク
  • PCのマザーボードのようなもの
  • ひとつのアプリケーションを作るのに最適な既成の枠組み
  • 個々の開発者が枠組みに対してパーツを付与し完成させる
  • アプリケーション自体が開発者の用意したコードを適切に実行する
  • 主導権がアプリケーションにあり開発者は規約にそって開発する

※フレームワークには以下の様なメリットがある。

  1. 開発生産性の向上

    すべての開発者が一定の規約にしたがって開発するために一貫性の担保が可能。かつ機能単位に役割分担しやすい。

  2. メンテナスの容易さ

    コードに一貫性があるため可読性が向上する。またアプリケーション間の統合や分離も比較的容易に実現できる。

  3. 品質の担保

    オープンソースで公開されているフレームワークは大勢の開発者の目に晒され、テストされているため相対的に高い信頼性を期待できる。

Railsに通底する2つの概念

Railsを使用した開発を行っていると必ず耳にする2つの哲学。意味も説明できずに「DRYじゃないよね〜」とか口ずさむ大人にはなりたくない。

  1. DRY (Don't Repeat Yourself)
    「同じ記述を繰り返さない」

    ソースコードの中で同じような処理や定義を記述することを極度に嫌う傾向にある。例えばデータベースにテーブルを作成するときには構造定義を記述する必要がない。Railsが自動的に認識してくれる部分が多くある。

  2. CoC (Convention over Configuration)
    「設定よりも規約」

    Railsが予め用意している名前付けのルールを表す場合が多い。usersテーブルを利用する際にUserクラスを作るだけで関連付けされるのはRailsの規約に依る。

Railsの構成要素たち

Railsにはアプリケーション開発を支える様々な機能や初期設定が組み込まれています。1つのメソッドを当たり前のように使えるのもRailsの涙ぐましい努力のおかげ…かも。

【予備知識:MVCとは】

    RailsのアプリケーションはMVCモデルに則る。

    ◆ Model       :ビジネスロジック
    ◆ View        :ユーザーインターフェース
    ◆ Controller  :全体の管理

    簡潔に言うと、

    ◆ モデルはデータの保存や取り出し等の操作をし
    ◆ ビューは処理結果に応じて個別のページを描画し
    ◆ コントローラーはリクエストに応じてそれらを適切に管理する

    という役割分担のなされた構造である。
    これによりデザイン面・ロジック面共同での開発も容易になる。
  1. Action Pack

    • Action Controller

      Controllerの管理。リクエスト処理等を司る。 

    • Action View

      HTMLなど各種フォーマットでのユーザー側へのレスポンスを生成する。ビュー開発に役立つレイアウト機能やヘルパーも提供。

    • Action Dispatch

      リクエストをどこで処理するか決定するルーティング機能を提供。

  2. Active Model

    命名規則などModelの基本的な規約を定義する。

  3. Active Record

    データベースアクセスのための基本機能を提供する。

  4. Active Mailer

    メールの送受信を管理する。

  5. Active Support

    Ruby標準ライブラリの拡張を担う。

  6. Railties

    Railsの各種構成要素等を繋ぎ合わせるRailsの中心核。

Railsアプリケーションの中身

Railsで開発しようとした時に必ず通る道 rails new 。ところでこいつら何なんだ?ってファイルはありませんか?

  1. /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 -> アプリケーション共通のレイアウト
  2. /bin :コード生成や開発サーバの起動に関するヘルパー

  3. /config :アプリケーション本体・ルーティング等の設定情報

    • /environments 環境単位の設定ファイル
    • /initializers 初期化ファイル
    • /locales 辞書ファイル
  4. /db :DB本体やスキーマ情報・マイグレーションファイル

  5. /lib :自作のライブラリなど

    • /assets 自作ライブラリに関するアセット
    • /task タスク関連
  6. /log :ログの出力先

  7. /public :公開フォルダ

  8. /test :テストスクリプトなど

  9. /tmp :一時ファイル

  10. /vendor :サードパーティーのコード

    • /assets サードパーティから提供されるアセット
  11. config.ru :アプリケーションのエントリポイント

  12. Gemfile :必要なgemファイルを定義

  13. Rakefile :ターミナルから実行可能なジョブ

  14. README :readmeファイル


最後の方の雑感…(´・ω・`)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41