「Node.js VM Summit」が開催、ABI互換性問題への対処などを議論:補完プロジェクトの「Fast FFI」と「N-API」が前進
マイクロソフトは、「Edge」に使用されるJavaScriptエンジン「Chakra」の担当チームが開催した「Node.js VM Summit」の模様を報告。「Fast FFI」「N-API」プロジェクトの進捗などが議論された。
米マイクロソフトは2017年3月13日(米国時間)、Webブラウザ「Microsoft Edge(以下、Edge)」に使われるJavaScriptエンジン「Chakra」の担当チームが3月3日に同社内で開催した「Node.js VM Summit」の模様を報告した。
同サミットには、JavaScript VMベンダー、Node協力者、CTCメンバー(グーグル、IBM、インテル、マイクロソフト、ニアフォーム、ノードソースの参加者など)が参加した。このグループは2017年3月現在、Nodeのネイティブモジュールのエコシステムが直面するABI互換性問題への対処に力を入れている。以下、内容を抄訳する。
Nodeのネイティブモジュール問題
NodeのネイティブモジュールはC/C++で書かれており、V8やNAN API(Application Programming Interface)に直接依存している。これらのモジュールは、Node.jsのメジャーアップデートごとに、ABI(Application Binary Interface)とAPIの変更に伴って更新や再コンパイルが必要になる可能性がある。
このことはネイティブモジュール作者にとって、メンテナンスの負担が増える。また、モジュール利用者にとっても、本番環境で使用しているNodeのアップグレードの障害になる。この問題に対処するための補完プロジェクトが「Fast FFI(foreign function interface)」と「N-API(Node.js API)」となる。
Fast FFI
Fast FFIでは、ネイティブAPIをJavaScriptに自動的に提供することを目指している。これにより、モジュール作者はC/C++コードを追加作成することなく、既存のネイティブコードをNode.jsにエクスポーズできるようにする。
Fast FFIプロジェクトは2017年3月現在、初期のプロトタイピング段階にあり、Node.jsの機能と考えられるためには、さらに取り組みを進める必要がある。今後、取り組みの前進に合わせてコミュニティーに最新情報が提供され、実用性の評価を行っていくという。
N-API
N-APIは、JavaScript VMのネイティブAPIのABI安定抽象化レイヤーを提供する。これによりネイティブモジュール作者は、プラットフォームやアーキテクチャごとにモジュールを1回コンパイルすれば、Node.jsの任意のN-API対応版で実行できるようになる。
N-APIはこの1年で大幅に開発が進み、2017年3月現在では広範な利用に対応できるようになっている。
最もよく依存される30のモジュールにおけるネイティブAPIの使用パターンから考察すると、5つ以上のモジュールで使われる「V8 API」は、N-APIで100%カバーされる。コアチームは、N-APIを使用できるように、オープンソースの「Node-Sass」「Canvas」「LevelDown」「Nanomsg」「IoTivity」を移植した。
VM Summit参加者は、Fast FFIとN-APIの進捗と実用性を評価し、N-APIが実験的機能として「Node.js 8.0」に含まれるようプルリクエストを行うことを検討することで合意した。N-APIがNode.js 8.0に含まれれば、ネイティブモジュール作者はN-APIを試しやすくなる。またN-APIチームも、このプロジェクトの広範なテストやフィードバックの取得が可能になる。
N-APIプロジェクトの今後の重要なステップは以下の通り。
- N-APIのNode.js 8.0への搭載を求めるプルリクエストをNode.jsのマスターに提出
- 安定化後、Node.js v6.9 LTSとNode-ChakraCoreに移植
- 広範なコミュニティーのエンゲージメントによるAPIギャップの特定
- パフォーマンスの微調整
関連記事
- サーバサイドJavaScriptの本命「node.js」の基礎知識
いま注目の「サーバサイドJavaScript」の実装の本命として話題を集める「Node.js」の概要から実践的な使い方まで解説する連載 - Node.js
Node.jsはサーバサイドで動作するJavaScript実行環境。イベントとノンブロッキングI/Oを活用し、高性能なWebアプリを構築できる。 - naveでNode.jsのバージョン管理&イベントループ詳説
いま注目の「サーバサイドJavaScript」の実装の本命として話題を集める「Node.js」の概要から実践的な使い方まで解説する連載 - ノンプログラミングでWebアプリ作成、インフォラボが「Buddy」β版を一般公開
インフォラボが、React.jsとNode.jsを採用した業務システム向けWebアプリケーション開発プラットフォーム「Buddy」のβ版を2016年11月16日に一般公開。業務部門のユーザーがノンプログラミングでWebアプリを作成できる。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.