質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

6073閲覧

Node.jsに「向いていること」と「向いていないこと」

twipg

総合スコア30

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

5グッド

5クリップ

投稿2015/12/07 12:53

編集2015/12/09 14:08

Node.jsはシングルスレッド、ノンブロッキングI/O、イベントループなどの特徴があり、向いていることと向いていないことがあると思います。

下記、Googleで検索して調べてみたのですが、他にも「向いていること」、「向いていないこと」の例がありましたら、教えてください。もし実際にNode.jsを使っていいたら、どのような処理にNode.jsを使っているか教えていただけたらありがたいです。

また、下記の理解が間違っていたらご指摘下さい。

##Node.jsに向いていること

処理が非常に短時間でイベント処理が重要なアプリ

例えば、チャットアプリなどの大量のアクセスのあるリアルタイムなネットワークプログラミングが得意

シングルCPUのサーバー

シングルCPUの環境化でもその性能を十分使い切れるため、比較的性能の小さいサーバ上で大きなパフォーマンスを発揮できる

##Node.jsに向いていないこと

CPU負荷の高い処理

CPUリソースを大量に必要とするJavaScriptの処理を行うとイベントループが回らない状態になり、イベントハンドリングが行えない状態に陥る。このため、CPU処理が大量に必要とされるアプリではにNode.jsの利用は向かない

マルチコアサーバー

Node.jsは基本的にシングルプロセス・シングルスレッドで動作する。しかし、そのままの利用では、最近の高集積化したマルチコアサーバ上ではハードウェアの性能を十分使い切ることはできない。node-v0.6からはクラスターモジュールが導入され、Node.jsがマルチプロセスで動作するようになったが、マルチプロセスを意識してプログラミングの設計をする必要がある。

画像など静的コンテンツの処理 (Nginxなどで対応)

大量の静的コンテンツを提供するサーバなどでは、そもそも多数のイベント処理がそれほど必要なく、Node.jsを使うメリットがほとんどない

##追記: 構築事例
アメーバ、PayPalなどで構築事例があるみたいです

[大図解]ピグライフはこう動いている
Node.js Cluster+Socket.IO+Redisによるリアルタイム通知システム
MongoDB + node.js で作るソーシャルゲーム
第64回、第65回 NHK紅白歌合戦:生放送と連動したミッションクリティカルなメッセージ配信プラットフォーム
PayPal社がバックエンドをJavaからJavaScriptへ移行

上記PayPalの記事でもあるように、1つのJavaScriptチームでフロントエンドからバックエンドまで記述できるということは大きなメリットがありそうです。

Harrell氏によると、JavaScriptをブラウザ側からサーバ側まで使用する利点の1つとして、『あらゆるレベルの技術において、理解し、ユーザのニーズに対応することができる』1つのチームが受け持つことにより、フロントとバックエンド開発間の隔たりをなくすことが挙げられる

mpyw, hirai0110, afroscript, rontec, TakeoAsai👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

スペック的なパフォーマンスではありませんが、Javaの開発と比較し容易に開発を進めることが出来ると思います。
またフロントとサーバーで言語をJSで統一出来るという意味から、開発者をそれほど選ばないというメリットもあります。

反面比較的簡単に作れることの副作用として、変数定義なども曖昧に出来るため不具合の温床になりやすく、大規模システムの作成には向いてないと感じました。

投稿2015/12/08 00:12

rontec

総合スコア169

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

twipg

2015/12/08 12:41

たしかに大規模開発でnode.jsは聞いたことがない気がします。 容易に開発できるというのは個人開発者には魅力的ですね。
mryo0826

2015/12/15 05:24

node.js 自体は使っていませんが、AngularJSでのフロントエンド開発にTypeScriptを使っています。型定義を厳密にしてコンパイルチェックが出来るので、大規模開発をするのであれば十分保管できると思います。(実際、IDEでの補完機能がかなり良いので) サーバサイドはJavaでやってますが、定数定義をJava、TypeScript両方で用意しないといけないのでnode.jsでやればこの辺統一できるのでは?と思うことも度々あるのですが、サーバサイド、クライアントサイドで向き不向きがあるので、今はそれぞれで違うものを使うのは仕方ないかなと思っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問