開発事例
Japan Voyage:三つのサイト、四か国語、Ruby masterで動く一つのRailsアプリ
自社サービス。一つのRails 8.1コードベースで三つのサイトを四か国語で提供し、iOS・Androidアプリも持ち、本番環境はRubyの開発ブランチで動いています。
サービスについて
Japan Voyageは、日本でゴルフ仲間、スキー仲間、旅行先を見つけるためのサービスです。ゴルフ、スノー、トラベルの三つの公開サイトと、それらをまとめるポータルで構成されていて、すべて一つのRailsアプリから配信しています。このWebサイトも同じアプリで動いています。
開発も運用も私たちが行っています。このページに書いたことは、すべて私たち自身が決めて、今も向き合っている判断です。
技術構成
- Rails 8.1、Hotwire(TurboとStimulus)、ViewComponent。JavaScriptのフロントエンドを別に持っていません。
- 一つのコードベースで三つのサイト。 サブドメインでサイトが決まり、配色、施設、文言がそれに従います。チャット、イベント、プロフィールなどの共通機能は一度だけ書いています。
- 四か国語:英語、日本語、フィンランド語、繁体字中国語。パスベースのロケールURLと、全ページのhreflang。
- iOS・Androidアプリ:Hotwire NativeでWebの画面を再利用し、Firebaseでプッシュ通知を送ります。
- リアルタイムチャット:ActionCable。
- 本番環境のSQLite、Falcon Webサーバー、CIから直接デプロイするKamal。
- データ:2,000以上のゴルフ場と500以上の旅行先。バージョン管理されたシードファイルで管理し、編集ごとに内容を検査するツールを用意しています。
Ruby masterでの運用
Japan Voyageの本番環境は、リリース版ではなく、Rubyの開発ブランチを毎晩ビルドした Ruby master で動いています。意図的にそうしています。次のRubyのリリースが実際のRailsアプリにどう影響するかを、お客様がアップグレードする数か月前に知ることができるからです。
もちろん代償もあります。2026年8月26日、Ruby masterの変更でFiberスケジューラのインターフェースが新しいバージョンに移りました。Falconが依存するio-event gemはまだ古いインターフェースを実装していたため、スケジューラ上の書き込みがすべて進まないまま空回りしました。ワーカーはCPUを100%使い続けてヘルスチェックに通らず、5回続けてデプロイが失敗しました。
原因を突き止め、Rubyのバージョンを固定するのではなく、新しいインターフェースに対応したio-eventのリリースに更新しました。さらに、指定したイメージ上でFalconの最小アプリを起動するスモークテストを作り、RubyやFalconの起動失敗とアプリ側の失敗を1分以内に切り分けられるようにしました。この種の問題を本番環境に届く前に見つけるのが、私たちのバージョンアップ支援です。
それ以前のRuby 3.4から4.0への移行はブログ記事にまとめています。
お客様の案件に活きること
- 多言語Railsの正しい作り方:ロケール別ルーティング、hreflang、サイトマップ、翻訳の運用
- Hotwire NativeでWeb、iOS、Androidを一つのコードベースに
- 少人数での運用:SQLite、Kamal、マージで自動デプロイするCI
- RubyとRailsの新バージョンを先に本番で使っているからこそ得られる、変更への早い気づき
ご相談内容をお聞かせください
アプリのことと、何をお望みかを数行でお送りください。2営業日以内に、日本語または英語で、次のステップと概算をご返信します。
サービス
Rails・Rubyバージョンアップ支援
古いRailsアプリを、作り直さず、機能開発も止めずに、最新のRailsとRubyへ段階的に移行します。まずは固定価格の調査・計画から。
調査・アップグレード計画:$1,500
Ruby on Rails受託開発
範囲のはっきりしたRailsの仕事を固定価格で。新しいアプリの最初のバージョン、機能一つ、不具合修正、月額の保守。
機能追加・不具合修正:$1,000〜
コード診断・セカンドオピニオン
御社のRailsアプリのコード、または受け取った提案書や見積もりを外部の目で診断し、次の判断に使える分かりやすい報告書にまとめます。
セカンドオピニオン:$500
JRuby・Java連携
RailsをJVMで動かす、RubyからJavaライブラリを呼ぶ、JavaシステムにRubyを組み込む。JRuby本体の開発にも参加しているので、問題を根本から直せます。
JRuby移行調査:$2,000〜
Spinel:Rubyをネイティブバイナリに
SpinelはMatzの新しいAOTコンパイラで、Rubyのサブセットを単体のネイティブバイナリに変換します。私たちはSpinelの開発に参加しており、御社のコードに合うかを判断できます。
実現性調査:$2,000