東日本大震災が起きる前はNode.jsは普及しそうに無いと思っていたのだが、予想を大きく外したことを認めておきたい。Node.jsはサーバーサイドJavaScriptで書かれたウェブアプリケーションサーバー。
2025年時点でサーバーサイド技術が判明している大規模ウェブサイトのうち約4.6%で使われている*1。2015年1月でのNode.jsの稼働ベースのシェアは0.1%に過ぎなかったが、そこから10年間で4.5%ポイント上昇した*2。
2025年のStack Overflow Developer Surveyでは、回答者の48.7%が使用しており、最も人気のあるウェブ技術となっていた*3。特に中小企業の開発で人気だそうだ*4。
Node.jsの普及の理由は
- C10K問題を解決できるソリューションとして先行していた
- サーバーサイドもフロントエンド(と言うかクライアントサイド)もJavaScriptで統一する需要があった
- JavaScript/TypeScriptフレームワークAngular/React/Vueの出現によりHTMLのレンダリングがクライアントサイドに移ってマイクロサービス化の波に乗った
- 検索サーバーがヘッドレスブラウザを導入し、クライアントサイドレンダリング(CSR)でも正しくインデックスできるようになった
- サーバーサイドとクライアントサイドを統合したNext/Nexus/React Serverも出て来て、フレームワーク管理のSSGが行えるようになるなど、独自の世界を切り拓いた
ことが考えられる。C10K問題やマイクロサービス化だけであればGoでもよく、Javaもすぐにキャッチアップしたが、よく知られて手を出しやすいJavaScriptと言うプログラミング言語であること、サーバーとクライアントを同じ言語でカバーできる点が評価され、発展的なフレームワークが出現したと言うことか。
だが、速度や並列処理の問題などから、Goに移行するところもあるようだ*5。また、予想外の方向でも利用者は苦しんでいる。パッケージ管理システムまわりの癖が強い*6。
- あちこちのライブラリを利用する文化があり、かつライブラリの後方互換性をあてにしない方針のパッケージマネージャーであるため、アプリケーションに添付するライブラリのファイル群(node_modules)が肥大化しやすい。
- パッケージのインストールにフックしてコードを走らせる事ができる仕様のためか、近年、パッケージマネージャー経由でのマルウェア侵入が繰り返し報告されている*7。他のプログラミング言語では聞かない状況だ*8。
2024年のStack Overflow Developer Surveyでは、Node.jsを利用している開発者の27.1%が、今後も利用し続けたいと答えている*4のだが、逆に考えると7割ぐらいは微妙に思っていることがわかる。他の開発環境も体験してみたいのか、Next.jsやNuxt.jsが窮屈だと思うのか、AngularやReactやVueの後方互換性の無さや流行り廃りについていくのがつらいのか。
ところで、Node.jsに追い落とされた感があるPHPではあるがWordPressなどのCMSにより、現在でもインストールベースでは圧倒的なシェアを誇っている。
*12025年12月上旬の調査では5.4%に達していた(Usage Statistics and Market Share of Node.js, December 2025)。
*2Historical yearly trends in the usage statistics of web servers, December 2025
*3Technology | 2025 Stack Overflow Developer Survey
*450+ Node.js Statistics Covering Usage, Adoption, and Performance | by Brilworks Software | Medium
*5数はそう多くはない。速度を理由にPHPから移行するところもあるし、習得の容易さを理由でJavaからGoに移行しているところもあるので、Node.jsが際立って劣ると言う話ではない。
*6node_modulesの問題点とその歴史 npm, yarnとpnpm
*7Node poisoning: hijacked package delivers coin miner and credential-stealing backdoor – Sophos News(2021年10月24日)
npmにサプライチェーン攻撃、Chalk、debug、ansi-stylesなど18個のnpmパッケージにマルウェアが注入 | gihyo.jp(2025年9月9日)
npmパッケージを狙った2度目の大規模攻撃 492のパッケージが自己増殖型ワーム「Shai Hulud」に感染:セキュリティチームに求められる6つのアクションとは - @IT(2025年12月05日)
*8他にもサーバーサイドのセキュリティーホールが立て続けに報告されているが、こちらは新しいフレームワークではありがちである。JavaでもSecurity Manager周りやフレームワーク、ライブラリのセキュリティーホールは頻繁に報告されて来た。初期には重要な機能であったSecurity ManagerとAppletは、保守コストが高いと見做されたのか、Java 21でobsoletedされている。


0 コメント:
コメントを投稿