Node.jsをこれまでほとんど勉強してきませんでした。
普段触れることもある言語ですが、ないがしろにしてきたので改めて学んでみました。
【こんな方にオススメ】
・Node.jsについて勉強したことがない
・Node.jsを勉強しようと思っているけど1歩踏み出せない
本記事は下記書籍の要約です。
気になった方はぜひ読んでみてください!
解釈が間違っている場合は遠慮なくコメントをいただけると大変嬉しいです!
本書の構成
ざっくり下記のような構成でした。
- Node.jsについて
- JavaScriptの基本的な構文
- Node.jsの活用
- フロントエンドとバックエンド
- 運用とチューニング
私は初学者なのでその中でもNode.jsの特徴について触れたいと思います。
Node.jsってなに?
Node.jsはChromeに内蔵されているV8というJavaScriptの実行環境のこと。
2009年に登場して、サーバーだけでなく今ではフロントエンドまわりで見ない日はなくなり身近な言語となりました。
Node.jsの言語特徴
Node.jsはNon-Blocking I/O(ノンブロッキング Input/Output)
「シングルプロセス/シングルスレッド」と聞くとウッとなるかもしれません。
反対にマルチスレッドという言葉がありますが、要するに一つのスレッドで処理するぐらいに理解しています。
Node.jsのイベントループ
処理の順番のことだと理解しています。
ループが止まると次の処理ができないため同期処理をなるべく減らしながら記述できることが良いとされているようです。
「イベント駆動型の非同期フロー」というものがあるらしく、読んだ書簡はReactなどのライフサイクルに似ているな…という印象です。(全く違うものだと思いますが…)
Node.jsはネットワーク処理が得意
「シングルプロセス/シングルスレッド」の話に通じるものです。
Node.jsはNon-Blocking I/Oで動作するためリソースを効率的に活用できるようになるとのこと。
マルチスレッドでなくても早く動く仕組みとのこと。
動画エンコードは苦手
動画のエンコーディングやCPUの中心処理はNode.jsの利用は適さないそうです。
Node.jsを利用するから早いわけではなく、記述する際に同期処理をさけないとパフォーマンスが悪くなる可能性があるので注意が必要です。
なんでもそうですが、何かを使うから早いわけではなく適切な作法を学ばないと真の力は発揮できないということですね…
みんな大好き「npm」
もともとは「Node package manaager」と言って、Nodeのコードを再利用するために作られたものだそうです。
npmを使ってインストールしたパッケージはバージョンの管理や環境の再構築が容易のため現代のフロントエンドの開発には欠かせません!
【まとめ】
TypeScriptが使えたり、Node.jsとJavaScriptの違いなど細かいところまで詳しく解説されており非常にわかりやすい書籍でした。
もっと読み込んでNode.jsだけでなくサーバーのことについても解像度を上げていきたいです!
また、これまで避けてきたNode.jsですが意外にJavaScriptを知っていれば書けそうという思ったのでしっかり踏み込んでいきたいと思いました!