SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
古き良きRailsプロジェクトに
wepbackとVue.jsを導入した話
Yuya Taki
self.inspect
[1] https://github.com/muramurasan/okuribito
➢ gemのロゴを書いたり・・・
➢ たまにQiitaの記事を書いたり・・・
➢ 新卒で某SIerに入社したのあと、渋谷のベン
チャー企業にてRuby on Railsを学び、2016年10
月エネチェンジに入社。
➢ なぜかPaypal、ベリトランス、SMBC、YDSなど決
済周り、請求周りを実装することが多い。
➢ 最近、ちょくちょくお客様先に行くこともあり。
Name : Yuya Taki
GitHub : yuyasat
Qiita : yuyasat
[1]
若輩者ですので、何卒優しくご教授いただけ
ればと思います。
(commitはしていない)
➢ 初めて勉強会で喋ります。
➢ フロントエンドとかあまり詳しくないで
す!
Web版(React.js実装):
https://poject.herokuapp.com/
Android版(Java実装):
https://play.google.com/store/apps/details?id=yuyasat.pojectandr
oid&hl=ja(PojectAndroidで検索)
※とりあえず動くクソコードなので大目にみて
self.inspect(frontendに関連して)
➢ React.jsで実装したゲーム
➢ 4色繋げると消える、まるで◯よぷ◯のようなゲーム
➢ 自動で落ちてこないので、自由に連鎖を組める( 崩珠)
➢ まるで昭和のゲームのよう
enechangeとは
➢ 2016年電力自由化・2017年ガス自由化に伴い、電気代やガス代を比較でき
るサービスを運営。
➢ 比較だけでなく、申し込みも受け付けている。
https://enechange.jp/
enechange.jpで使われているVue.jsたち
https://enechange.jp/orders/tepco/preapply?o=1https://enechange.jp/try/input https://enechange.jp/gas
try/input preapply gas
enechangeのfrontend状況
➢ Railsデフォルトのasset pipelineに乗っかっている
➢ Javascript
○ jQuery
○ ライブラリなどは職人が手で置いていく
➢ CSS
○ sassc-rails
○ compass
■ cf. compass-railsが導入されたRailsにsassc-railsを導入する
webpack・Vue.js導入の経緯
➢ 5月頃、このプロジェクト発足前に、preapplyの仕様がそこそこ複雑なので、
enechangeのfrontendをどうしようかという議論を行った。
➢ 開発期間が短いこともあり、既存の基盤のままいくことになった。
➢ 8月末、preapplyのfrontendの開発に着手した当初、jQueryで実装しようと試
みた。
➢ やや複雑な仕様の中、4時間ぐらい粘ったところで、Vue.jsを使えばもっとシン
プルに実装できるのにという思いが強まる。
➢ 誰にも相談することなく、Vue.jsで実装を始める。
preapplyでの仕様
https://enechange.jp/orders/tepco/preapply?o=1
https://enechange.jp/orders/tepco/preapply?o=2
ガス単独申し込みの場合は、従量
電灯Bでは申し込めないのでエラー
を出す
ガス・電気セット申し込みの場合は、既
契約が従量電灯Bの場合は、「契約プラ
ンを変更する」にセット スタンダードSで電気の契約プラン
を変更しようとすると、エラーを出
す
etc...
jQueryでの実装に挫折した!
電気料金プランにはいろんな区分けが
ありまして・・・
・規制プラン
・自由化プラン(新規申込可)
・自由化プラン(新規申込不可)
・アンペアブレーカ契約
・主開閉器契約
・実量制契約
ガスに申し込むには、電気は自由化プ
ランじゃないといけなく・・・
slackで相談
simchangeで実績があるということと、 try/inputでもVue.jsを利用しようとしていた
こともあり、意外にすんなり受け入れられた!
Vue.jsをどうRailsに組み込んだか
➢ vuejs-rails(gem)を使う
○ JSライブラリ自体のバージョンに追いついていけるか不安
➢ Webpackerを使う
○ enechangeは残念ながらまだRails 4.2
○ webpackをラップしている。webpackの進歩についていけるか不安
➢ frontendのエコシステムを利用する
○ npmで管理
rails
└── frontend
├── config
│ ├── development.js
│ └── production.js
├── package.json
└── src
└── javascripts
└── このディレクトリ以下に jsファイルを置いて行く。
・digest付与
・minify
sprockets
app/assets/javascripts/packed/
2015.11.29 WebPackを使ってRailsからJavaScriptを楽に良い感じに分離する
ゆるやかにsprocketsを利用
もっとsprocketsから離れることもできる
rails
└── frontend
├── config
│ ├── development.js
│ └── production.js
├── package.json
└── src
└── javascripts
└── このディレクトリ以下に jsファイルを置いて行く。
・digest付与
・minify
sprockets
webpack-manifest-plugin
webpack.optimize.UglifyJsPlugin()
app/assets/javascripts/packed/
➢ digest付与はwebpack-manifest-pluginでできるし、minifyもUglifyJsPlugin使えばできるから
sprocketsはもういらないのでは。。
➢ とはいえ、jsが不要なところもあるし、 cssの方はasset pipelineに乗っかるのが便利だから sprokets
とのお付き合いは絶やす必要はないか。。
[1] Webpacker を使わずに webpack で頑張る
[1]
トランスパイルしたjsファイルどうする問題
➢ 現状enechangeではcommitしてしまっている。
➢ 開発者(デザイナ含む)開発環境でコマンド叩けるならcommitしなくても良さそ
う。
➢ Docker使っていれば、起動オプション等で入れ込めば良い。
● EC2上でnginx、unicornなどで本番環境に近い形で構成で開発
● rails serverを使う(postgresql、python serverなど自力でlocalに構築)
● Dockerを使う
(参考)enechangeの3つの開発環境
全開発環境のDocker化や開発者のfrontend
のリテラシーが高まれば、commitしないよ
うにしていきたい。
[1] https://twitter.com/_yasaichi/status/827495684295122945
[1]
webpackerも使ってみた
➢ 冒頭の◯よぷ◯風自作ゲーム(React.js実装)でwebpacker
を使ってみた。
➢ ほぼjsのアプリですが、Railsエンジニアとしての足掻きで、
Railsにのっけてあった。
webpacker版 : https://poject.herokuapp.com/poject_webpacker
➢ webpackの知識は必要。
➢ webpack使えば良いのでは。
➢ 継続して意義を考えていきたい。
資料
2017.06.23 Webpacker is installed(Misoca)
2015.11.29 WebPackを使ってRailsからJavaScriptを楽に良い感じに分離する
2017.03.02 Webpacker を使わずに webpack で頑張る
2014.12.05 Sprockets再考 モダンなJSのエコシステムと Railsのより良い関係を探す
2016.06.08 Rails 4.2でSprocketsを捨ててwebpackに移行する
2016.12.13 もし、僕らのRailsにSprocketsがなかったら
2017.01.10 Rails & Webpackerでフロントエンド開発環境を整える
2017.01.19 Rails5.1から追加されると噂の Webpackerを使ってReact.jsを動かす。
2017.03.27 Webpackerを使ったRailsでのJavaScript開発(Cookpad)
2017.05.31 Roppongi.rb #3 "Rails x Frontend-Tech"(Roppingi.rb)
2017.05.22 Railsフロントエンド技術の今とこれから
webpacker
2017.02.27 Rails5.1から導入されるwebpacker.gemは本当にRailsのフロントエンド開発に福音をもたらすのか ?
2017.10.21 Webpacker 3ではじめるRailsエンジニアのためのモダンフロントエンド入門 〜Sprocketsを使わないRailsプロジェクト
試案〜
ご静聴ありがとうございました。

