2011年6月23日、Node.jsの開発を主導するJoyent社は、Microsoft社と提携し、Node.jsをWindows環境へネイティブに移植することを発表しました。
これまでUNIX系システムを中心に発展してきたNode.jsにとって、Windowsへの正式なネイティブ対応はプラットフォームを拡大する上で極めて重要な一歩となります。
今回の提携により、世界中の多くの開発者がWindows上でNode.jsのパフォーマンスを最大限に引き出せるようになります。
IOCP APIを活用したネイティブポーティング
今回の移植プロジェクトにおける最大の焦点は、Windows独自の高パフォーマンスI/O APIである「IOCP (Input/Output Completion Port)」への対応です。
コア構造の大幅な変更
Node.jsをWindows上で効率的に動作させるためには、コア構造に対する比較的大きな修正が必要となります。
Microsoftから公式なエンジニアリングリソースと技術的なガイダンスを受けることで、この複雑な課題に取り組んでいます。
また、Rackspace社もこのプロジェクトに協力しており、エンジニアのBert Belder氏が開発に参加しています。
node.exeのリリースとサポート環境
このプロジェクトの成果として、公式サイトであるnodejs.orgにおいて、公式なバイナリファイルであるnode.exeの提供が開始される予定です。
| 対象環境 | サポート内容 |
|---|---|
| Windows Azure | クラウド環境におけるネイティブ動作の最適化 |
| Windows Server 2003以降 | サーバーOSにおける公式バイナリの動作保証 |
これにより、開発者は特別なコンパイル作業をすることなく、Windows上でNode.jsを実行できるようになります。
以下は、Windows環境での動作を想定したシンプルなサーバープログラムの例です。
// Windows環境での動作を想定したHTTPサーバー
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello from Node.js on Windows!\n');
});
// ローカルホストのポート3000で待機
server.listen(3000, '127.0.0.1', () => {
console.log('Server running at http://127.0.0.1:3000/');
});
実行時の出力結果:
Server running at http://127.0.0.1:3000/
まとめ
2011年6月に発表されたMicrosoftとJoyentの提携は、Node.jsが真のマルチプラットフォーム環境として進化するための大きな転換点となりました。
IOCPへのネイティブ対応により、WindowsユーザーもNode.jsが持つ高いスケーラビリティを享受できるようになります。
サーバーサイドJavaScriptの可能性を広げるこの取り組みは、今後のエンタープライズ領域での採用拡大に大きく貢献することでしょう。
