Denoプロジェクトがついに、待望のv1.0に到達しました!Node.jsのオリジナル作者であるRyan Dahl氏の手によるDenoは、氏の言う"Node.jsで後悔している10の事"に対処しています。

DenoはNPMと、悪名高いnode_modulesを排除して、TypeScriptとJavaScriptで記述されたアプリケーションを実行する、単一のバイナリ実行ファイルの形式となっています。

その一方で、TypeScriptやJavaSciptは、ほとんどのWebアプリケーションに適したものではありますが、ニューラルネットワークのトレーニングや推論、マシンラーニング、暗号処理といった、計算重視型のタスクには適切でない場合があります。事実として、Node.js自体、これらのタスクにネイティブライブラリの助けを借りることが少なくありません(暗号処理にopensslを使用するなど)。

ネイティブモジュールを取り入れるためのNPM的なシステムを持たないDenoでは、ネイティブパフォーマンスの必要なサーバサイドアプリケーションをどうやって書けばよいのでしょうか?そこで役に立つのが、WebAssemblyです!この記事では、Rustでハイパフォーマンスな関数を記述して、それをWebAssemblyにコンパイルし、Denoアプリケーション内で実行します。

TL;DR

このDenoスタータプロジェクトテンプレートをGitHubからクローンあるいはフォークしてください。インストラクションに従えば、Denoで動作する最初のWebAssembly関数(Rustで記述されている)が5分以内に完成するはずです。

ちょっとした背景説明

Node.jsが大きな成功を収めたのは、開発者に2つの世界で最高のものを提供できたからです。すなわち、JavaScriptによる、特にイベントベースの非同期アプリケーション開発における簡便さと、C/C++のハイパフォーマンスです。Node.jsアプリケーションはJavaScriptで記述されますが、実行は、Google V8 JavaSciptエンジンと多数のネイティブライブラリモジュールを含んだ、C/C++ベースのネイティブランタイムによって行われます。Denoはこの勝利の方程式を再現する一方で、そのプロセスを、TypeScriptとRustによる最新のテクノロジでサポートします。

DenoはV8を使用した、シンプルで現代的、そしてセキュアなJavaScriptおよびTypeScriptのランタイムで、Rustを使って開発されています。-- The deno.land website.

有名なプレゼンテーション"Node.jsで後悔している10の事 (10 things I regret about Node.js)"の中で、Node.jsの作者であるRyan Dahl氏は、Node.jsと競合し、さらには代替となるDenoを、最初に戻って開発する論拠について説明しました。Dahl氏の後悔は、おもにNode.jsがサードパーティのコードやモジュールを管理する方法に関するものです。

  • CモジュールをNode.jsにリンクするための複雑なビルドシステム
  • package.jsonnode_modulesindex.js、その他のNPMアーティファクトに関わる不必要な複雑性

#javascript #デベロップメント #programming #webassembly

DenoにはWebAssemblyがある
1.95 GEEK