Rails 8.1は顧客ごとにDBを分離できるマルチテナント対応に。オフライン対応、Markdownレンダリング搭載など新機能

2025年9月10日

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の範囲をさらに広げていくとしました。

fig

Markdownレンダリング機能を搭載

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

fig

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

fig

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

fig

Action Job Continuations

「Action Job Continuations」は、プロセスを失うことなく一時停止と再開を可能にする新機能です。

例えばデータのエキスポートなど長時間かかるタスクを複数のジョブに分割して実行できると説明されました。

fig

HotWire Nativeはオフライン対応へ

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

fig

第一段階は実行時のキャッシュ。例えばメールを開くとその処理の実行時に内容がキャッシュされ、オフライン時にはキャシュを基にそのメールを開くことができるようになります。

第二段階では、例えば「旅行フォルダ」のようにあらかじめ特定の条件を設定しておくと対象となる情報が事前にキャッシュされ、オフラインで開けるようになります。

これらはHotwire Native 1.3から実装される予定です。

fig

顧客毎にデータベースを分離するマルチテナント機能

Railsを顧客の近くにあるデータセンターにデプロイすることで、より小さなレイテンシでアプリケーションを利用してもらえるようになります。

そのために実現しようとしているのが、顧客ごとにデータベースを分離するマルチテナント機能「Active Record Tenanting」です。

顧客ごとに1つのデータベースを割り当て、全てのデータをそのデータベース経由で処理できるようにします。

fig

これにより顧客ごとに世界中の近い場所にデータベースを配置でき、全体の性能向上だけでなくデータのプライバシー、バックアップなども向上します。

その上で分散したデータベースを同期させる仕組みが必要となります。その同期を実現する仕組みが「Beamer」です。

fig

BeamerはSQLデータベースのレプリケーションを実現するシンプルな仕組みで、MySQLとSQLiteに対応。

DHH氏は、顧客ごとにデータベースを持つのであればSQLiteの方が優れていると考えていると説明しました。

そしてユーザー自身に近い場所へ地理的ルーティングを行うのが「Kamal Geo Proxy」です。このルーティングはデータベースからデータを読み込む際に行われます。

fig

読み込みについてはデータベースごとに分散される一方で、データの書き込みについては引き続き一元管理されます。

書き込みが行われた直後に、別のデータベースで読み込みが行われた場合、書き込み前の古いデータが読み取られないようにする仕組みが「Sesion affinity」です。

fig

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

fig

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

関連記事

あわせて読みたい

プログラミング言語 Ruby




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本