SlideShare a Scribd company logo
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
Rails環境に導入できる
最適なVue構成を探る
2018.12.12 オタクが最新技術を追うライトニングトークイベント
株式会社虎の穴 開発室
JUNE-JUNE
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
今回話すこと
1. 自己紹介
2. なぜRails環境に?
3. 導入準備
4. 導入パターンその1(htmlと完全API連携)
5. 導入パターンその2(コンポーネント)
6. 次やりたいこと
2
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴 自己紹介
名:JUNE-JUNE
‣ 現在:N代目ファンティアマン
‣ 前職:スマフォアプリサーバーサイドエンジニア
   +プロジェクトリーダーみたいなことやってた
オタク
‣ えろげ(ランス大好き)
‣ フリーゲーム(いろいろやってます)
‣ アニメ(毎週10本程度)
3
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
はじめに
4
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
Vue.jsって何?
5
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴 Vue.jsって何?
‣ 人気急上昇中のJavascriptフレームワーク
‣ PHPの神フレームワークLaravelも採用
‣ DMMとかLINEとか任天堂とかが採用している
‣ 書き方がシンプル
‣ ドキュメントがめっっっっっちゃ充実
‣ 学習効率が良い
‣ デザイナーに優しい 6
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
なぜRails環境に?
7
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴 なぜRails環境に?
某プロジェクトは
Rails × Angular.js
8
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴 なぜRails環境に?
ぶっちゃけ改修が困難
やーい、
へっぽこプログラマー
9
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴 なぜRails環境に?
必ずしもAngularが悪いわけではないが、
当時作られたコードが読みにくい。
↓
どうせなら可読性を高めた上で、
リニューアルしたい。
10
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
え、どうしてRailsを使い続けるのかって?
nodeで全部作っちゃえよって?
11
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴 Railsを使い続ける理由
controllerやmodelに蓄積されたコードを、
別言語で書き直すのは非現実的。
直すなら一気にやるのではなく、
既存の処理を残したまま1画面ずつリリースしたい。
12
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴 導入準備
頑張ってRailsを5.1以上にする
頑張ってWebpackerを導入する
Webpacker不要論は置いておいて・・・
13
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴 いろいろやった
# Gemfileにwebpackerを追加した後に
$ bundle install --path vendor/bundler
# webpackerが使うからにゃーんをインストールだにゃーん
$ npm i -g yarn
# rails環境にvue環境を導入
$ rake webpacker:install
$ rake webpacker:install:vue
# .vueファイルを読み込めるように loaderをインストール
$ npm install vue-loader --save
# vue公認のAPI実行ライブラリのaxiosをインストール
$ npm install axios --save
# vueを含めたコンパイルコマンド
$ bin/webpack 14
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
導入パターンその1
(htmlと完全API連携)
誰でもわかるような構成(大事)
htmlにコンパイルされたVueライブラリと、
JSコードを読み込ませる
15
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
導入パターンその1
(htmlと完全API連携)
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
そもそもVue.jsは・・・
上記のようにCDNをhtml上で
読み込むだけでも使える。
これをwebpackerを使ったコンパイル環境で
同様のことをする場合はどうすればいいのか?
16
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
導入パターンその1
(htmlと完全API連携)
webpacker+vue導入時に
デフォルトで入っている
hello_vue.jsの構成を
参考にする。
javascript_pack_tagは
app/javascript/packs/*
内のJSファイルを読む。
17
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
導入パターンその1
(htmlと完全API連携)
こういった形で読み込みたいJSファイルを記載。
18
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴 html(erb)ファイルのサンプル
19
ここ大事!
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴 jsファイルのサンプル
20
ここ大事!
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
導入パターンその2
(コンポーネント)
各社がVueを採用している理由となる機能。
コンポーネントも覚える必要が。
21
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
ちょっと待って
導入パターンその2
(コンポーネント)
22
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
コンポーネントってなに?
やーい、
へっぽこプログラマー
導入パターンその2
(コンポーネント)
23
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
コンポーネント化とは
「「「プログラムの部品を作ること」」」
HTML
CSS
Javascript
HTML
CSS
Javascript
バラバラだった奴らを…
パーツ単位でひとつのファイルとする!
導入パターンその2
(コンポーネント)
24
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴 導入パターンその2
(コンポーネント)
じゃあVueのコンポーネント化ってどうやるの?
→.vueという拡張子のファイルが、コンポーネントとして扱われる
***.vue
html
css
javascript
HTML
CSS
Javascript
※グローバルな参照ファイルからの
影響がなくなり、部品単位での改修が容易に
25
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
よしやってみよう
導入パターンその2
(コンポーネント)
26
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
が・・・
導入パターンその2
(コンポーネント)
27
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
Rails環境における
Vueのコンポーネント実現のやり
方、実に謎。
やーい、
へっぽこプログラマー
導入パターンその2
(コンポーネント)
28
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
どうやってRailsのルーティングから
*.vueのコンポーネントまで辿り着くのか?
導入パターンその2
(コンポーネント)
29
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
導入パターンその2
(コンポーネント)
困った時はGithub。
Rails×Vue.jsのサンプルを見つけよう!
30
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
導入パターンその2
(コンポーネント)
良さそうなサンプルがありました。
https://github.com/gbarillot/rails-vue-demo-app
31
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
導入パターンその2
(コンポーネント)
サンプルプロジェクトが導入していたライブラリ。
"vue" // 必須。
"vue-i18n" // 多言語化ライブラリ。今回は除外。
"vue-loader" // .vueファイルコンパイルのため必須。
"vue-router" // vueでSPAを実現するため必須。
"vue-template-compiler" // 必須。
"vuex" // 状態管理ライブラリ。今回は除外。
32
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
こういった流れになっております。
Rails
routes
導入パターンその2
(コンポーネント)
Rails
Controller
Rails
View
webpack
js
vue-routes
routes
vue-loader
*.vue
33
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴 ルーティングでVue共通のコントローラーに遷移。
Rails
routes
Rails
Controller
34
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
Rails
View
35
ここ大事!
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
(中間ソース省略)
Webpack
js
36
ここ大事!
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
vue-routes
routes
37
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
vue-routes
*.vue
嫌な予感がする
コードだなぁ…
38
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
導入パターンその2
(コンポーネント)
そして・・・
39
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
導入パターンその2
(コンポーネント)
画面が表示されました
※実際の画面を見てね⭐
40
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
導入パターンその2
(コンポーネント)
え、それだけ?
41
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
導入パターンその2
(コンポーネント)
いやいや、次がありますよ
42
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
・不要論含めてWebpackerについてもっと理解する
・Vueの機能をもっと実用する
・既存の画面に影響を与えない構成をさらに研究する
・vuexの使い方を覚える
次やりたいこと
43
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
虎の穴
・Webpackerの導入(依存関係でタヒぬ)
・とにかくWebpackerの導入
・何よりもWebpackerの導入が大変
・Rails × Vueの事例が少なすぎる
大変だったこと
44

More Related Content

PPTX
ユニプロでの半年間
PDF
"たいたにうむ"な1ヶ月間 @Titaniumもくもく会 #16
PPTX
メタ プログラミングについて
PPTX
Type script x azure x pwa
PDF
プリキュアのRuby実装の紹介 #tqrk08
PDF
Building Static Website With Github And Jekyll
PDF
地獄Spec
PDF
Rails Tokyo 035 Cucumber
ユニプロでの半年間
"たいたにうむ"な1ヶ月間 @Titaniumもくもく会 #16
メタ プログラミングについて
Type script x azure x pwa
プリキュアのRuby実装の紹介 #tqrk08
Building Static Website With Github And Jekyll
地獄Spec
Rails Tokyo 035 Cucumber

What's hot (11)

PDF
JGGUG grails-spring-boot
PDF
超大量トラフィックとAWSと私
PDF
PDF
Twitter API最新事情 - API Meetup Tokyo #1 #apijp
PDF
Enumerate
PDF
Zappa で Serverless CMS を作ってみる
PDF
第2.1回Twitter API勉強会 - 検索API
PDF
Rabbit on Sinatra
KEY
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
PDF
World plonedaylt
PDF
Alexaの電卓スキルを作ってみる
JGGUG grails-spring-boot
超大量トラフィックとAWSと私
Twitter API最新事情 - API Meetup Tokyo #1 #apijp
Enumerate
Zappa で Serverless CMS を作ってみる
第2.1回Twitter API勉強会 - 検索API
Rabbit on Sinatra
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
World plonedaylt
Alexaの電卓スキルを作ってみる
Ad

Similar to Rails環境に最適なVue.js構成を探る (20)

PDF
Rubyの会社でPythonistaが3ヶ月生き延びた話
PDF
Rubyの会社でPythonistaが三ヶ月生き延びた話
PDF
Pepperのアプリ開発について - ABC2015 Summer -
PDF
Next GAE Heroku を使って 3分でRailsアプリをリリース
PPTX
ゆとりエンジニア交流会_20130706
PDF
New Relic with PHP
PDF
ARラジコン開発中2
PDF
Zaim 500万ユーザに向けて
PDF
Raspbian, OpenCV and about me(Takachiho.rb)
PDF
Storm の新機能について @HSCR #hadoopreading
PPTX
190731 chalice
PDF
GitHubEnterpriseからBitbucket(Stash) への移行事例
PPTX
Rancherカタログ紹介 Hadoop + Yarn
PDF
PaaSで簡単Railsアプリを公開しよう!
PDF
Cent osにpyhtonをインストールしてみよう
PPT
2006-04-22 CLR/H #14 .NET and open source
PPTX
AWS(Rekognition)と Pepperでご機嫌解析
KEY
ElephantJS
PDF
Riot.jsとフォームのデータバインディング
PDF
今年は広島関連のアニメがすごい!
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
Pepperのアプリ開発について - ABC2015 Summer -
Next GAE Heroku を使って 3分でRailsアプリをリリース
ゆとりエンジニア交流会_20130706
New Relic with PHP
ARラジコン開発中2
Zaim 500万ユーザに向けて
Raspbian, OpenCV and about me(Takachiho.rb)
Storm の新機能について @HSCR #hadoopreading
190731 chalice
GitHubEnterpriseからBitbucket(Stash) への移行事例
Rancherカタログ紹介 Hadoop + Yarn
PaaSで簡単Railsアプリを公開しよう!
Cent osにpyhtonをインストールしてみよう
2006-04-22 CLR/H #14 .NET and open source
AWS(Rekognition)と Pepperでご機嫌解析
ElephantJS
Riot.jsとフォームのデータバインディング
今年は広島関連のアニメがすごい!
Ad

More from 虎の穴 開発室 (20)

PDF
FizzBuzzで学ぶJavaの進化
PDF
Railsのデバッグ どうやるかを改めて確認する
PDF
虎の穴ラボ エンジニア採用説明資料 .pdf
PDF
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
PDF
toranoana.deno #6 アジェンダ 採用説明
PDF
Deno 向け WEB 開発用のツールを作ったので 紹介します
PDF
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
PDF
GCPの画像認識APIの紹介
PDF
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
PDF
GitHub APIとfreshで遊ぼう
PDF
通販開発部の西田さん「通販開発マネジメントの5ルール」
PDF
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
PDF
セキュリティを強化しよう!CloudArmorの機能解説
PDF
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
PDF
Amplify Studioを使ってみた
PDF
いいテスト会 (スプリントレビュー) をやろう!
PDF
【Saitama.js】Denoのすすめ
PDF
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
PDF
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
PDF
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
FizzBuzzで学ぶJavaの進化
Railsのデバッグ どうやるかを改めて確認する
虎の穴ラボ エンジニア採用説明資料 .pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
toranoana.deno #6 アジェンダ 採用説明
Deno 向け WEB 開発用のツールを作ったので 紹介します
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
GCPの画像認識APIの紹介
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
GitHub APIとfreshで遊ぼう
通販開発部の西田さん「通販開発マネジメントの5ルール」
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
セキュリティを強化しよう!CloudArmorの機能解説
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
Amplify Studioを使ってみた
いいテスト会 (スプリントレビュー) をやろう!
【Saitama.js】Denoのすすめ
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント

Rails環境に最適なVue.js構成を探る