🪦

Recoilは状態管理の選択肢ではなくなってしまった

2024/03/10に公開

TL;DR

  • Recoilはもうメンテナンスされていない。理由は不明だが、このプロジェクトは死んでしまった。
  • メンテナンスされていないライブラリの使用はやめよう、別の選択肢を選ぼう

Recoil

Meta社が新規に作成した状態管理ライブラリです。この記事はRecoilの解説記事ではないので詳細は省きますが、大変な期待を抱くには十分なほど魅力的なパッケージでした。

ですが Recoilの現在のリポジトリを見ればわかると思いますが、半年以上前に更新が止まっています。
おそらく、recoilプロジェクトは凍結されました。
つまり、もう更新は期待できないということです。

どうしてこのような状況になったのか

どこかの会社が所有しているOSSプロジェクトが凍結される理由は、ビジネス的な問題か、主要コントリビューターが会社を去った場合に起きると考えられます。そして、Metaは規模にかかわらずここ最近ニュースになるぐらいにはレイオフを繰り返しています。
しかし、どれが原因なのかは重要ではありません。肝心なのはプロジェクトが止まったということです。

recoilは、状態管理ライブラリの選択肢から外されるときが気たようです。それもずいぶん前に。

そもそもメンテナンスされていないものを使うということ

ほとんどのエンジニアにとって、メンテナンス されていない ソフトウェア、ライブラリを使うということは、選択肢に上がらない、あるいは上げづらいことです。理由は様々ですが、以下の理由が挙げられるでしょう。

セキュリティ

おそらく、ほとんどの場合によってこれが最大の問題となります。
メンテナンスされていないということは、潜在的な脆弱性が放置されるということです。かつ、脆弱性がわかっても対応がなされないということでもあります。
CVEの一覧を見たことがある人はそう多くないと思いますが、ほとんどのパッケージマネージャは脆弱性があるパッケージに対してwarningあるいは近いものを報告すると思います。

脆弱性が発生する理由は様々です。コードのミスは当然ですが、他の理由によっても発生します。それは、依存しているパッケージに脆弱性があった場合です。
この文章だとわかりにくいですが、たとえばrecoilが依存しているパッケージに脆弱性があれば、当然recoilにも脆弱性があり、攻撃に対して弱くなる可能性が出てきます。
そうなればメンテナンスされていない以上、アップデートが降ってこないために脆弱性がある状態での開発を強いられることでしょう。

互換性

技術は日々進歩しています。特に、フロントエンドのように進歩が激しい場合はそうでしょう。
JavaScript、TypeScript、そしてReactは日々機能改善がされ、アップデートされます。特にReactはかなりの大幅な変更(破壊的とは言いません)がメジャーバージョンアップのたびに行われます。
止まったパッケージは、変更の対応ができません。
場合によっては、対応されていないことによって、特定のライブラリ・フレームワークをアップデートをせずに開発およびリリースを強いられることもあることと思います。

コミュニティの衰退

なんであれ、パッケージを使えばドキュメントに書いていない挙動についてサポートを受けたくなるはずです。しかし、止まったパッケージはコミュニティが徐々に衰退していきます。メンテナンスされていたときであれば享受できた話し合い・相談の機会を徐々に失っていきます。
コードリーディングや様々な試験の結果、最終的に自分で答えを得られることもあるでしょうが、その代償に開発時間を失うことになります。しかも、その答えは間違っている可能性もあるのです。

Forkされてメンテナンスされているパッケージを使えばいいのでは?

もちろんその選択肢はあるかもしれません。しかし、Forkされたパッケージは大抵の場合、コミュニティが活発ではありません。また、慎重に選ばなければ悪意あるコードを入れられた状態のパッケージを「うっかり」使ってしまう…なんてこともあるしょう。
つまり、この選択肢は希望と悪意が混在しているといえます。

終わりに

以上長々となりましたが、recoilの現状と、メンテナンスの話でした。
ところで、正直私も会社で指摘されるまでrecoilがメンテナンスされていないことを知りませんでした。

さて、代替として考えられるのが、似たコンセプトのJotaiでしょう。recoilを気に入ったなら、おそらくJotaiを気に入るはずです。

Discussion