SlideShare a Scribd company logo
gulp-sprockets,
あるいはRailsのAssets
のビルドについて
2016/02/09 Node学園 19限目
@yo_waka
はじめまして
• @yo_waka
• Software Engineer @ freee
• 会計サービスの開発
• 普段はRuby, JavaScriptを書いてます
We are using Rails!
Are you using Sprockets?
Sprockets
• アセットファイルの連結・圧縮
• manifest.jsonによるブラウザキャッシュを考慮したパ
ス管理
• CoffeeScript, SCSSのコンパイル
• Railsではsprockets-rails経由でRailsとSprocketsを繋ぐ
ことでAssets Pipelineをよしなにやってくれる
Sprocketsとの蜜月
• application.js.coffeeにCoffeeScript書くと自動でJSにコンパイルされて読み
込まれる!

分割しても「//= require form」と書くだけで結合してくれる!
• application.css.scssにSass書くと自動でCSSにコンパイルされて読み込まれ
る!

分割しても「/**= require form」と書くだけで結合してくれる!
• XXX-railsなフロントエンドのgem、追加するだけで使える!
• サービスの規模も小さく、フロントエンドに明るいエンジニアがいない時代
はとにかく便利
しんどい事案が増える
• とあるxxx-railsなフロントエンド系gemが全然本体をバージョン
アップしてくれない
• フロントエンドgemとbower(bower-rails)の混在

=> このライブラリ、本体はどこにあるねん
• とあるSCSSファイルのコンパイルだけで1時間かかるようになって
しまった
• フロントだけビルドしてCDNにデプロイ、とかやろうとしてもRails
が必要
進化についていく
• ES2015で書いていくぞ
• React&JSXで書いていくぞ
• 共通コンポーネントはnpmパッケージ化
• 共通スタイルはnpmパッケージ化
• やっていくぞという人たちが増えてアセットのビルドプロ
セスを改善する機運が高まった
移行しよう
• Node.js側(gulp+webpack)に移行が進む

 コードベースが巨大なので少しずつ移行させる
• とあるxxx-railsなフロントエンド系gemが全然バージョンアップし
てくれない

=> npmパッケージから利用
• とあるSCSSファイルのコンパイルだけで1時間かかるようになっ
てしまった

=> libsassだと3分。ruby-sassからnode-sassへ
npm+sprockets
• browserify, gulp, webpackなどでビルド

=> app/assetsに成果物を吐く

=> 後は通常のSprocketsのassets pipeline(=rake assets:precompile)
で
• これはこれでしんどい
• gulp, Sprockets両方でやってること知らないとビルド周りでおかしく
なったときに対処しづらい(ビルドしたものをビルドし直すのもおか
しい気もする)

=> libsassとruby-sassのバージョン違いによるエラーなど
移行期の辛み
• application.jsから画面ごとにJSを切り出して
ES2015化

=> ES2015化したJSファイルをstubしないと
application.jsがビルドエラー
• application.jsとES2015化したJS両方から呼び
出すコンポーネントのビルドがめんどい
gulp-sprockets
• https://github.com/waka/gulp-sprockets
• SprocketsがやってくれることをGulpストリームのみで実
現する(したい)ためのGulpプラグイン
• npm run buildのみでRailsのassetsをビルドすることを目
指している
• 使い方等はREADMEやsample下のgulpfileをご覧ください
gulp-sprockets
• 既存のRailsのassetsのビルドプロセスをnpmに完全に置き換えるための移行中
のビルドを支えるのが目的
• なので、現状requireディレクティブの挙動は合わせている(単純に指定された
パスのファイルをconcat)
• manifest.jsonもgulpのビルドタスクで簡単に管理できる(削除 => 再作成)

=> manifest.json重複問題の恐怖から逃れられる
• manifest.jsonに書き出すストリームを分けているので、その機能だけを使うこ
ともできる

=> Babelのみでビルドが完結するファイルはmanifest.jsonにだけ書き出す
中でやってること
• Esprima, PostCSSでコメント部をパースしてSprocketsディレクティブ
(require, require_tree, stub, etc)を解釈

=> CoffeeScriptの複数行コメントによるディレクティブのパースは非
対応です・・
• CoffeeScript, SCSSのコンパイル
• asset_pathやimage_urlなどRailsヘルパ関数の組み込み(node-sassの
カスタム関数として)
• manifest.jsonの生成
TODO
• Sprocketsディレクティブの完全サポート(現
状は100%サポートしているわけではない)
• ES2015で書いたファイルもrequireディレク
ティブで読み込みたい(そうするとコンポー
ネント単位からでもES2015への移行ができ
る)
少し宣伝
• 2/16発売のWEB+DB PRESS「Web
サービス開発徹底攻略vol.2」に、
freee社の「急成長を支えたコード
とプロセスの改善」が収録されてい
ます。

その後の取り組み(主にフロントエ
ンド周り)についても書かれている
ので、ぜひご覧ください!

More Related Content

PDF
AWS Black Belt Techシリーズ AWS Lambda Updates
Amazon Web Services Japan
 
PDF
ES2015をRailsアプリに導入しようとして思わぬ闇にハマった話
Nobuhito Ibaraki
 
PDF
さくらのクラウドアップデート情報2016年7月版
さくらインターネット株式会社
 
PDF
How to upgrade your rails application to rspec3
Junichi Ito
 
PDF
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
Nao Minami
 
PDF
さくらのクラウドサービス概要資料2016年8月版
さくらインターネット株式会社
 
PPT
AWS free tier maximization
Kenkichi Okazaki
 
PDF
とりあえず使えるSBT
Kiyotaka Kunihira
 
AWS Black Belt Techシリーズ AWS Lambda Updates
Amazon Web Services Japan
 
ES2015をRailsアプリに導入しようとして思わぬ闇にハマった話
Nobuhito Ibaraki
 
さくらのクラウドアップデート情報2016年7月版
さくらインターネット株式会社
 
How to upgrade your rails application to rspec3
Junichi Ito
 
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
Nao Minami
 
さくらのクラウドサービス概要資料2016年8月版
さくらインターネット株式会社
 
AWS free tier maximization
Kenkichi Okazaki
 
とりあえず使えるSBT
Kiyotaka Kunihira
 

What's hot (6)

PDF
Inspector CLI (JAWS-UG 京王線支部 #4 LT)
Kenkichi Okazaki
 
PPTX
2016/12/17 ASP.NET フロントエンドタスク入門
miso- soup3
 
KEY
Scotty + Aeson + Persistentで作るJSON Web API
Daisuke Fujimura
 
PDF
「さくらのクラウド」を使って10分でできるDocker (オープンソースカンファレンス2016 Gunma)
さくらインターネット株式会社
 
PDF
2016/05/01 Visual Studio with Cordova
miso- soup3
 
PPTX
Our Track to Modern Angular
Yuta Shimizu
 
Inspector CLI (JAWS-UG 京王線支部 #4 LT)
Kenkichi Okazaki
 
2016/12/17 ASP.NET フロントエンドタスク入門
miso- soup3
 
Scotty + Aeson + Persistentで作るJSON Web API
Daisuke Fujimura
 
「さくらのクラウド」を使って10分でできるDocker (オープンソースカンファレンス2016 Gunma)
さくらインターネット株式会社
 
2016/05/01 Visual Studio with Cordova
miso- soup3
 
Our Track to Modern Angular
Yuta Shimizu
 
Ad

Similar to gulp-sprockets、あるいはRailsのAssetsのビルドについて (8)

PDF
僕はどうしてもLibsassが使いたかったんだ!
Masato Noguchi
 
PDF
Asset Pipeline for Perl
Yoshihiro Sasaki
 
PDF
RailsのRailから解放される始めの一歩
Masato Noguchi
 
PPTX
片手間JS on Rails
Ryunosuke SATO
 
PDF
Gulp入門 - コーディングを10倍速くする
Hayashi Yuichi
 
PDF
フロントエンド制作向け ビルドツールGruntを PHPバックエンド開発で利用する @M_Ishikawa #phpcon2013
Masayuki Ishikawa
 
PDF
イマドキのコーダー環境構築2016
Sou Lab
 
PDF
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
Toshimichi Suekane
 
僕はどうしてもLibsassが使いたかったんだ!
Masato Noguchi
 
Asset Pipeline for Perl
Yoshihiro Sasaki
 
RailsのRailから解放される始めの一歩
Masato Noguchi
 
片手間JS on Rails
Ryunosuke SATO
 
Gulp入門 - コーディングを10倍速くする
Hayashi Yuichi
 
フロントエンド制作向け ビルドツールGruntを PHPバックエンド開発で利用する @M_Ishikawa #phpcon2013
Masayuki Ishikawa
 
イマドキのコーダー環境構築2016
Sou Lab
 
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
Toshimichi Suekane
 
Ad

Recently uploaded (10)

PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 

gulp-sprockets、あるいはRailsのAssetsのビルドについて