Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Islands on Rails !!

Avatar for matsudai matsudai
October 24, 2025
52

Islands on Rails !!

Izumo Developers' Guild Brazilian BBQ(第10回)
https://izumo-developers-guild.connpass.com/event/365015/

Avatar for matsudai

matsudai

October 24, 2025
Tweet

Transcript

  1. 実現方法 ↓ Vite (React) ↑ Rails • ReactコンポーネントをRailsで利用するには 🤔 ◦

    Vite (React) は設定でESModule(ESM)へビルド可能 ✅ ◦ RailsはデフォルトのimportmapでESMを取込可能 ✅ ◦ TailwindCSSのビルドツールはフレームワーク非依存 ✅     → これでいけそう! ① Reactコンポーネントを ESMにビルド   → Railsでimport ② React側のCSSをRailsでimport   → TailwindCSSでビルド
  2. 実現方法 代表的な設定 時間がないので飛ばす 今回のリポジトリ:  https://github.com/matsudai/islands-on-rails-sample Rails: ReactのESM・CSSのロード設定 Vite (React): ESMへのビルド

    ※ 実際はモジュール(React/Tailwind)   の導入や、Railsサーバ起動時に   Viteのビルドサーバを起動する設定   が必要なので↓をご確認ください。
  3. • React/Railsの境界をHTTP APIでなくJSオブジェクトにする方法の紹介 • 利点・欠点: ◦ ❌ Reactコンポーネントの呼び出し方にクセがある ◦ ⭕

    JSON APIが不要 ▪ → CORS設定、CSRF対策、エラーハンドリング複雑化などの回避 ◦ ⭕ WebSocketによる双方向通信 も簡単に実装可能 ◦ ⭕ Railsのデフォルト (importmap)で実現可能 ▪ → Railsで開発を進めていき、 UIに行き詰ってから導入できる   → UIへの要求・開発体制に応じた段階的導入が可能、    開発初期からビジネス上の課題解決に集中できる! まとめ 今回のリポジトリ:  https://github.com/matsudai/islands-on-rails-sample
  4. 余談 「アイランド・アーキテクチャ 」  - パフォーマンスのため基本的にサーバ側でページを生成。    クライアント(Webブラウザ)側で部分的なコンポーネントを生成。              ↓ 今回は ↓

    「アイランド …?      」  - 基本的にRailsでページを生成・更新(サーバ側+動的なデータの搬送) 。    クライアント側(React)で複雑なUIコンポーネントを生成。