JavaScriptはまだフルスタックモジュールを出荷できない
JavaScriptエコシステムは長年にわたり進化を遂げてきたが、フロントエンドとバックエンドの両方で動作する単一のフルスタックモジュールをシームレスに配布・実行する仕組みは依然として欠如している。Node.jsとブラウザのランタイム差、モジュールシステムの分裂、パッケージングの複雑さが障害となり、真にユニバーサルなJavaScriptモジュールの実現には課題が残る。
背景メモ
- この記事は、JavaScriptのエコシステムにおいて、フロントエンド・バックエンド両方で使えるコードを単一のモジュールとして配布する仕組みが未だに確立していない問題を論じている。
- Node.jsとブラウザは異なるモジュールシステム(CommonJS vs ESM)とAPIを持ち、さらにDenoやBunといった新しいランタイムも登場したことで、環境横断的なパッケージ公開は複雑化している。
- 著者はWaspという、フルスタックWebアプリケーション向けのフレームワークの開発者。同フレームワークはReact+Node.js+Prismaを統合した構成で知られる。
- 「isomorphic(アイソモーフィック)JavaScript」という、クライアントとサーバーで同じコードを共有する概念は古くからあるが、パッケージング・バンドリング・型チェックの各段階で環境ごとの差異を吸収する標準仕様が欠如している点を批判的に検討している。