Node.jsを触る前にこれだけは絶対に押さえておこう4選
第1選 ブロッキングI/OとノンブロッキングI/O
Node.jsは「ノンブロッキングI/O」
I/O(Input/Output)は時間がかかるものです。
そこで、この時間がかかる作業を処理の完了を待ってから次の処理をするのがブロッキングI/Oです。
逆に、処理の完了を待たずに、処理を投げたら次の処理を実行して、いくのがノンブロッキングI/Oです。
処理が文字通り、ブロックされている形になっております。
第2選 スレッドモデルとイベントループモデル
Node.jsは「イベントループモデル」
イベントループモデルのイメージは、一人の人が複数の人を相手するイメージです。
逆に、スレッドモデルのイメージは、複数の人がいたら、複数人で相手をして一人の負担を減らしていくイメージです。
イベントループモデルは、複数のアクセスがあっても、スレッド数は増えません。
スレッド数が増えないので、CPUはあまり食わずに、動作させることができます。
スレッドモデルは、複数のアクセスがあったら、スレッドを複製して処理にあてていきます。
そのため、スレッドを複製した分CPUを食いつぶしてしまいます。
第3選 イベントドリブン
Node.jsは「イベントドリブン」
イベントドリブン(イベント駆動型)とは、あるものが実行した操作(イベント)に対応した処理を行うプログラムの形式です。
ユーザが操作をしていないときは、常に待機状態でプログラムが待っており、対応するイベントが発火したタイミングで初めて実行されるようになります。
そのため、必要以上にユーザを拘束しないので、マルチタスクOSとの親和性が高いです。
逆に、マルチタスク性をあまり意識する必要がないことが多いときは、逐次実行のプログラミングが採用されます。
第4選 npmをしっかりと利用しよう
Node.jsは「npm」を使おう
npmはNode.jsのパッケージ管理ツールです。
パッケージ管理ツールを使うことで、自分が欲しいライブラリの導入や削除を簡易にしたり、パッケージ同士の依存関係を自分が意識せずに解決してくれます。
ここからパッケージを探せます。
まとめ
Node.jsの特性一覧
- ノンブロッキングI/O
- イベントループモデル
- イベントドリブン
※ npmを利用することで、様々なモジュールを手軽に使うことができる
PHPやRubyを過去触っていて、Node.jsを触りだしたら、Node.jsの特性の3つに中々慣れないと思います。
とくに、思ったようにコーディングができず、「なぜか処理飛ばされる!!」ことや、「思ったように変数に値が入ってない・・」ことがありました・・・
上記の特性を理解することで、素早くそういった問題に気づくようになると思うので、触る前にふわっとでも理解しておきましょう!