Help us understand the problem. What is going on with this article?

Node.js を5分で大雑把に理解する

More than 3 years have passed since last update.

随時更新します。

対象の人

  • 使ったことないけど、軽く理解はしておきたい人
  • 本格的に勉強する前に、大まかな概要を知りたい人

特徴

  • サーバーサイドのJavaScript
  • 非同期 (I/Oの処理結果を待たず処理を進める)
    • ノンブロッキングI/O (I/Oの結果を待たないで処理をすすめる。I/O処理が終了したらコールバック関数を実行。)
  • イベントドリブン (何かしらのキッカケで動き始める)
  • シングルスレッド (メモリ消費が少ない、仕事切り替えが少ないので速い)
  • JavaScript エンジンが Google の V8 で速い

Node.jsで作られたアプリの特徴

  • 小さいデータや小さい計算の場合、速い
  • メモリ消費量が少ない
  • ローカルとリモートとのデータのやり取りをシームレスに行うフレームワーク(Meteor)などが出てきている
  • サーバ側、クライアント側で処理の共通化ができる (入力値チェックなど)
  • サーバサイドのコード変更した場合、Node.jsアプリの再起動が必要(な場合が多い)
  • リアルタイムなアプリケーションに合う
    • シングルページアプリケーションに合っている
    • WebSocketを利用するアプリに合っている

node.js は何を解決する?

  • C10K問題 (クライアント1万台接続問題)を解決する
    • 従来のWebサーバは、1万接続もあるとパフォーマンスが落ちる。ので、その問題を解決する

どのように解決する?

  • ノンブロッキングI/O
    • I/Oの待ちをなくすことで、沢山の接続を速くこなすことができる

例えば、ハードディスクの入出力のスピードは、CPUやメモリーから見ると非常に遅い。書き込み完了を待っているのは非常に時間の無駄なので、ハードディスクに書き込む命令を出して、書き込めたかの結果を待たず次の処理をどんどん進めてしまうので非常に処理を早くすすめられる。書き込めた場合にコールバックが呼ばれる。

フレームワーク?

  • Node.jsは、フレームワークではありません。ライブラリでもありません。
  • JavaScript アプリケーションのプラットフォーム
  • Node.jsでは、Webサーバとアプリケーションが同じ PHPのWebサイトで無理やり例えると、Apache + mod_php + Webアプリ です。なので、Node.js の Hello Worldのサンプルは、HTTPを受付け、200とヘッダーと内容を返す、というのが多い

サーバーサイドJavaScript

  • ファイル読み書きは、fsモジュールを使う

node.js 上の有名なフレームワーク

  • Express (シンプルなフレームワーク)
  • Backbone.js
  • Sails (Railsライクなフレームワーク)
  • Meteor

訂正) AngularJS (Angular2)を、node.jsのフレームワークと記載しておりましたが、ご指摘によりJavaScriptのフロントエンドのフレームワークということで削除いたしました。

基礎用語

  • コールバック関数(非同期の処理が終わったら呼ばれる関数)
  • CommonJS (共通化しようとしている規格)
  • libuv (libev, libeio) 非同期I/Oライブラリ, イベントループ・ライブラリ
  • DIRT (data-intensive real-time) DIRTy アプリ
  • npm (node package manager)
    • 沢山のモジュールとそのバージョンやモジュールの依存性を管理する

クライアントサイド JavaScript との違い

  • ホストオブジェクト: ブラウザの globalな window オブジェクト
  • require
  • モジュール: ファイルI/Oなど
  • C/C++プラグインで拡張可能
  • npm: パッケージマネージャー

参考

Node js 入門

hshimo
ブロックチェーン専門企業、コンセンサス・ベイス代表、志茂 博の技術メモ。 興味ある方は、日本ブロックチェーンユーザ会へ。http://crypto-tech.jp/
http://www.consensus-base.com/
consensus-base
ブロックチェーン技術の専門企業。大企業様を中心に国内有数の実証実験・開発の実績があり、様々な実装の経験・ノウハウがある。
http://www.consensus-base.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした