UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【イベント参加ログ】「Node、Deno、Bun?Node代表古川さんと学び直す JS Runtimeの歴史とこれから」に参加した

こちらのイベントに参加した

offers.jp

内容は JavaScriptの3つの有名なRuntime(Node.js、Deno、Bun)の違いについて @furukawa さんが説明するというもの

Node.js が古いという認識はなく、現場ではまだまだ採用するRuntimeだと思うが、 DenoやBun との違いを聞かれた時に自分の中で明確にできていればと思い参加した

ありがたいことに資料が公開されている

speakerdeck.com

最初は「Runtimeとは何か?」の説明で、自分も雰囲気で使っていた「Runtime」という言葉が実際「定義は曖昧である」と古川さんの口から聞けてちょっと安心した

JavaScriptでは言語のコア仕様とサーバ用途で利用する機能群を構成したものをJavaScript ランタイムと呼んでいるとのこと(それがNode.jsであり、Denoであり、Bun)

具体的には、JavaScript エンジン、Runtime、およびその他の機能で構成される

Node.js、Deno、Bun の比較と相互関係

Node.js、Deno、Bun は、いずれも JavaScript を実行するための環境だが、それぞれ特徴や利点、相互関係に違いがある

Node.js

特徴

  • JavaScript をサーバーサイドで実行するために開発された
  • npm を通じて膨大なパッケージを利用でき、大規模なコミュニティとエコシステムを持つ点が強み

利点

  • 長年の利用実績と豊富なライブラリにより、多くの開発者にとって馴染みやすく、Web アプリケーション開発など幅広い用途で利用されている

体制

  • リーダー不在
  • 大規模OSS開発者体制、各分野ごとにWGを作り、TSCと呼ばれる委員会で方向性を決める

相互関係

  • Deno は Node.js の作者が開発しており、Node.js の抱える問題点を解決することを目指している
  • Bun は Node.js との高い互換性を持ちつつ、より高いパフォーマンスを目指している

Deno

特徴

  • セキュリティとパフォーマンスに重点を置いて開発
  • TypeScript のネイティブサポート、組み込みのセキュリティサンドボックス、依存関係の管理などを特徴としている

利点

  • Node.js に比べてセキュリティ面やパフォーマンス面で優れており、モダンな JavaScript 開発に適している
  • Deno Fresh などのフレームワークも登場し、開発体験の向上も期待されている

体制

  • リーダー:Ryan Dahl氏
  • OSS開発者とDeno Compnayでの会社開発のハイブリッド
  • コミュニティとコアチームと商用支援(Deno Deploy)チームの三位一体

相互関係

  • Node.js の問題点であるセキュリティやモジュールシステムの複雑さを改善することを目指している
  • JSR (JavaScript Registry) を採用し、npm とは異なるパッケージ管理システムを採用している

Bun

特徴:

利点

  • Node.js や Deno と比較して非常に高速に動作し、特に I/O やネットワーク処理が高速であるとされている

体制

  • リーダー:Jarred Summer氏
  • Bunをfull timeで開発し、ホスティング環境などを作ってJS開発体験を向上させる名目でOvenという会社も立ち上げている
  • OSS Contiributors + oven社のハイブリット体制
  • マネタイズは不明

相互関係

  • Node.js との互換性を重視しており、既存の npm パッケージを利用できるように努めている
  • Web API の標準化を目指す WinterCG に参加表明はしていないが、Web API Inerop はできる範囲で進めている

まとめ

スライドのまとめに書いてあることだが

  • Node.js は成熟したエコシステムと豊富なライブラリが強み
  • Deno はセキュリティとモダンな開発体験を提供
  • Bun は圧倒的なパフォーマンスを誇る

である

ただ、パフォーマンスを重視するからといってBunというわけでもなく、使いたい既存npmが使えるかどうかなど、使う場合は慎重に検討する必要がある

個人開発とかでは使ってみたい