Rails 8.1は顧客ごとにDBを分離できるマルチテナント対応に。オフライン対応、Markdownレンダリング搭載など新機能
9月4日と5日の2日間、オランダ アムステルダムで開催されたRails World 2025の基調講演では、Ruby On Rails(以下、Rails)の作者であるDHH(David Heinemeier Hansson)氏がベータ公開された「Rails 8.1」の新機能などを披露しました。
その主な発表内容を紹介しましょう。
DHH氏の基調講演
DHH氏は基調講演の冒頭で、かつてのWebアプリケーションは1人のITエンジニアが書いたPHPファイルをサーバに置くだけ、わずか5秒でデプロイできていたのに、2025年現在では50人の開発チームが15分かけてデプロイしていると指摘。
「これは深刻なほど何かが大きく間違っている」(DHH氏)
それを包括的に解決しようとしているのがRailsというフレームワークであり、そこには哲学としてLibertas(自由)、Proprietas(所有)、Pietas(敬虔)があり、これを実現するRailsの範囲をさらに広げていくとしました。

Markdownレンダリング機能を搭載
DHH氏は、MarkdownはAIにとってのLingua Franca(共通言語)だとして、Rails 8.1ではMarkdownレンダリング機能を搭載してMarkdownの入出力を可能にするとしました。

また、デフォルトのリッチテキストエディタをこれまでのTrixに代わりLexxyを採用すると発表しました。

exxyはMetaの開発チームが開発したLexicalというテキスト編集フレームワークを用いており、さまざまなプログラミング言語でライブシンタックスハイライトが可能。

Action Job Continuations
「Action Job Continuations」は、プロセスを失うことなく一時停止と再開を可能にする新機能です。
例えばデータのエキスポートなど長時間かかるタスクを複数のジョブに分割して実行できると説明されました。

HotWire Nativeはオフライン対応へ
ネイティブアプリ用のHotWire Nativeでのオフライン対応「Turbo Offline」は次の二段階で実装されます。

第一段階は実行時のキャッシュ。例えばメールを開くとその処理の実行時に内容がキャッシュされ、オフライン時にはキャシュを基にそのメールを開くことができるようになります。
第二段階では、例えば「旅行フォルダ」のようにあらかじめ特定の条件を設定しておくと対象となる情報が事前にキャッシュされ、オフラインで開けるようになります。
これらはHotwire Native 1.3から実装される予定です。

顧客毎にデータベースを分離するマルチテナント機能
Railsを顧客の近くにあるデータセンターにデプロイすることで、より小さなレイテンシでアプリケーションを利用してもらえるようになります。
そのために実現しようとしているのが、顧客ごとにデータベースを分離するマルチテナント機能「Active Record Tenanting」です。
顧客ごとに1つのデータベースを割り当て、全てのデータをそのデータベース経由で処理できるようにします。

これにより顧客ごとに世界中の近い場所にデータベースを配置でき、全体の性能向上だけでなくデータのプライバシー、バックアップなども向上します。
その上で分散したデータベースを同期させる仕組みが必要となります。その同期を実現する仕組みが「Beamer」です。

BeamerはSQLデータベースのレプリケーションを実現するシンプルな仕組みで、MySQLとSQLiteに対応。
DHH氏は、顧客ごとにデータベースを持つのであればSQLiteの方が優れていると考えていると説明しました。
そしてユーザー自身に近い場所へ地理的ルーティングを行うのが「Kamal Geo Proxy」です。このルーティングはデータベースからデータを読み込む際に行われます。

読み込みについてはデータベースごとに分散される一方で、データの書き込みについては引き続き一元管理されます。
書き込みが行われた直後に、別のデータベースで読み込みが行われた場合、書き込み前の古いデータが読み取られないようにする仕組みが「Sesion affinity」です。

これはトランザクションIDに情報を集約し、そのトランザクションIDが読み込みれるデータベースで利用可能になっているかどうかを判断することで、読み込むデータベースをリダイレクトする仕組みです。

いくつかの機能はすでにベータ公開されたRails 8.1で利用可能になっているとのことです。