Mais conteúdo relacionado

Mais procurados

「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
Yusuke Wada
 
渋谷Java#2 昔のJavaを振り返る
渋谷Java#2 昔のJavaを振り返る渋谷Java#2 昔のJavaを振り返る
渋谷Java#2 昔のJavaを振り返る
Naoki Iwami
 

Mais procurados (20)

「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
How Would You Like Component Management System
How Would You Like Component Management SystemHow Would You Like Component Management System
How Would You Like Component Management System
 
【勉強会】 はじめてのRuby on Rails 4入門
【勉強会】 はじめてのRuby on Rails 4入門【勉強会】 はじめてのRuby on Rails 4入門
【勉強会】 はじめてのRuby on Rails 4入門
 
a-sap09「a-blog cmsとWordPress」
a-sap09「a-blog cmsとWordPress」a-sap09「a-blog cmsとWordPress」
a-sap09「a-blog cmsとWordPress」
 
a-sap10「モジュールIDを理解する」
a-sap10「モジュールIDを理解する」a-sap10「モジュールIDを理解する」
a-sap10「モジュールIDを理解する」
 
WordCamp Tokyo 2018 by ocws
WordCamp Tokyo 2018 by ocwsWordCamp Tokyo 2018 by ocws
WordCamp Tokyo 2018 by ocws
 
