2024年から使用されるロゴ | |
| 原作者 | ライアン・ダール |
|---|---|
| 開発者 | デノランド株式会社[1]と貢献者 |
| 初回リリース | 2018年5月13日[2] |
| 安定リリース | 2.1.1 [3]
/ 2024年11月21日 |
| リポジトリ | デノランド |
| 書かれた | TypeScript、JavaScript、Rust、C++ (V8 バインディング) |
| オペレーティング·システム | Linux、macOS、Microsoft Windows |
| タイプ | ランタイム環境 |
| ライセンス | MITライセンス[4] |
| Webサイト | deno.com |
Deno(/ d iː n oʊ / [5] )は、 V8 JavaScriptエンジンとRustプログラミング言語をベースにしたJavaScript、TypeScript、WebAssemblyのランタイムです。Denoは、 Node.jsの開発者でもあるRyan Dahlによって共同開発されました。[6]
Denoは、別個のパッケージ管理プログラムを必要とせず、単一の実行可能ファイル内でランタイムとパッケージマネージャの両方の役割を明示的に担います。[5] [7]
歴史
Denoは、JSConf EU 2018でRyan Dahl氏の講演「Node.jsについて後悔している10のこと」の中で発表されました。[8] Dahl氏は講演の中で、Node.jsの初期の設計上の決定について後悔していることを述べ、API設計でPromiseを使用しないこと、レガシービルドシステムGYP 、node_modules、package.jsonを使用すること、ファイル拡張子を省略すること、index.jsによる魔法のようなモジュール解決、V8のサンドボックス環境を壊すことなど、選択に焦点を当てました。[9]彼は最終的に、 Protocol Buffersなどのシリアル化ツールによるメッセージパッシングを通じてシステムコールバインディングを実現し、アクセス制御用のコマンドラインフラグを提供することを目指したDenoのプロトタイプを発表しました。
Denoは当初Goで書かれ、特権側(Go、システムコールアクセスあり)と非特権側(V8)の間のシリアル化にプロトコルバッファを使用していました。 [10]しかし、二重実行とガベージコレクションの圧力の懸念から、GoはすぐにRustに置き換えられました。[11] Tokioはlibuvの代わりに非同期イベント駆動型プラットフォームとして導入され、[12] FlatBuffersはより高速な「ゼロコピー」シリアル化とデシリアル化のために採用されましたが、 [13] 2019年4月にシリアル化の大幅なオーバーヘッドを測定したベンチマークを公開した後、2019年8月にFlatBuffersは削除されました。 [ 14 ]
2018年11月には、Goの標準ライブラリをモデルにした標準ライブラリが作成され、広範なツールとユーティリティが提供され、Node.jsの依存関係ツリーの爆発問題が部分的に解決されました。[16]
公式Deno 1.0は2020年5月13日にリリースされました。[17]
Cloudflare Workersに触発されたDeno Deploy [18]は、 2021年6月23日にリリースされました。[19] 2022年5月4日に発表されたベータ4では、ダッシュボードが改善され、課金機能が追加されました。[20]
Deno Fresh 1.0は2022年6月28日に発表されました。[21] Deno用の新しいフルスタックウェブフレームワークを搭載しており、デフォルトではクライアントにJavaScriptを一切送信しません。このフレームワークにはビルドステップがないため、展開時間が大幅に短縮されます。バージョン1.1は2022年9月8日にリリースされました。[22]
Deno SaaSKitベータ版は2023年4月4日に発表されました。[23]これは、FreshとDenoを使用して構築されたオープンソースの最新のSaaSテンプレートです。
Deno 2は2024年10月9日にリリースされました。[24]主にNode.jsの互換性の改善と非推奨の機能の削除が行われています。
概要
Denoは、現代のプログラマーにとって生産的で安全なスクリプト環境を目指しています。 [5] Node.jsと同様に、Denoはイベント駆動型アーキテクチャを重視しており、ブロッキングバージョンとともに、一連のノンブロッキングコアI/Oユーティリティを提供しています。Denoは、 Webサーバーの作成や科学計算の実行などに使用できます。DenoはMITライセンスに基づくオープンソースソフトウェアです。[25]
Node.jsとの比較
Deno と Node.js はどちらも、Chromium プロジェクトによって開発されたV8 JavaScript エンジン( ChromiumおよびGoogle Chrome Web ブラウザーで使用されるエンジン) 上に構築されたランタイムです。どちらも内部イベント ループを持ち、スクリプトを実行するためのコマンド ライン インターフェイスと、さまざまなシステム ユーティリティを提供します。
Denoは主に以下の点でNode.jsと異なります。[5]
- Node.jsはESモジュールとCommonJSの両方をサポートするブラウザのように、ESモジュールのみをサポートします。DenoでのCommonJSサポートは、互換性レイヤーを使用することで可能です。[26] [27]
- ブラウザと同様に、ローカルまたはリモートの依存関係をロードするためのURLをサポートし、やなどのモジュール指定子を使用してNPMまたはポリフィルNode.JSモジュールをインポートします。Node.jsはURL [28]とモジュールの両方をサポートしています。
npm:node: - リソースの取得にパッケージマネージャーを必要としないため、 npmのようなレジストリは必要ありません。[29]
- スナップショットされたTypeScriptコンパイラ[30]またはキャッシュメカニズムを備えたswcコンパイラ[31]を使用して、すぐに使用できるTypeScriptをサポートします。
- 幅広い Web API を備え、ブラウザとの互換性の向上を目指します。
- サンドボックス化されたコードを実行するために、デフォルトでファイル システムとネットワーク アクセスを制限します。
- Node.js は Promise とコールバック API の両方をサポートしていますが、Promise、 ES6 、TypeScript の機能を活用するための単一の API をサポートしています。
- コア API のサイズを最小限に抑えながら、外部依存関係のない大規模な標準ライブラリを提供します。
- 特権システム API を呼び出し、バインディングを使用するためにメッセージ パッシング チャネルを使用します。
資金調達
2021年3月29日、 Shasta Ventures、Mozilla Corporation 、その他数社から数百万ドルの資金提供を受け、Deno Land Incが発表されました。同社はDenoの開発をさらに進め、ユーザーに商用サービスを提供するために設立されました。[1]
1年後、デノはセコイア・キャピタルが主導するシリーズAの資金調達でさらに2,100万ドルを調達したことを発表した。[32]
リリース履歴
以下の表は公式リリースページを使用して作成されました。[33]
デノ
デノフレッシュ
バージョン番号はGithubからのリリースに基づいています。[34]
デノSaasKit
バージョン番号はGithubリポジトリのリリース番号に基づいています。[35]
例
Deno での基本的なHello, World! プログラム:
コンソール.log ( "Hello, World!" ) ;
グローバルDeno名前空間はブラウザでは利用できないAPIを公開します。Unix catプログラムの実装: [ 1]
/**
* cat.ts
*/
for ( const filename of Deno . args ) { const file = await Deno . open ( filename ); await file . readable . pipeTo ( Deno . stdout . writable , { preventClose : true }); }
シンプルなWebサーバー: [2]
Deno .serve (( req ) = >新しいレスポンス( "hello world" ));
Deno は、スクリプトの実行時にリモート標準ライブラリ ファイルを自動的にダウンロードしてキャッシュし、コードをコンパイルします。
同様に、 URL を入力ファイル名として指定することで、標準ライブラリ スクリプト (ファイル サーバー
など) を明示的にダウンロードせずに直接実行できます(-Aすべての権限をオンにします)。
$ deno run -A https://deno.land/std/http/file_server.ts
https://deno.land/std/http/file_server.ts をダウンロード
https://deno.land/std/http/file_server.ts をコンパイル
...
HTTP サーバーは http://0.0.0.0:4500/ でリッスンしています
参考文献
- ^ Ryan Dahl、Bert Belder (2021-03-29)。「Deno Companyの発表」。
- ^ 「貢献者、denoland/deno、Github」。GitHub 。 2019年7月5日閲覧。
- ^ 「リリース 2.1.1」。2024年11月21日。 2024年11月22日閲覧。
- ^ 「deno/LICENSE at main」。GitHub 。2019年7月5日閲覧。
- ^ abcd 「電王マニュアル」。での.com 。2019年5月17日に取得。
- ^ Schiemann, Dylan (2018 年 12 月 26 日). 「Deno: オリジナルの Node.js 作成者によるセキュアな V8 TypeScript ランタイム」. InfoQ . 2019 年 5 月 17 日時点のオリジナルよりアーカイブ。 2019 年5 月 17 日閲覧。
- ^ Paul Krill (2018-06-21). 「Ryan Dahl の Node.js 後悔が Deno につながる」InfoWorld。2019-04-14 時点のオリジナルよりアーカイブ。
- ^ Dahl, Ryan (2018-06-06). Node.js について後悔していること 10 件。JSConf EU。2019-05-17にYouTube から取得。
- ^ Dahl, Ryan (2018-06-06). 「Node の設計ミス」(PDF) . Github .
- ^ “denoland/deno、ブランチ「golang」”.ギットハブ。
- ^ 「提案: Rust への移植と Tokio の使用を検討してください」。GitHub。
- ^ 「Tokio - Rust プログラミング言語の非同期ランタイム」。Tokio.rs。
- ^ 「Protobuf はこのユースケースではオーバーヘッドが大きすぎるようですか?」Github。
- ^ 「フラットバッファを削除する」。GitHub。
- ^ 「フラットバッファを置き換える」。GitHub 。 2019年4月15日。 2019年7月11日閲覧。
- ^ "denoland/deno_std: deno 標準モジュール".ギットハブ。 2022 年 3 月 3 日。
- ^ 「Deno 1.0」。deno.com . 2020年5月14日閲覧。
- ^ Dahl, Ryan (2022年5月4日). 「JavaScript Containers」. tinyclouds.org . 2022年5月4日時点のオリジナルよりアーカイブ。
- ^ Krill, Paul (2021-06-24). 「Deno Company、サーバーサイドJavaScriptホスティングサービスを発表」。InfoWorld。2022年6月27日時点のオリジナルよりアーカイブ。 2022年4月14日閲覧。
- ^ Krill, Paul (2022-06-03). 「Deno Deploy が GA に向けて動き出し、有料プランを追加」InfoWorld . 2022-07-24閲覧。
- ^ Luca, Casonato (2022-07-22). 「Deno の新しいフルスタック Web フレームワークとしての Fresh 1.0 の紹介」。Denoブログ。2022-07-24に閲覧。
- ^ Casonato, Luca (2022-09-08). 「Fresh 1.1 - 自動 JSX、プラグイン、DevTools など」Deno ブログ。2022年 9 月 10 日閲覧。
- ^ Jiang, Andy (2023-04-04). 「Deno SaaSKit の発表: Fresh で構築されたオープンソースの SaaS テンプレート」. Deno ブログ. 2022-04-04閲覧。
- ^ “電王2の発表”.でのブログ。 2024-10-09 。2024 年 10 月 27 日に取得。
- ^ 「Deno は製品版の準備が整いました」。InfoQ。2020年 7 月 1 日閲覧。
- ^ 「モジュール: ECMAScript モジュール | Node.js v17.6.0 ドキュメント」。
- ^ 「Deno - JavaScript と TypeScript の最新ランタイム」。
- ^ 「モジュール: ECMAScript モジュール | Node.js v17.6.0 ドキュメント」。
- ^ 「Deno - JavaScript と TypeScript の最新ランタイム」。
- ^ 「Deno.js の運用開始。重要なポイント」。Medium.com。2022年5 月 16 日閲覧。
- ^ 「ドキュメント」。GitHub。2022年3月3日。
- ^ “Deno raises $21M”. deno.com . 2022年6月22日時点のオリジナルよりアーカイブ。
- ^ “リリース”. GitHub . 2020-12-30 . 2021-01-14閲覧。
- ^ 「リリース」。
- ^ 「リリース」。
外部リンク
- 公式サイト
