RubyonRails

Rails8とReactの統合ガイド | Vite + APIモード

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

RailsとReact統合の基礎知識

Rails 8環境でReactを統合することで、バックエンドとフロントエンドを分離した開発が可能になります。これにより、UI/UXの柔軟性向上や開発効率の改善が期待できます。本ガイドでは、Vite + APIモードという最新手法でRailsとReactを統合する手順を解説します。

なぜRailsとReactを統合するか

Railsはバックエンドの安定性と迅速な開発性を兼ね備えていますが、単一の技術スタックでは現代的なUI構築に限界があります。一方で、Reactはコンポーネントベースの設計により、動的かつ使いやすいユーザーインターフェースを構築できます。この組み合わせにより、データ駆動型の高機能なアプリケーション開発が可能になります。

本ガイドで使用する技術スタック概要

本ガイドでは以下のような技術スタックを使用します。

技術 説明
Rails 8 バックエンドフレームワークとして採用
Vite Reactプロジェクトのビルドツールとして使用
APIモード RailsとReactを分離した通信形式を採用(ActionController::APIに基づく簡易なコントローラー構成)
jsbundling-rails JavaScriptのバンドリングをRailsに統合

この組み合わせは、開発効率と運用性のバランスが取れた最新手法です。


jsbundling-railsの導入手順

Rails 8標準のjsbundling-railsを使用することで、JavaScriptバンドルをシンプルかつ効率的に管理できます。以下に導入手順を解説します。

Gemfileへの追加手順

  1. Gemfileを開き、以下の行を追加してください:
    ruby
    gem 'jsbundling-rails'

  2. コマンドで依存関係をインストールします:
    bash
    bundle install

  3. rails app:javascript:installコマンドで初期設定を行います。

Webpackerからの移行注意点

  • Rails 7以前ではWebpackerが使用されていましたが、Rails 8ではjsbundling-railsがデフォルトです。
  • 移行する際には、以下のような手順を実施してください:
  • app/javascript/packsディレクトリ内のファイルを削除
  • config/webpacker.ymlなどのWebpacker関連設定ファイルを削除
  • package.jsonにViteやReactの依存関係を追加
  • 注意:Webpackerとjsbundling-railsは互換性がありません。プロジェクト内に両方存在している場合は、不要なライブラリを削除してください。

ViteでReactプロジェクトを構築する方法

Viteは高速な開発サーバーとビルドツールとして知られ、Reactプロジェクトの構築にも最適です。以下に手順を解説します。

create-viteコマンドの実行手順

  1. Railsアプリケーションルート直下で以下のコマンドを実行します:
    bash
    npx create-vite@latest react-app --template react

  2. 生成されたディレクトリに移動し、依存関係をインストールします:
    bash
    cd react-app
    npm install

  3. 開発サーバーを起動します:
    bash
    npm run dev

補足:ViteはTypeScriptやCSS Modulesもサポートしており、将来的な拡張性が高くなります。

APIモード設定時のディレクトリ構成例

RailsとReactをAPIモードで運用する場合の推奨的なディレクトリ構成は以下のようになります:

重要:Viteの設定(vite.config.js)では、Railsアプリケーションとの通信パスを正しく指定しないとエラーが発生します。


ReactコンポーネントをRailsビューに埋め込む方法

Railsビュー(ERBファイル)でReactコンポーネントを使用するには、react-rails gemやViteの設定が必要です。以下に手順を示します。

react-rails gemの導入

  1. Gemfileに以下の行を追加します:
    ruby
    gem 'react-rails'

  2. 依存関係をインストール後、rails generate react:installコマンドで初期設定を行います。

ERBテンプレート内のReactレンダリング

  1. Railsビュー(例: app/views/home/index.html.erb)に以下のように記述します:
    erb
    <%= react_component("MyComponent", { message: "Hello from Rails!" }) %>

  2. ReactコンポーネントはViteで生成されたプロジェクト内に配置し、エクスポートする必要があります。

注意:Reactコンポーネントが正しくロードされない場合は、Viteの設定ファイル(vite.config.js)を確認してください。


CORS設定とAPI通信の確認

RailsからReactアプリケーションにデータを送信する際には、CORS(クロスドメインリソース共有)の設定が不可欠です。

Rails側のCORS設定手順

  1. config/application.rbに以下の行を追加します:
    ruby
    config.middleware.insert_before 0, Rack::Cors do
    allow do
    origins 'http://localhost:3000' # Railsがデフォルトで起動するポート
    resource '*', headers: :any, methods: [:get, :post, :options]
    end
    end

  2. バックエンドを再起動して設定を反映します。

Fetch APIでのデータ取得サンプル

Reactアプリケーション側でRailsからデータを取得する例です:

補足:APIモードでは、RailsがJSON形式でレスポンスを返す必要があるため、コントローラーの設定も確認してください。


データバインディング実装例

RailsとReact間でのデータ受け渡しには、JSONフォーマットを使用します。以下に基本的な手順を示します。

Railsコントローラーからのデータ送信

  1. コントローラーでデータをJSON形式で返す例です:
    ruby
    def index
    @items = Item.all
    render json: @items, each_serializer: ItemSerializer
    end

Reactコンポーネントでの受信処理

  1. 受け取ったデータをReactコンポーネントで表示する例です:
    javascript
    useEffect(() => {
    fetch('http://localhost:3000/api/items')
    .then(response => response.json())
    .then(data => setItems(data))
    }, []);

return (

{items.map(item => (

{item.name}

))}

);

注意:Reactコンポーネントは「ステート管理」にuseStateuseEffectを使用して、データの変更を反映してください。


まとめ

本記事では、RailsとReactを統合するための基礎知識と実装手順を解説しました。以下のポイントをおさえてください:

  • jsbundling-railsでRails 8に最適なJavaScriptバンドリング環境を構築
  • Vite + APIモードでフロントエンド開発の効率化を実現
  • ReactコンポーネントをERBビューに埋め込む方法とCORS設定の注意点
  • RailsとReact間でのデータバインディングにおけるJSON送信の仕組み

本ガイドに従って環境構築を行い、Reactコンポーネントが正しく表示されることを確認してください。問題が発生した場合はコメント欄で質問ください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-RubyonRails