BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Node.js 14.0は診断と国際化を改善し、Web Assembly System Interfaceを追加

Node.js 14.0は診断と国際化を改善し、Web Assembly System Interfaceを追加

原文(投稿日:2020/04/23)へのリンク

Node.jsプロジェクトは先頃、Node.js バージョン 14.0.0をリリースし、診断レポート、国際化、実験的な非同期ローカルストレージ、ネイティブN-APIモジュールの改善、ESモジュールの改良、およびNode.js バージョン 12リリース以降のその他の多数の更新を追加した。このリリースでは、実験的なWeb Assembly System Interfaceのサポートも追加されている。

Node.jsプロジェクトは、長期サポート (LTS) 戦略に従っている。開発者は、2020年10月に予定されているLTSに到達するまで、新しい14.0リリースはプロダクション環境に対応していないことを覚えておく必要がある。それまでは、開発者はNode.js 14の使用で見つかった問題を報告して、LTSバージョンが完成するより前に問題を解決できるようにすることをお勧めする。Node.js 12は、Node.js 14がLTSに到達するまで、プロダクションアプリケーションで使用するための推奨バージョンのままである。

新しいNode.js診断レポートは、JSON形式の診断サマリーをファイルに書き込み、開発、テスト、およびプロダクション環境でのトラブルシューティングサポートを提供する。診断レポートには、JavaScriptとネイティブスタックトレース、プラットフォームの詳細、メモリヒープ情報、リソース消費、およびその他の主要なメトリックが含まれる。レポートは、未処理の例外、致命的なエラー、ユーザシグナル、プログラムによるAPIコールなど、さまざまな構成可能なトリガで生成される。

IBMのNode.js貢献者は、この追加を非常に支持しており、診断レポートのワークフローを改善するための別個のreport-toolkitパッケージを提供している。IBMは、Node.js診断レポート使用開始のためのガイドも提供している。

IBM Node.jsコミュニティリーダーであるIBM Cloud and Cognitive SoftwareのMichael Dawson氏が次のように説明した:

この機能は、Node.js、Java、Swiftなどの言語を超えて顧客をサポートするために重要であることがわかりました。安定した機能としてNode.jsに組み込まれている診断レポートを使用すると、プロダクション環境での使用に自信を持ち、問題を迅速に解決する準備が整います。

Node.js 14は、完全なInternational Components for Unicode (ICU) データを使用して、国際化サポートも改善する。Node.js 13で追加されたことにより、Node.jsのユーザは、ネイティブロケールでアプリケーションを実行およびサポートできる。最近のWeather Companyのケーススタディでは、Node.jsの組み込みICUサポートを活用して、60言語で230のロケールをサポートするweather.comの切り替えについて説明している。

Node.js 14のもう1つの重要な追加は、非同期ローカルストレージの実験的なサポートであり、コールバックとPromiseチェーン内に非同期状態を作成する。この新しいAPIは、Webリクエストまたはその他の非同期操作の存続期間を通じてデータを保存する。非同期ローカルストレージは、他のプログラミング言語のスレッドローカルストレージに類似している。

Node.jsは、N-APIを使用したネイティブモジュールまたはアドオンのサポートを提供する。Node.js 14には、BigIntのサポートやその他の改善が含まれているN-API バージョン 6が含まれている。

一部のシナリオでは、Node.js用のWeb Assemblyで作成されたパッケージにより、パフォーマンスとクロスプラットフォームのサポートが向上する。Node.js 14は、Web Assembly System Interface (WASI) の実験的な実装を追加する。Node.jsチームは、WASIがネイティブモジュールのエクスペリエンスを大幅に簡素化する可能性があるとみている。

ESモジュールのサポートはNode.js 14で引き続き改善されている、開発者は--experimental-modulesフラグを含める必要がなくなったものの、現時点ではESモジュールローダはまだ実験的なものと見なされている。Node.jsのESモジュールに関して現在警告がいくつかある。Node.jsのリリースマネージャであるBethany Nicole Griggs氏が説明する:

Node.jsでのESMの実装は、使い慣れた開発者の経験とは異なることに注意してください。ほとんどのトランスパイルワークフローは、Node.js ESM実装がサポートしていないオプションのファイル拡張子やJSONモジュールなどの機能をサポートしています。トランスパイル環境のモジュールがNode.jsで機能するには、ある程度のリファクタリングが必要になる可能性が高くなります。私たちの設計上の決定の多くは、2つの主要な目標を持って行われたことに言及する価値があります。仕様の準拠とWebの互換性。現在の実装は、ユニバーサルJavaScriptへの道を開くESMモジュールを作成するための将来の証明モデルを提供すると私たちは信じています。Node.jsでのESMの実装はまだ実験段階ですが、Node.jsでESMを「安定している」と呼ぶことができるようになりつつあると確信しています。警告を取り除くことは、その方向への大きな一歩です。

Node.jsのJavaScriptエンジンの基盤となるバージョンは、V8であり、V8のバージョンは8.1に更新され、オプションのチェーン、nullish coalescing、さまざまな国際化の改善など、ECMAScriptの最近の進歩を提供する。

Node.js 14は、Node.jsコアAPIのさまざまな領域をより緊密に調整するためのさまざまな改良を通じて、Node.js Stream APIの実装を改善する。たとえば、http.OutgoingMessagestream.Writableおよびnet.Socketに相当し、stream.Duplexと一貫して動作するようになった。

このリリースの詳細については、Griggs氏とDawson氏がNode.js 14リリースについて話し合っている:

Node.jsは、Open JS FoundationからMITライセンスの下で利用できるオープンソースソフトウェアである。貢献とフィードバックは、Node.js貢献ガイドライン行動規範を通じて奨励されている。

この記事に星をつける

おすすめ度
スタイル

BT