見出し画像

『ハンズオンNode.js』No.01【学びの記録】

 斜読(ヨミ)です。
 1年以上前、簡単なボードゲームをプログラミングしてオンラインで友人と遊びたいと思った時に、サーバサイドプログラミングの学習のため『ハンズオンNode.js』を購入していました。しかし、大学受験などで読みづらい期間があり、暫く忘れていました。最近思い出して再び学習を始めたので、学びの記録をここに残そうと思います。

※注意

 この記事は学びの記録であるため、教材として扱われることを想定したものではありません。誤り・誤謬・説明不足は多分に含まれると思われます。十分に知識のある人はゼウスの視点で見守ってください。よく分からない人は「ふーん」とか「へー」とか思いながら読み流してください。

まず各章の内容をざっくりと理解する。

1章「イントロダクション」
キーワード:Node.js、JavaScript、標準
 Node.jsはプログラミング言語JavaScriptの実行環境である。ここでは、Node.jsの概ねの特徴、関連する各種標準仕様、JavaScriptプログラミングの基礎知識について説明する。

2章「非同期プログラミング」
キーワード:マルチスレッド、イベントループ、非同期プログラミング
 Node.jsでは並行処理の実現のため、従来一般的であったマルチスレッドではなく、主にイベントループを用いる。イベントループで並行処理を実現するには、ある処理の完了を待たずに次の処理を開始するようなプログラムを組む非同期プログラミングが不可欠である。ここでは、マルチスレッドとイベントループの違い、非同期プログラミングの様々な実装パターンについて説明する。

3章「EventEmitterとストリーム」
キーワード:イベント、ストリーム
 2章で扱った非同期処理は要求と結果が一対一であったが、これではWebサーバとのやり取りのように要求と結果が必ずしも対応しない処理は行えない。例えば、Webサーバ上で起きるイベントに反応して処理を行わせるなどである。ここでは、この種の非同期処理をNode.jsではどのように組むのか、データを徐々に処理していく仕組み(ストリーム)について説明する。

4章「マルチプロセス、マルチスレッド」
キーワード:clusterモジュール、worker_threadsモジュール
 マルチコアのシステムなど、イベントループが適すると言えないことがある。このため、Node.jsではclusterモジュールによるマルチプロセス化やworker_threadsモジュールによるマルチスレッドプログラミングといった手段も用意されている。ここでは、これらについて説明する。

5章「HTTPサーバとHTTPクライアント」
キーワード:httpモジュール
 Node.jsではHTTPを扱うためにhttpモジュールが用意されている。このモジュールはサーバ・クライアント双方に向けたAPIを提供するが、自由度が高い代わりに利便性が悪いため、普通はこれを用いて作られたより扱いやすいサードパーティのパッケージを使う。ここでは、httpモジュールとそれを用いて作られたパッケージ、Node.jsでHTTPサーバやHTTPクライアントを実装する方法について説明する。

6章「リアルタイムWebアプリケーション」
キーワード:リアルタイムWebアプリケーション
 5章で扱った方法ではユーザーによるブラウザリロードなどが無ければ古いWebページを表示し続けてしまう。これとは違い、クライアントサイドにサーバの最新情報を同期させるような仕組みを持つWebアプリケーションをリアルタイムWebアプリケーションと呼ぶ。ここでは、このリアルタイムWebアプリケーションを実装する方法について説明する。

7章「データストレージ」
キーワード:データストレージ
 これまでの手法ではデータがNode.jsプロセスのメモリ上にしか存在しないため、アプリケーションを停止すると全てのデータが消えてしまう。また、マルチプロセス化したときのデータの共有も難しい。データを保存したり、複数のプロセス間で共有しやすくするには、Node.jsと独立したデータストレージを使う。ここでは、データストレージは一般的にどのようなものがあるか、それらをどのように扱うのかについて説明する。

8章「ユニットテストとデバッグ」
キーワード:ユニットテスト
 ソフトウェアのテストの中で最小単位を対象とするテストを、ユニットテストという。ここでは、Node.jsでユニットテストを書くのによく使われるツールとそれを用いたテストの記述について説明する。

9章「デプロイ」
キーワード:デプロイ、コンテナ技術
 アプリケーションを外部から利用可能な状態に公開するには、サーバにデプロイする必要がある。サーバが運用される環境には、使用者自身が用意したオンプレミスと、サービスとして提供されるクラウドがある。ここでは、主にオンプレミス環境で使われるツールを用いたデプロイ、両方の環境で使われるコンテナ技術、クラウドサービスを用いたデプロイについて説明する。

10章「パッケージ管理」
キーワード:npm、Yarn
 Node.jsでは、「コア(Node.jsそのものに付属する機能)は最小限に保つべきだ」というスモールコアという考え方から、プログラムを機能ごとに独立したモジュールとして分離して、必要な箇所でのみインポートする仕組みを使う。パッケージ管理ツールはモジュールの管理や共有を容易にしている。ここでは、パッケージ管理ツールのnpmYarnの使い方について説明する。

11章「Node.jsとJavaScript標準」
キーワード:ESモジュール、WebAssembly
 Node.jsは、ユーザーの目に触れる部分を開発することに関して、無縁でいられない程浸透している。故に、開発者が実装や学習をしやすくするために、Node.js環境とブラウザ環境とでJavaScriptの標準を可能な限り同じ仕様にすることが求められる。ここでは、JavaScript標準からNode.jsに導入された仕様の一例である、ECMAScript標準に由来するESモジュールと、Web標準に由来するWebAssemblyについて説明する。


この記事が気に入ったらサポートをしてみませんか?