Rails5クイックスタート
Rails5クイックスタートRails5クイックスタート
Rails5クイックスタート
 
Node js 入門
Node js 入門Node js 入門
Node js 入門
 
渋谷Java#2 昔のJavaを振り返る
渋谷Java#2 昔のJavaを振り返る渋谷Java#2 昔のJavaを振り返る
渋谷Java#2 昔のJavaを振り返る
 
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
 
How do you like knockout?
How do you like knockout?How do you like knockout?
How do you like knockout?
 
a-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみよう
a-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみようa-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみよう
a-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみよう
 
ASP.NET "NOW" and "NEXT"
ASP.NET "NOW" and "NEXT"ASP.NET "NOW" and "NEXT"
ASP.NET "NOW" and "NEXT"
 
PHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったことPHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったこと
 
ConoHa VPSの コマンドラインツールを作った
ConoHa VPSの コマンドラインツールを作ったConoHa VPSの コマンドラインツールを作った
ConoHa VPSの コマンドラインツールを作った
 
WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのか
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
 

Semelhante a 古き良きRailsプロジェクトに wepbackとvue.jsを導入した話

なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? - なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
健人 井関
 
Webサイトのようには作れない!Webアプリ設計の考え方
Webサイトのようには作れない!Webアプリ設計の考え方Webサイトのようには作れない!Webアプリ設計の考え方
Webサイトのようには作れない!Webアプリ設計の考え方
girigiribauer
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
 

Semelhante a 古き良きRailsプロジェクトに wepbackとvue.jsを導入した話 (20)

エネチェンジでのSTIの使い方紹介
エネチェンジでのSTIの使い方紹介エネチェンジでのSTIの使い方紹介
エネチェンジでのSTIの使い方紹介
 
RustでWebAssembly
RustでWebAssemblyRustでWebAssembly
RustでWebAssembly
 
台湾官公庁におけるRuby on Railsを導入する事例
台湾官公庁におけるRuby on Railsを導入する事例台湾官公庁におけるRuby on Railsを導入する事例
台湾官公庁におけるRuby on Railsを導入する事例
 
Rubyの話を少し
Rubyの話を少しRubyの話を少し
Rubyの話を少し
 
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? - なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
 
Rubyをちょっと理解しよう
Rubyをちょっと理解しようRubyをちょっと理解しよう
Rubyをちょっと理解しよう
 
Webサイトのようには作れない!Webアプリ設計の考え方
Webサイトのようには作れない!Webアプリ設計の考え方Webサイトのようには作れない!Webアプリ設計の考え方
Webサイトのようには作れない!Webアプリ設計の考え方
 
在宅フリーランスで 失敗した話3選
在宅フリーランスで 失敗した話3選在宅フリーランスで 失敗した話3選
在宅フリーランスで 失敗した話3選
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
 
Camp report for_kwskrb
Camp report for_kwskrbCamp report for_kwskrb
Camp report for_kwskrb
 
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
 
Cmsdou oosaka
Cmsdou oosakaCmsdou oosaka
Cmsdou oosaka
 
Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話
Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話
Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話
 
Meguro es7
Meguro es7Meguro es7
Meguro es7
 
クラウドネイティブが行なういまどきWebサービス開発
クラウドネイティブが行なういまどきWebサービス開発クラウドネイティブが行なういまどきWebサービス開発
クラウドネイティブが行なういまどきWebサービス開発
 
20150215勉強会
20150215勉強会20150215勉強会
20150215勉強会
 
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
 
worker_threadsを使った実装の勘所
worker_threadsを使った実装の勘所worker_threadsを使った実装の勘所
worker_threadsを使った実装の勘所
 
RakSulのInternal API開発で gRPCを導入した話
RakSulのInternal API開発で gRPCを導入した話RakSulのInternal API開発で gRPCを導入した話
RakSulのInternal API開発で gRPCを導入した話
 
初めての公開Gem作り
初めての公開Gem作り初めての公開Gem作り
初めての公開Gem作り
 

古き良きRailsプロジェクトに wepbackとvue.jsを導入した話