GitHub創設者のひとりであるTom Preston-Werner氏が、エッジに対応したフルスタックJavaScipt WebフレームワークのRedwoodJSを新たにリリースした。Redwoodは独特の思想を持っており、事前定義されたバックエンドとフロントエンドを統合する。"設定より規約(convention-over-configuration)"の原則に基づいて、Ruby on Railsライクな開発者エクスペリエンスの提供を目標としている。
RedwoodJS GitHubプロジェクトでは、Redwoodを次のように説明している。
Redwoodは独自の思想を持った、フルスタックでサーバレスのWebアプリケーションフレームワークです。JAMstackアプリケーションを簡単に構築し、デプロイすることができます。CDNによって静的に提供されるReactフロントエンド、それらとGraphQL経由で通信し、AWS Lambda上で世界中にわたって動作するバックエンド、これらがすべて
git push
のみでデプロイ可能だと想像してください — それがRedwoodなのです。Redwoodがあなたに代わってさまざまな決定をしてくれることで、多種多様なテクノロジやコンフィギュレーションを何度も選択するという無駄なサイクルに時間を浪費することなく、自身のアプリケーションに特別な価値を与えるための作業に注力することが可能になるのです。
それゆえにRedwoodのスタックには、React、GraphSQL(Apollo)、Prisma、Babel、Webpackが含まれており、今後も追加される予定である(JestあるいはStorybookなど)。それらに加えて、クライアントサイドJavaScipt、再利用性のあるAPI、ビルド済のMarkupをベースとする最新のWeb開発アーキテクチャである、Jamstackの構造も踏襲している。Redwoodは自動デプロイメントとサーバレスアーキテクチャを採用している。
そのアーキテクチャは次図のようになる。
(RedwoodJSアーキテクチャ、Netlify blogより)
Redwoodには独自のルーティングソリューションが組み込まれており、リンクを失うことなくルートパスを更新できる。
EmberのようにCLIジェネレータも多数付属し、一般的な操作(プロジェクトやルート、コンポーネントの新規作成など)のボイラープレートの削減と、規則の適用の両立を実現している。
Redwood Cellsは、リモートデータのフェッチにおける複数の状態(ローディング、エラー、成功)を処理するための宣言的アプローチを提供する。Redwood Formsでは、フォームの管理に、先日2020 GitNation React OS Awardに選ばれたReact Hook Formsを採用している。
あるRedditユーザはRedwoordを歓迎し、Railsに例えている。
リリースおめでとうございます。これはまさにJavascript時代のRailsとも言うべきもので、次のような移り変わりを実現します。
- REST => GraphQL,
- Sprockets => Babel/webpack,
- VM => Lambda,
- Caching => Static site,
- ERb => React,
- Active Record => Prisma,
- Rspec => Jest,
- routes.rb => Routes.js
別のRedditユーザは、Redwoodの行った選択を開発者の立場から評価している。
お決まりのツールボックスを持ってすぐに仕事に取り掛かれるようになれば、概念実証や、アプリの対処する問題とそれに対して提供するソリューションの形式化が簡単にできるようになります。その上に迅速なフィードバックループがあるのですから、言うことはありません。
この意見は、Geertjan Wielenga氏がエンタープライズシステムの世界におけるスタックの拡大を取り上げた、FOSDEM'20での講演の際のコメントを思い起こさせる。
企業組織の中においては、全員が自分の使用すべきスタックを自分自身で見つける、ということは望めません。
他の開発者たちは、Redwoodスタックの特定の部分に対して、例えば次のような疑問を呈している。
Prismaは、高度なユースケースに対して間違いなく制限があります。2年間使用してきましたが、この理由から現在はPostgraphileに移行中です。Prisma 2は解決策にならないばかりか、さらに悪くなっています。
別の開発者は、次のように述べている。
Lambda関数の長さには制限がありますし、サーバレスはリレーショナルデータベースへの接続に難があります。[…]
[Redwoodは]現在まだテスト中のPrism 2に大きく依存しています。
Redwoodの資料には、このソフトウェアはまだ積極的な開発が続けられている段階であるので、使用には注意が必要だ、という説明がある。
"make it work; make it right; make it fast(まず動かす、次に正しくする、そして速くする)"というパラダイムの中で、Redwoodは"make it work"の最終段階にあります。
RedwoodはMITライセンスのオープンソースプロジェクトである。フィードバックやコントリビューションは、それぞれのガイドラインに従うことを条件に歓迎される。