1
/
5

Rails←React導入

弊社は創業からRuby on Railsを使用していましたが、創業から3~4年が経過した時点で、

「あれ・・サイト表示重くない??」

「画面遷移10秒くらい経たないと変わらないページあるよ・・」

とちらほら社内外からご意見(クレーム)をいただくことがあり、じゃあフロントエンド改善するかという流れになりました。React / Vueどちらか導入したいよねということになったのですが、ベースがrailsということで、erb / slimなどのviewの中でreactを使用できるgemがあるということでreact-railsを採用しました。

目次

  • Gemの導入

  • ファイルの準備

  • Reactコンポーネントの作成

  • Railsのviewファイル内でReactコンポーネントを読み込ませる

Gemの導入

GitHub - reactjs/react-rails: Integrate React.js with Rails views and controllers, the asset pipeline, or webpacker.
Integrate React.js with Rails views and controllers, the asset pipeline, or webpacker. - reactjs/react-rails
https://github.com/reactjs/react-rails


gemfileにgemを記述し、gemインストール後コマンドを実行し、Reactをインストール。

※ rails5以前は、webpackerが導入されていない場合導入が必要でshakapackerが必要かと思います。

# Gemfile

gem 'react-rails'
$ bundle install
$ rails wepacker:install:react
$ rails g react:install

上記コマンドを実行することで、app/javascript配下にcomponentsというフォルダが作成されるはずです。

今後作成していく、Reactコンポーネントファイル(.jsxファイル)についてはcomponentsフォルダ内で管理します。フォルダ内の構成については各社各人によるので、弊社はAtomicデザイン(以下の記事を参照した)を採用しました。

Atomic Design入門 - Qiita
最近Atomic Designという考え方を学んだので、コンポーネント指向と絡めつつ僕なりの理解をアウトプットしてみます。Atomic Designもコンポーネント指向も初心者なので、誤りがあれば...
https://qiita.com/Kazuhiro_Mimaki/items/3d9a8594064aab5119da



ファイルの準備

# routes.rb

Rails.application.routes.draw do
root "hoges#huga"
end


controller生成のため、rails g controller hogesを実行し、アクション名記載。

# hoges_controller.rb

class hogesController < ApplicationController
def huga
end
end

生成されたview/hogesディレクトリの中に、huga.html.erbを作成し、該当ファイル内にReactコンポーネントを記述していきます。


Reactコンポーネントの作成

$ rails g react:component <コンポーネント名>

※ ちなみに生成時に渡す予定のpropsについても記述することも可能。

$ rails g react:component <コンポーネント名> <props名:データ型>


試しに、testコンポーネントを作成する場合。

$ rails g react:component test

以下のファイルが生成される。

# test.jsx

import React from 'react';

const test = () => {
return (
<h1>Hello from React</h1>
);
};

export default test;

※ 上記は関数コンポーネントだが、classコンポーネントでも機能する。

# test.jsx

class Test extends React.Component {
constructor (props) {
super(props)
}

render () {
return (
<h1>Hello from React</h1>
)
}
}


Railsのviewファイル内でReactコンポーネントを読み込ませる

該当のファイル(今回はhuga.html.erbとする)に先ほど作成したtest.jsxを読み込ませる場合は、以下のように記述します。

<%= react_component("Test") %>

また、viewファイルからコンポーネントにpropsを渡したい場合は、以下のように記述する。

<%= react_component("Test", {
hoge: 'huga',
fizz: true,
buzz: false
}) %>


上記でrailsアプリケーションにreactを簡単に導入することができます。

ただ本gemについては、基本的にサーバとの通信はRailsを介さなければならないので、フロント・バックエンドを切り分け、react_componentメソッドを使用しないようにするためにはapplication.jsによしなに記述する必要があります。


READY TO FASHIONでは一緒に働くエンジニアを募集しています!

ファッションに興味があるエンジニアのご応募お待ちしております!

Railsエンジニア
ファッション×採用を加速させる!Railsエンジニア募集!
2016年11月に創業。ファッション業界特化の求人プラットフォーム「READY TO FASHION」を開発・運営するスタートアップです。 弊社は、若者や既存の枠を超える「人」の力によって、旧態依然としたファッション業界の変革を促進し、「業界に従事する人」や「ファッションを楽しむ人」の生活を豊かにすることを目指しています。 そのために、採用におけるコミュニケーションだけでなく、業界のコミュニケーションにおける課題をITの力で解決し続けます。 【主な事業内容】 ・求人メディア事業 ファッション業界特化の求人プラットフォーム「READY TO FASHION」 https://www.readytofashion.jp 弊社のメイン事業。2017年3月にプロダクトをリリースし、現在は900社を超えるファッション企業、50000人以上のユーザーに登録していただいております。アパレル業界だけでなく、広義的にファッションを扱う企業情報を掲載。 ・CtoCマッチング事業 ファッションビジネスマッチングアプリ「fatch」 2019年2月ローンチ:https://www.readytofashion.jp/lp/fatch ・メディア事業 ファッション好きな若者のためのWEBマガジン「READY TO FASHION MAG」 https://www.readytofashion.jp/mag/ ・コミュニティー|学生マーケティング事業 ファッション系学生団体の組織「fashion community 1.0」 https://www.readytofashion.jp/mag/fashioncommunity1_0.html ・イベント事業 株式会社 三越伊勢丹と共催の『DENIM ACT NIGHT(デニムアクトナイト)』 https://www.readytofashion.jp/mag/news/denim_act_night_201803/
READY TO FASHION
フロントエンドエンジニア
ファッション×HRを加速させるフロントエンドエンジニア募集!
2016年11月に創業。ファッション業界特化の求人プラットフォーム「READY TO FASHION」を開発・運営するスタートアップです。 弊社は、若者や既存の枠を超える「人」の力によって、旧態依然としたファッション業界の変革を促進し、「業界に従事する人」や「ファッションを楽しむ人」の生活を豊かにすることを目指しています。 そのために、採用におけるコミュニケーションだけでなく、業界のコミュニケーションにおける課題をITの力で解決し続けます。 【主な事業内容】 ・求人メディア事業 ファッション業界特化の求人プラットフォーム「READY TO FASHION」 https://www.readytofashion.jp 弊社のメイン事業。2017年3月にプロダクトをリリースし、現在は900社を超えるファッション企業、50000人以上のユーザーに登録していただいております。アパレル業界だけでなく、広義的にファッションを扱う企業情報を掲載。 ・CtoCマッチング事業 ファッションビジネスマッチングアプリ「fatch」 2019年2月ローンチ:https://www.readytofashion.jp/lp/fatch ・メディア事業 ファッション好きな若者のためのWEBマガジン「READY TO FASHION MAG」 https://www.readytofashion.jp/mag/ ・コミュニティー|学生マーケティング事業 ファッション系学生団体の組織「fashion community 1.0」 https://www.readytofashion.jp/mag/fashioncommunity1_0.html ・イベント事業 株式会社 三越伊勢丹と共催の『DENIM ACT NIGHT(デニムアクトナイト)』 https://www.readytofashion.jp/mag/news/denim_act_night_201803/
READY TO FASHION


このストーリーが気になったら、遊びに来てみませんか?
ファッション×HRを加速させるフロントエンドエンジニア募集!
READY TO FASHIONでは一緒に働く仲間を募集しています
1 いいね!
1 いいね!

同じタグの記事

今週のランキング

高草木 大地さんにいいねを伝えよう
高草木 大地さんや会社があなたに興味を持つかも