13
CoEdo.rbRuby / Ruby on Rails ビギナーズ勉強会 第4回 Ticklecode Yoshinori Kobayashi 1 Railsで生産性を高めてくれる Asset Pipeline(アセットパイプライン)」 を理解する。

Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

Embed Size (px)

Citation preview

Page 1: Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

Ticklecode Yoshinori Kobayashi 1

Railsで生産性を高めてくれる 「Asset Pipeline(アセットパイプライン)」

を理解する。

Page 2: Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

2

生まれは 奈良県 です

小林由憲(こばやしよしのり) Twitter: @AsbyuKobayashi

ブログ: In Advance Only

Page 3: Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

・<link>、<script src=”...”>タグの通信コストが大きい

3

フロント(クライアント)側での問題点

・CSS、JavaScriptのデータサイズが肥大化

・CSS、JavaScript、HTMLを直接コーディングしにくい、生産性が悪い

・変更時にブラウザキャッシュがクリアされないため、トラブルが起こる

フレームワークで自動化することで負荷を軽減したい

Asset Pipeline

Page 4: Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

4

Asset Pipeline(アセットパイプライン)とは

Asset(アセット)

Pipeline(パイプライン)

有用なもの・貴重なものの意

Railsでは、JavaScript・CSS・画像ファイル・ERBなどを示す。

ルート、補給線の意

Railsでは、効率的な方法を提供するための一連の作業

Page 5: Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

5

①コンパイル ②統合 ③圧縮

④ダイジェスト付与

Asset Pipelineの流れ

コーディング

ブラウジング

Exp.CSS の場合 common.css.scss buttons.css.scss responsive.css.scss

common.css buttons.css responsive.css

application.css

application.css ※空白、改行の除去

application-39737udj....css ① ③ ② ④

コーディングしやすい状態から、閲覧時は通信コストが効率化できるように最適化される。

Page 6: Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

6

①コンパイル

デフォルトでサポートされている言語は、CSSに代わるSASS、JavaScriptに代わるCoffeeScript、ERB。

【変換前】 ⇒ 【変換後】 common.css.scss ⇒ common.css foobar.js.erb.coffee ⇒ foobar.js.erb ⇒ foobar.js

従来のCSS、JavaScriptでは記述が難しく、効率が悪い。 効率的に記述できる、Sass、CoffeeScriptなどの高級言語を使用。 これら高級言語は、らネイティブ言語への変換が必要。

【変換前 Sass】 // Regulation Margin @for $i from 1 through 10{ $nm:$i * 5; .mb#{$nm}{ margin-bottom:$nm * 1px !important; } }

【変換後 CSS】 .mb5 { margin-bottom: 5px !important; } .mb10 { margin-bottom: 10px !important; } :

Page 7: Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

7

②統合 1つのファイルにまとめて、通信回数を減らす。 <link>タグの通信コストが大きいため、記述回数を減らす。

【統合前】 common.css buttons.css responsive.css

【統合後】 application.css

【統合前】 <link href="common.css" rel="stylesheet" type="text/css"> <link href="buttons.css" rel="stylesheet" type="text/css"> <link href="responsive.css" rel="stylesheet" type="text/css">

【統合後】 <link href="application.css" rel="stylesheet" type="text/css">

Page 8: Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

8

③圧縮 改行、空行、コメントを取り除いて、サイズを縮小する。

【圧縮前】 $(window).load(function(){ // スライドイメージを表示 $('.bxslider img').css("visibility","visible"); // スライダーの開始とオプション $('.bxslider').bxSlider({ auto: true, captions:true }); });

【圧縮後】 $(window).load(function(){$(".bxslider img").css("visibility","visible"),$(".bxslider").bxSlider({auto:!0,captions:!0})});

Page 9: Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

9

④ダイジェスト付与

一度、レンダリング(表示処理)された、CSS・JavaScriptはWebブラウザでキャッシュ(一時保存)される。 アセットを修正後は、Webブラウザで修正後を表示さたいために、キャッシュを確実に破棄させる仕組みが必要。 ファイル名にダイジェストを付加するという方法。

<script src="/js/application-908e25f4bf641868d8683022a5b62f54.js" ・・・

Rails3.1以前の仕組み <script src="/js/application.js?1309495796" ・・・ ※上手くキャッシュ破棄されないことがあるらしい。

Page 10: Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

10

まとめ

Page 11: Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

11

個人的な感想

・フロントツール(Grant、Gulp)よりスッキリしていて統一感がある。

・Sass、CoffeeScriptのコーディングに集中できて、「あとはよろしく!」やってくれるイメージ。

・development環境・production環境の違いなどの理解がもっと必要。

Page 12: Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

アセットパイプライン | Rails日本語ドキュメント | Ruby STUDIO http://ruby.studio-kingdom.com/rails/guides/asset_pipeline

http://railsguides.jp/asset_pipeline.html アセットパイプライン — Rails ガイド

12

Ruby on Rails 4 アプリケーションプログラミング

著者:山田 祥寛

参考情報

http://railsguides.jp/asset_pipeline.html 5.2 SassとAsset Pipeline ― Rails チュートリアル

Page 13: Railsで生産性を高めてくれる「Asset Pipeline(アセットパイプライン)」を理解する|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第4回

13

ご清聴ありがとうございました。