WizcorpではNodeを採用し始めて既に何年も経ちますが、これまで数々のプロジェクトを成功に導いてきたのと同時に同じ数だけの試練にも遭遇してきました。今回はNode.jsの今後についてお話していたいと思います。
Node.js(Node)とは、サーバー向けのJavaScript開発環境のひとつです。Nodeを採用することで、クライアント側とサーバー側で使用する言語をJavaScriptに統一することができます。
クライアント側とサーバー側でコードを再利用することができる
フロントエンドエンジニアとサーバーサイドエンジニアの共同開発・統合を容易にする
そんなNodeの未来についてはこれまで幾度にもわたり議論がなされてきました。Nodeのオリジナル開発者達と、その出資会社である「Joyent」は、Node v1.0以降、バグ修正を除く新しいリリースは行わないと発表しています。現行バージョンが0.12であることから、次回リリースされるv1.0は彼らにとっての完成版であり、最終版であることを意味しています。
こういった姿勢に対して、これまで集中的にコントリビュートしてきた人々を多く含むNodeコミュニテイーの間では、決して肯定的ではありませんでした。むしろ、今後もNodeにさらなる成長が期待したいというのが彼らの意見です。
今年、Node.jsから新たに分岐して開発された彼ら独自のio.jsがリリースされたことにより、そういったビジョンの衝突がピークに達したのを目の当たりにしました。io.jsは、完全にコミュニティのみによって先導されたプロジェクトであり、新しいバージョンが次々とリリースされています。
Joyentとコミュニテイの大部分との間に生じたビジョンの違いがはっきりと現れ始めたのは、ECMAScript6(JavaScriptの最新版)の採用についてでした。コミュニティー側のこれ以上待つ理由等無いという姿勢に対して、Joyentはより確かな安定した道を好みました。両者にそれぞれの意見を支持する十分な理由がありました。
そんな中、io.jsはJoyentのNode.jsではサポートしていないような現代的なJavaScriptの機能にも対応させるように決断しました。2つのプロジェクトは、一見ほとんど同じように見えます。しかしそれぞれの内側を覗いてみると、元のNode.jsから大きく変更が加えられており、io.jsが現代版Node.jsと呼ばれるのにふさわしいことがわかります。
io.jsプロジェクトが外部のエンジニアからのコントリビュートに対して大変寛容であるのに対して、Node.jpはそういったコントリビューターに対して、長い間、同意書への署名を必須としていたため、それがコントリビューションの大きな妨げとなっていました。それに加えて、Node.jsは2015年になって、コントリビューションをほとんど受け付けていません。Nodeの成長を心待ちにしている人々たちにとって、大変なフラストレーションとなりました。過去にわずかながらもコントリビュートをしてきた当社Wizcorpとしても無力さを感じました。
一方、io.jsに関しては、既に何件か当社からのコントリビューションも受け付けられています。もちろん全てのコントリビューションに対して、その都度、適正なクオリティコントロールがなされます。
一部のプロジェクト先導者達がNodeを完成だとみなした一方で、次々にコントリビューションが続けられているio.jsを見ると、プロジェクトには まだまだ 成長の余地がありそうだということがわかりますね。ちなみに当社ではディスクへの書込み時のパフォーマンスが100倍まで上がるというコントリビューションを行いました。パフォーマンス向上、ドキュメンテーションの明確化、コードの単純化など、今後も更なる改善が期待できそうです。
今年6月、io.jsのリーダーシップとJoyentによってNode Foundationが設立されました。(Linux Foundationからのガイダンス下) Node FoundationにはIBM、Intel、Joyent,Microsoft、Paypal等といった著名な企業が数々参加しています。そして、ここ最近では、io.jsがNode.jsの正式な新プロジェクトとして統合されることが決まりました。その後も、メンバー以外の企業や個人からのコントリビュートは続き、io.jsの自由度は守られています。
Node.js 4.0がNode Foundation設立以降、初の公式リリースとなるでしょう。「 ちょっと待った、なんで4?」ってことになりますよね。それは、Node.jsが0.12で停滞していた時期に、io.jsはバージョン1.x、2.x、3.xと成長を続けていた為、今回、Node.jsとしてリリースする際には、まだ使用されていないv4.0でリリースしなければならなくなるのです。つまり、新しいバージョンを試している間にも、長期的に使用されて安定した確実なバージョンを使い続けることができるのです。
Wizcorpでは既にio.jsを採用しており、日々改善を遂げるパフォーマンスに驚かされています。そして今後もECMAScript 6 (将来的には ECMAScript7)の機能がますます私達のコードに反映されていくことでしょう。もちろんブラウザ側のみではなく、サーバー側でも。Nodeを少しでも改善できる方法が思い浮かんだ時に、そこにはコントリビューションを受け付けてくれるコミュニティが存在するということはとても心強いですね。最終的には、我々のお客様だけではなく、Nodeに関わるコミュニテイ全体として改善された、また今後も進化し続けるプラットフォームの恩恵を受けることができるのです。
著者紹介:ロン コービング
12歳で初めてゲームアプリ開発を始めてから、その後の人生を開発に捧げる。ソフトウェア開発と旅を愛する彼は自然と日本に導かれ、2011年Wizcorp入社後、現在ではエンジニアリングVP を務める。