第1回 Railsアプリケーションの流れ:ルーティングからビューまで

Ruby on Railsは、Model-View-Controller (MVC) アーキテクチャを基礎にしている。このフレームワークは、ウェブアプリケーションの開発を合理化し、各コンポーネント間の責任を明確に分離する。ここでは、ユーザーのリクエストからレスポンスまでの流れと、スタイルシートJavaScriptなどのアセットがどのように扱われるかを詳しく見ていく。

ルーティング

すべてのリクエストは、まず**config/routes.rb**で定義されたルーティングを通過する。ここでは、URLをコントローラーのアクションにマッピングし、どのコントローラーが対応するかを決定する。

コントローラー

ルーティングによって適切なコントローラーが選ばれると、そのアクション(メソッド)が実行される。コントローラーはモデルからデータを取得し、それをビューに渡す役割を担う。

ビュー

コントローラーから受け取った情報を元に、ビューがHTMLを生成します。Railsでは、ビューのレイアウトが**app/views/layouts/application.html.erbに設定されており、ここが全ビューの骨組みとなる。ビューの中身は、yieldメソッドによって、特定のビューテンプレート(例えばapp/views/products/index.html.erb**など)から挿入される。

<!DOCTYPE html>
<html>
  <head>
    <title>Pictweet</title>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
    <%= javascript_importmap_tags %>
  </head>

  <body>
    <%= yield %>
  </body>
</html>

CSSファイル

CSSの管理は、アセットパイプラインが担う。**app/assets/stylesheets/application.cssは、マニフェストファイルとして機能し、このファイル内に列挙されたCSSファイル(*= require_tree .**でディレクトリ内のすべてのCSSファイルを含めることができる)がブラウザに送信される前に一つに結合される。

/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS (and SCSS, if configured) file within this directory, lib/assets/stylesheets, or any plugin's
 * vendor/assets/stylesheets directory can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the bottom of the
 * compiled file so the styles you add here take precedence over styles defined in any other CSS
 * files in this directory. Styles in this file should be added after the last require_* statement.
 * It is generally better to create a new file per style scope.
 *
 *= require_tree .
 *= require_self
 */

アセットパイプライン

アセットパイプラインは、CSSJavaScriptのファイルを圧縮し、ブラウザにキャッシュするように設定することで、アプリケーションのパフォーマンスを最適化する。本番環境では、これらのファイルは事前にコンパイルされ、変更があるごとに更新される。

結論

この一連の流れは、Railsアプリケーションの効率的な動作を保証する。ルーティングによる適切なコントローラーの選択、コントローラーによるビューへのデータの渡し、そしてアセットパイプラインによるリソースの管理は、Railsの強力な機能である。このしくみを理解することで、Rails開発者はより効果的なウェブアプリケーションを構築できる。