Remix、Reactやめるってよ
Reactをベースとしたフルスタックウェブフレームワーク「Remix」の開発者2人が、その開発を再開するとブログで発表しました。
記事の中では、Reactへの依存から脱するという方針も示唆されています。
この再開の背景について、テック系YouTubeチャンネル「Awesome」がまとめています。以下の文章はその内容を要約したものです。
Remix 3はReactを外し、ウェブ開発を再定義する…(要約)
JavaScriptのエコシステムが混沌とする中、Remixは2020年10月に有償のフレームワークとしてローンチされました。当初はドキュメントですら一般開放されていませんでしたが、2021年10月に300万ドルのシード資金を確保したのちにオープンソース化されたという経緯があります。
今回の再開に先立って、Remixは昨年の夏に「昼寝をとる」(take a nap)と開発休止を発表しています。というのもRemixは今日までの開発でReact Routerの「ファンシーなラッパー」(fancy wrapper、包装紙のこと)と成り果ててしまい、それにより「アイデンティティの危機」に陥ったのだ、と動画は説明しています。代わりに開発者たちはReact Router v7にRemixの良いコンセプトを統合しましたが、これはReact Routerにおける「フレームワークモード」と呼ばれています。現在、React RouterはReact Server ComponentやServer-only Routeといった新しい機能を搭載すると同時に、NASAやShopifyなどの超大手企業にも採用されています。
RemixがReact Routerになってしまったのだとしたら、Remixはいったいどうなってしまうのでしょうか?それが今回のRemix v3発表のポイントであると動画は指摘しています。Remix v3は単なる新バージョンではなく、「より早く、よりシンプルに、よりウェブそのものに近い」(faster, simpler, and closer to the web itself)という新しい方向を示すものだというのです。そのためには「フルスタックを自ら所有すること」(own the full stack)が必要であり、制御が及ばない抽象レイヤーをそれ自体にもつReactへの依存性も排除されねばなりません。具体的にはPreactをフォークすることで、開発者たちはこれを実現しようとしています。
こうしたことから、新しいRemixはReactのフレームワークではなく、コンポーネントライブラリとデータベースドライバーを統合した、モジュラーなツールキットを目指していることがわかります。この背景には、AI(大規模言語モデル)にも理解しやすいフレームワークという狙いもあるでしょう。Angularはすでにこの路線を走っていますが、動画はその将来性を疑問に付しています(the writing is on the wall)。
また、動画はRemix v3に関するこれらの変更がまだ計画段階であり、公開プレビューやドキュメントはまだ利用できないことにも触れています。開発チームが主張する原則が政治家の公約から出てきたよう(came out of a manifesto)だと皮肉りつつも、新しいRemixがより軽量で、筋が通っており、本当の意味でフルスタックな体験をもたらすことに期待を寄せて結びとしています。
私感
ウェブ標準にのっとった堅実で薄いフレームワークというRemix(React Router v7)のコンセプトは、重厚な新機能を搭載しながらReactへの密結合をますます強めていくNext.jsへのカウンターとして、実際に広く受け入れられていました。Reactそのものへの依存を廃するという決意表明にはそこそこ驚きましたが、記事中で言及されているとおりPreactなど成熟したライブラリは他にもあり、AstroやTanstack Starter(Tanstack Router)といったフレームワークを選ばないメタフレームワークのトレンドなどを見ても、そこまで飛び抜けた方針転換でもないのかなという印象はあります。
しかし、「薄くて軽いフレームワーク」という目的地が、それ自体すでに群雄割拠の様相を呈してもいます。先に挙げたAstroやTanstack Starterもそうですし、Denoのフルスタックフレームワークで、やはりPreactをフロントエンドに推奨しているFreshも、最近バージョン2のプレリリースバージョンを出しました。そして、サーバーサイドを基盤としつつ、さまざまなレベルでJSXのレンダリング戦略を採用できるHono(HonoX)が、世界で絶大な人気を獲得しつつあります。
こうした状況において、Remixはいったいどのような開発体験を提示することができるのでしょうか。Reactとの付き合いはほどほど続けつつ、気長に待ちたいと思います。
Discussion