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

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

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

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

ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

1090閲覧

Node.js、リアルタイムで無いウェブサービスでの利用はアリかナシか

kou0179

総合スコア304

Node.js

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

ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2019/04/21 02:15

悩んでいる事

Node.jsをリアルタイム通信がまったく無いサイトで、サーバーサイド言語として採用するのは、アリかナシか

Socket.ioなどのライブラリが充実している等、リアルタイム通信を行うときに非常に強力な言語である事は広く知られていますが、逆にリアルタイム通信が一切無い普通のウェブサービスで使うのは如何なのか、気になった次第です。

考え付いたNode.jsを採用するメリット

  • Expressの利用を考えており、FWとしては非常に薄く必要な分だけ拡張しやすい、扱いやすい。

(特にRailsなど抽象化されまくったモデルを学習するのがメンドクサイ、SQLをゴリゴリ書きたい)

  • JSだけで書ける(個人的な話ではありますが、JSが最も習熟度の高い言語のため)
  • チューニングをしなくても同時接続に強い(? 経験談)

考え付いたNode.jsを採用するデメリット

  • 基本非同期なのでI/O周り(特にDB)を同期処理で書くのが若干面倒
  • Pure JSで書く場合動的型付けなので牢固なシステムを作るためには意識しなくてはいけない

よろしくお願いします。

そのほかに、Node.jsを採用するメリット、デメリット、またその他の代替案があればご提案、ご意見頂けますと幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

日本では仕事は少ないですがありです。
そもそもNode.jsはRubyやPythonとは一線を画す高速な言語で、
ES2015以降の流れでイケてる記述が出来るようになったので、PHPとかいうダサい言語より簡素なコードになります。

まぁ、上に上げた言語も全て採用する理由たりうる良さがあるのですが、
Node.jsもそれに負けていない中々バランスの取れた良い言語だと思います。
つまり新規にプロジェクトを立ち上げる際の言語選択として考慮に入れる価値はあるでしょう。

ただし、Node.jsはプロセスがしばしば落ちるので、
pm2等でゾンビのように復活するような仕組みを用意しておきましょう。

メリットに関して

Expressの利用を考えており、FWとしては非常に薄く必要な分だけ拡張しやすい、扱いやすい。

これはそうですね。
Webでの使用が一般的な他言語でもExpressレベルの簡素なフレームワークは当然作られてはいますが、
どれもマイナーなものといった印象があります。

それに比べればNode.jsにもRailsそっくりなSailsというフレームワークはあったりしますが、
知名度や使い勝手で言えばExpress一択に近いレベルで強く、
Node.jsが持つマイクロサービス アーキテクチャとよく馴染んでるといったところでしょうか。

GolangのWebフレームワークは結構シンプルだったような…
速度が欲しければGolangも一考の価値はあるでしょう。
因みにGolangもでかい規模のアプリを作るのが苦痛で、Node.jsのマイクロサービスという分野でのライバル的存在です。

JSだけで書ける

そうですね。
特にBrowserifyやWebpackを利用することで、バックエンドで作った関数をフロントエンドに持ち込むことが簡単に出来るのがNode.jsを書く最大のメリットです。

チューニングをしなくても同時接続に強い

チューニングをどの程度を指すのかがあれですが、
RailsのUnicornみたいなものを指していますか?
確かにNode.jsは単品で爆速ですが、プロセス管理のpm2とかないと話にならないので結構悩ましい所ですね。

デメリットに関して

基本非同期なのでI/O周り(特にDB)を同期処理で書くのが若干面倒

この感想が出る時点でES2016以降の構文を知らないのだと思います。
Promiseとasync/awaitを学習してください。
async/awaitまで学習が進めばほとんど同期的な構文のまま非同期を扱えるようになります。

Pure JSで書く場合動的型付けなので牢固なシステムを作るためには意識しなくてはいけない

まぁ、型を意識するのはどの言語でも同じことですし、何を今さらと言った所でしょうか。
他のPHP、Ruby、Python全てに共通する問題ですしね。

新しくスキルの著しく低いメンバーがジョインするとぐちゃぐちゃになるというリスクはありますが、
そういう場合はレビュー等で厳しくチェックしましょう。

投稿2019/04/21 04:03

miyabi-sun

総合スコア21158

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

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

kou0179

2019/04/21 04:45

>> 日本では仕事は少ないですがありです。 おお!良かったです。 >> 速度が欲しければGolangも一考の価値はあるでしょう Golangも検討しました。ただお恥ずかしい事に英語が堪能でなく、日本語の文献(言語でなくFWの)が少なく少し躊躇しております。 >> この感想が出る時点でES2016以降の構文を知らないのだと思います。 プロミス、Async/Awaitは理解しているのですが、大前提として言語として非同期なのでそれら構文を使わなければ同期処理が書けないというような意味でした。(pgとかではそこそこ隠蔽してくれていますが!) でも逆に他言語では非同期を書くために面倒な構文があったりするので、一概にNode.jsのデメリットとは言えないですね。メリットでもあるというか。 >> 型を意識するのはどの言語でも同じことですしー まあそうなんですが、クラス固有のメソッドなどを参照しない限りエラーを吐かずに動いてくれちゃうのが良いとこでも悪いとこでもあるので、気づきにくいというのが…。 ほぼNode.js + expressでの開発を考えていたのですが、知見がある方からの後、一押しが欲しかったところ大変安心しました。 毎度ご丁寧にご説明頂きありがとうございます。大変参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問