狠狠撸

狠狠撸Share a Scribd company logo
厂辫谤辞肠办别迟蝉を捨てたい!!
自己紹介
? 名前: joe-re(じょうあー、じょー)
? freeeという会社でクラウド会計作ってます。
? ぶっちゃけRubyよりJavaScriptの方が好き。
そもそもSprocketsってなん
だっけ
? Ruby製のアセットのプリプロセッサ
? Rails3.1から導入
? AltJSやSassなどのcompile
? concat、minify、uglify、md5フィンガープリント
? 依存関係の整理がしやすくなる
? develop 時にはminifyしない、など難しい設定いらずでいい感じに動
く
なんで捨てたいの
? 最近はフロントエンドのツールが充実してる
? ライブラリなど基本的にGem化されていないと使えない
(導入コスト高い)
? 全てを1つのファイルにConcatするので、JavaScriptの読
み込みに時間がかかる(Turbolinkうまく使えばあるいは?)
? Rails5 から Rails API が本体に入る
? Sprocketsに依存しないことで、Railsが死んだ時にも対応
できるようになる
理想型から考える
妄想
? もはや、RailsはJSON返すAPIサーバでよくね?
? いいねー。フロントとサーバは完全にリポジトリ分けて、別々にCIし
ようか。
? うんうん。JSONスキーマ定義して、Rails側ではそれ使ってAPIのバリ
デーションして、フロント側はレスポンスモックして動かしたり、テ
ストしたりするの良さそう。
? おkおk。インテグレーションテストはSelenium Web Driver使って、
マルチブラウザまで書いていく感じかな。
? :+1:
現実
? jQueryのDOM操作多すぎ。心折れそう。SPAとか正直無
理な感じする。
? わかるー。そもそも複雑で人類の理解できる範囲超えて
るし。コンポーネント指向っていってもなー。どこから
手をつけて良いやら…。
? ていうかそもそもフロントのテストなんて書いてないしな!
インテグレーションテストなんてもちろ(rya
? :cry:
Sprocketsと
共に生きる方法を模索する
とりあえずjs分割(before)
? 初期状態のapplication.js
# …
//= require jquery
//= require jquery_ujs
//= require_tree .
fooページにだけ必要なfooとかbarページで必要な
barとかまとめられてしまう。
とりあえずjs分割(after)
? lib.js
//= require jquery
//= require jquery_ujs
? hoge.js
//= require hoge
? bar.js
//= require bar
bowerの資産を使う
? bower-rails
? https://github.com/rharriso/bower-rails
? これでgemになってないライブラリも使える
? (とはいえbowerオワコン感がある…)
ビルドの成果物をSprocketsに
のせる
? フロントでビルドした成果物をapp/assets配下に
出力するようにする
? md5フィンガープリント、minify、concat、uglify
などは従来通りSprocketsさんにやってもらう
? フロントに特化したビルドをしつつ、面倒な部分
はSprocketsに任せられるので扱いやすい
Front Engineering on
Sprockets
? react-rails
? mithril-rails
? angularjs-rails
? sprockets-es6
? gulp-rails-pipeline
厂辫谤辞肠办别迟蝉を捨てさる
方針
? Rails は JSON を返すWebAPIにする。
? ルーティング、レンダリングなどは全てフロ
ントで処理する。
? ビルドはgruntやgulpなどのフロントで使い易
いツールへ移行する。
フロントのビルド成果物はどこ
に配置するか
? 素直に Public配下が良いと思う。
? 開発中もインクリメンタルビルドで、差分だ
けうまいこと Public ディレクトリに放り込ん
でいく。
? 開発時にはuglifyやminifyしない。
proxy サーバを立てて開発を円
滑にしたい
? livereload など、フロント側でやりたいことがた
くさんある!
? Rails 側は一度立てれば、あとは意識しなくて良く
なる。(動かなければプロセス確認したり、再起動
したりする程度)
? browser-sync すごく便利!
proxyサーバを立てた図
Rails Server
localhost:3000
# endpoints
GET /api/v1/friends
public directory
friends.js
Proxy Server
loalhost:8080
友達一覧が見たい!
localhost:8080/friends
完全に捨てるのむずい
(他にいい方法あれば教えて
ください。。)
知见
最近書いたgulp.coffee
? 最近ちょうどRailsアプリケーションでgulp導
入する機会があったので紹介
? Sprockets完全廃止はできてない
? ビルド結果をapp/assets配下に出力して、
Sprocketsにのせる方式
build tasks
server & watch tasks
所感
移行するにあたってmd5フィンガー
プリントをどうにかするのは難関
? フロント側でビルドすると、そのままでは
asset_pathヘルパーが効かなくなる。
? これさえどうにかできれば感はある。
Sprocketsの
requireディレクティブうざい
? browserifyと共存できないので、置き換える
ときに少しずつできない。
? 少なくともファイル単位でやらないといけな
い。
gemにassets含まれてるやつ
ら、このやろう!
? 単純にgem化されてるライブラリなら大抵はnpmにもあるから困ら
ない。
? けど、generateでview作る系のやつはassetsが含まれてたりする。
? さすがにgulpタスクでgemファイルの中身をさらうのはなー。
? そのgem使うのをやめるのが良い。無理ならgemから抜き出してリ
ポジトリにコミットするか。(バージョン管理が面倒なのでやりたく
ない。。)
今の気持ち
少し角が取れました
? そこまで完全に捨てることに拘る必要はないかも
しれない(ある程度徐々に移行していくことは可能)
? SprocketsはSprocketsでいいところはある(とりあ
えずはそう思うことにしよう)
? とはいえ新しく作るアプリケーションなら
Sprocketsに頼らなくても良さそう
ありがとうございました
Ad

Recommended

僕はと?うしても尝颈产蝉补蝉蝉か?使いたかったんた?!
僕はと?うしても尝颈产蝉补蝉蝉か?使いたかったんた?!
Masato Noguchi
?
搁补颈濒蝉の搁补颈濒から解放される始めの一歩
搁补颈濒蝉の搁补颈濒から解放される始めの一歩
Masato Noguchi
?
谤别辩耻别蝉迟-蝉辫别肠を利用していい感じにモックデータを作ってフロントエンド开発を楽にしたい!
谤别辩耻别蝉迟-蝉辫别肠を利用していい感じにモックデータを作ってフロントエンド开発を楽にしたい!
Masato Noguchi
?
Ruby on Rails の特徴とそのエコシステム
Ruby on Rails の特徴とそのエコシステム
Tomoya Kawanishi
?
搁补颈濒蝉チュートリアル(蝉别肠辞苍诲)を终えて
搁补颈濒蝉チュートリアル(蝉别肠辞苍诲)を终えて
Hirata Tomoko
?
搁补颈濒蝉のフロントエンド开発を考える
搁补颈濒蝉のフロントエンド开発を考える
Hirata Tomoko
?
ほ?くのかんか?えたさいきょうの Rails スタートタ?ッシュ
ほ?くのかんか?えたさいきょうの Rails スタートタ?ッシュ
Kenji Mori
?
Railsバージョンアップを 段階的に行うために Rails3/4並行稼動させる仕組み を作ってる話
Railsバージョンアップを 段階的に行うために Rails3/4並行稼動させる仕組み を作ってる話
Masayuki Morita
?
Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
?
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
?
超簡単!? ActiveAdminて?作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminて?作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
Kanako Kobayashi
?
奥颈苍诲辞飞蝉ユーザのための搁补颈濒蝉环境构筑
奥颈苍诲辞飞蝉ユーザのための搁补颈濒蝉环境构筑
Hirata Tomoko
?
Rails あるある
Rails あるある
Ryunosuke SATO
?
厂颈苍补迟谤补で飞别产アプリケーション开発を学ぶ
厂颈苍补迟谤补で飞别产アプリケーション开発を学ぶ
Hiroshi Oyamada
?
高トラフィックサイトを搁补颈濒蝉で构筑するための罢颈辫蝉基础编
高トラフィックサイトを搁补颈濒蝉で构筑するための罢颈辫蝉基础编
Kazuya Numata
?
搁补颈濒蝉+惭补谤办诲辞飞苍でなにかつくる
搁补颈濒蝉+惭补谤办诲辞飞苍でなにかつくる
Hirata Tomoko
?
搁耻产测で骋鲍滨アプリケーションを书く
搁耻产测で骋鲍滨アプリケーションを书く
Misao X
?
Ember コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
?
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
よしだ あつし
?
片手間JS on Rails
片手間JS on Rails
Ryunosuke SATO
?
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
?
厂耻苍蝉辫辞迟ではじめる厂辞濒谤入门
厂耻苍蝉辫辞迟ではじめる厂辞濒谤入门
Takao Baba
?
Bundler 2 の胎動
Bundler 2 の胎動
Koichi ITO
?
20101009 gunma.web#2 スタパさんをつくるはなし
20101009 gunma.web#2 スタパさんをつくるはなし
ivoryworks .
?
ケ?ーム会社て?のRuby : rails活用事例
ケ?ーム会社て?のRuby : rails活用事例
Yasutomo Uemori
?
驳耻濒辫-蝉辫谤辞肠办别迟蝉、あるいは搁补颈濒蝉の础蝉蝉别迟蝉のビルドについて
驳耻濒辫-蝉辫谤辞肠办别迟蝉、あるいは搁补颈濒蝉の础蝉蝉别迟蝉のビルドについて
yo_waka
?
开発スピードの减速と再加速
开発スピードの减速と再加速
Ken-ichi Kudo
?
React.js + Reduxで作るSPA
React.js + Reduxで作るSPA
Shohei Saeki
?
窜别谤辞贵辞谤尘补迟迟别谤に见る颁#で最速のシリアライザを作成する100亿の方法
窜别谤辞贵辞谤尘补迟迟别谤に见る颁#で最速のシリアライザを作成する100亿の方法
Yoshifumi Kawai
?
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Yoshifumi Kawai
?

More Related Content

What's hot (17)

Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
?
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
?
超簡単!? ActiveAdminて?作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminて?作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
Kanako Kobayashi
?
奥颈苍诲辞飞蝉ユーザのための搁补颈濒蝉环境构筑
奥颈苍诲辞飞蝉ユーザのための搁补颈濒蝉环境构筑
Hirata Tomoko
?
Rails あるある
Rails あるある
Ryunosuke SATO
?
厂颈苍补迟谤补で飞别产アプリケーション开発を学ぶ
厂颈苍补迟谤补で飞别产アプリケーション开発を学ぶ
Hiroshi Oyamada
?
高トラフィックサイトを搁补颈濒蝉で构筑するための罢颈辫蝉基础编
高トラフィックサイトを搁补颈濒蝉で构筑するための罢颈辫蝉基础编
Kazuya Numata
?
搁补颈濒蝉+惭补谤办诲辞飞苍でなにかつくる
搁补颈濒蝉+惭补谤办诲辞飞苍でなにかつくる
Hirata Tomoko
?
搁耻产测で骋鲍滨アプリケーションを书く
搁耻产测で骋鲍滨アプリケーションを书く
Misao X
?
Ember コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
?
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
よしだ あつし
?
片手間JS on Rails
片手間JS on Rails
Ryunosuke SATO
?
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
?
厂耻苍蝉辫辞迟ではじめる厂辞濒谤入门
厂耻苍蝉辫辞迟ではじめる厂辞濒谤入门
Takao Baba
?
Bundler 2 の胎動
Bundler 2 の胎動
Koichi ITO
?
20101009 gunma.web#2 スタパさんをつくるはなし
20101009 gunma.web#2 スタパさんをつくるはなし
ivoryworks .
?
ケ?ーム会社て?のRuby : rails活用事例
ケ?ーム会社て?のRuby : rails活用事例
Yasutomo Uemori
?
Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
?
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
?
超簡単!? ActiveAdminて?作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminて?作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
Kanako Kobayashi
?
奥颈苍诲辞飞蝉ユーザのための搁补颈濒蝉环境构筑
奥颈苍诲辞飞蝉ユーザのための搁补颈濒蝉环境构筑
Hirata Tomoko
?
厂颈苍补迟谤补で飞别产アプリケーション开発を学ぶ
厂颈苍补迟谤补で飞别产アプリケーション开発を学ぶ
Hiroshi Oyamada
?
高トラフィックサイトを搁补颈濒蝉で构筑するための罢颈辫蝉基础编
高トラフィックサイトを搁补颈濒蝉で构筑するための罢颈辫蝉基础编
Kazuya Numata
?
搁补颈濒蝉+惭补谤办诲辞飞苍でなにかつくる
搁补颈濒蝉+惭补谤办诲辞飞苍でなにかつくる
Hirata Tomoko
?
搁耻产测で骋鲍滨アプリケーションを书く
搁耻产测で骋鲍滨アプリケーションを书く
Misao X
?
Ember コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
?
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
よしだ あつし
?
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
?
厂耻苍蝉辫辞迟ではじめる厂辞濒谤入门
厂耻苍蝉辫辞迟ではじめる厂辞濒谤入门
Takao Baba
?
Bundler 2 の胎動
Bundler 2 の胎動
Koichi ITO
?
20101009 gunma.web#2 スタパさんをつくるはなし
20101009 gunma.web#2 スタパさんをつくるはなし
ivoryworks .
?
ケ?ーム会社て?のRuby : rails活用事例
ケ?ーム会社て?のRuby : rails活用事例
Yasutomo Uemori
?

Viewers also liked (20)

驳耻濒辫-蝉辫谤辞肠办别迟蝉、あるいは搁补颈濒蝉の础蝉蝉别迟蝉のビルドについて
驳耻濒辫-蝉辫谤辞肠办别迟蝉、あるいは搁补颈濒蝉の础蝉蝉别迟蝉のビルドについて
yo_waka
?
开発スピードの减速と再加速
开発スピードの减速と再加速
Ken-ichi Kudo
?
React.js + Reduxで作るSPA
React.js + Reduxで作るSPA
Shohei Saeki
?
窜别谤辞贵辞谤尘补迟迟别谤に见る颁#で最速のシリアライザを作成する100亿の方法
窜别谤辞贵辞谤尘补迟迟别谤に见る颁#で最速のシリアライザを作成する100亿の方法
Yoshifumi Kawai
?
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Yoshifumi Kawai
?
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
?
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
?
Angular1&2
Angular1&2
Kenichi Kanai
?
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
?
いい感じのフロントエンド开発环境を作ってみた
いい感じのフロントエンド开発环境を作ってみた
Hayashi Yuichi
?
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
?
Roslynで体験してみるC#スクリプト #cs_fukuoka
Roslynで体験してみるC#スクリプト #cs_fukuoka
Yuta Matsumura
?
アルゴリズム取引のシステムを开発?运用してみて分かったこと
アルゴリズム取引のシステムを开発?运用してみて分かったこと
Satoshi KOBAYASHI
?
Html5 history api
Html5 history api
景智 張
?
Curing Shopper Boredom
Curing Shopper Boredom
Lisa Roberts
?
AWS Roadshow Herbst 2013: Beschleunigen Sie Entwicklungs- und Test-Szenarien ...
AWS Roadshow Herbst 2013: Beschleunigen Sie Entwicklungs- und Test-Szenarien ...
AWS Germany
?
颁辞苍蹿é谤别苍肠别冲20150928冲尝颈苍办别诲颈苍
Ollivier Monferran
?
Shepherd Elementary School Community Meeting Flyer
Shepherd Elementary School Community Meeting Flyer
DC Department of General Services
?
Proform 505 cst Treadmill Buying Guide
Proform 505 cst Treadmill Buying Guide
Sharon Hamlin
?
???????? ??? ?????? ??????? ???? ???????? Dba7-mahan- ?????????
???????? ??? ?????? ??????? ???? ???????? Dba7-mahan- ?????????
Ashrafologhalaei Ahmadreza
?
驳耻濒辫-蝉辫谤辞肠办别迟蝉、あるいは搁补颈濒蝉の础蝉蝉别迟蝉のビルドについて
驳耻濒辫-蝉辫谤辞肠办别迟蝉、あるいは搁补颈濒蝉の础蝉蝉别迟蝉のビルドについて
yo_waka
?
开発スピードの减速と再加速
开発スピードの减速と再加速
Ken-ichi Kudo
?
React.js + Reduxで作るSPA
React.js + Reduxで作るSPA
Shohei Saeki
?
窜别谤辞贵辞谤尘补迟迟别谤に见る颁#で最速のシリアライザを作成する100亿の方法
窜别谤辞贵辞谤尘补迟迟别谤に见る颁#で最速のシリアライザを作成する100亿の方法
Yoshifumi Kawai
?
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Yoshifumi Kawai
?
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
?
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
?
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
?
いい感じのフロントエンド开発环境を作ってみた
いい感じのフロントエンド开発环境を作ってみた
Hayashi Yuichi
?
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
?
Roslynで体験してみるC#スクリプト #cs_fukuoka
Roslynで体験してみるC#スクリプト #cs_fukuoka
Yuta Matsumura
?
アルゴリズム取引のシステムを开発?运用してみて分かったこと
アルゴリズム取引のシステムを开発?运用してみて分かったこと
Satoshi KOBAYASHI
?
Html5 history api
Html5 history api
景智 張
?
Curing Shopper Boredom
Curing Shopper Boredom
Lisa Roberts
?
AWS Roadshow Herbst 2013: Beschleunigen Sie Entwicklungs- und Test-Szenarien ...
AWS Roadshow Herbst 2013: Beschleunigen Sie Entwicklungs- und Test-Szenarien ...
AWS Germany
?
颁辞苍蹿é谤别苍肠别冲20150928冲尝颈苍办别诲颈苍
Ollivier Monferran
?
Proform 505 cst Treadmill Buying Guide
Proform 505 cst Treadmill Buying Guide
Sharon Hamlin
?
???????? ??? ?????? ??????? ???? ???????? Dba7-mahan- ?????????
???????? ??? ?????? ??????? ???? ???????? Dba7-mahan- ?????????
Ashrafologhalaei Ahmadreza
?
Ad

厂辫谤辞肠办别迟蝉を捨てたい