Railsで開発されるWebアプリケーションは、Rubyのプログラム以外に、JavaScript、CSS、画像ファイル等も必要になってきます。こういうWebアプリケーションのレスポンス、つまり、Rubyのプログラムとして実行されるもの以外の構成要素のことをアセットと呼びます。
Railsのプロジェクトを設定した時に、appというディレクトリ配下にいくつかのディレクトリが自動的に生成されてます。Railsで作るアプリケーションでのアセットのファイルは、それぞれ以下のように格納するのがRailsでの決まり事になっており以下のような対応関係になります。
項目 | Railsプロジェクトでの配置場所 |
---|---|
JavaScript | /app/assets/javascripts |
CSS(スタイルシート) | /app/assets/stylesheets |
画像ファイル | /app/assets/images |
参考までに、Railsでは標準で上記のディレクトリに加えて、以下のアセットのディレクトリも読み込まれます。
ディレクトリ | 説明 |
---|---|
lib/assets | 共通で利用するライブラリやサブ機能などに関するアセットファイルを配置するために利用 |
vendor/assets | オープンソースのJavaScriptライブラリやCSSなどの外部から取得して利用するアセットファイルを配置するために利用 |
例えばですが、Railsベースのアプリケーションを開発する際に、ユーザインタフェースの部分でJavaScriptの有名なライブラリであるjQueryを使った処理をしたくなるケースが出てきます。
その場合に、jQuery本体をあらかじめ読み込む設定をしておかないと、jQueryを使った処理がそもそも実現できません。またjQueryの豊富なプラグインを利用した処理を行いたい場合には
というような形でファイルを読み込まないと、うまく動作しないケースというものも出てきます。
こういった複数のアセットファイルがある場合に最近のRailsには便利な機能が備わっており(*1)その機能を通じて、読み込む順番を適切に管理してくれます。
その機能を利用する時に どういうアセットファイルを読み込むか という内容を記述したファイルが必要になり、そのファイルのことを マニフェストファイル といいます。
マニフェストファイルを実際に確認してみましょう。マニフェストファイルはRailsアプリケーションを新規作成した際に自動的に作成されています。
中身を開くとわかるかと思いますが、コメントとして記述されていますが、後半の方でそれぞれ
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
*= require_self
*= require_tree .
という形でコメントの後に = が書かれており、さらに require と書かれて、その後に引数としてファイル名(もしくはディレクトリ名)が記述されてる所が実際にRails側で解釈される箇所になります。
Webアプリケーションの開発においては、JavaScript、CSS、画像ファイルといったファイルも必要になるのですが、Railsではこれらのファイルをまとめてアセットファイルとして管理していきます。
Railsがアセットファイルの管理を効率的に行うために必要となるマニフェストファイルというものがあります。
今回行っていただくユーザインタフェースのカスタマイズの作業において以下作業が発生するためにアセットの説明を行いました。
(*1) Sprocketsといいます。今回の講座ではこれについての説明は割愛してますが、仕事でRailsでの開発をするときには、どういう機能かはご自身で調べておくことをおすすめします。