このすみノート

Webエンジニアが技術や趣味を書くブログです。

Node.js学習日記(新刊・仮題)- #技書博 向けNode.jsスキルアップ系同人誌についてのご案内

7/27(土)に大田区産業プラザPiOで技術書同人誌博覧会(技書博)が開催されます。 「このすみ堂」改め「なめこっと」というサークル名で申し込みまして、Node.jsをテーマにした新刊を執筆中です。

gishohaku.dev

本の進捗はとても怪しいのですが、気合いを入れる意味も込めてブログにて概要を告知いたします。

本の内容

本書はNode.jsの採用をきっかけにして、同期プログラミングから非同期プログラミングの世界へと足を踏み入れた筆者の、知見をまとめた学習記録です。

The Node Way(Node流)を身に着けていく上で、覚えた内容を振り返りながら一冊の同人誌にまとめました。

  • Node.jsの特徴
  • クラスタリングによるCPUコアを活用した負荷分散
  • プロセスマネージャーによるデーモン化
  • 非同期プログラミング

・・・をはじめ、Node.jsには学びのポイントがたくさんあります。 主にPerlとPHPでサーバーサイドを開発してきた筆者が、Node.jsでは何を学び、何を感じたのか?

本書は日記を読むような感覚で、気軽に楽んでいただけたら嬉しいです。

本書のターゲット

  • Node.jsの入門書を読み終えて、さらにNode.jsに対する理解を深めたい方
  • 非同期プログラミングや、シングルスレッドという言葉に馴染みがない方
  • サーバーサイドJavaScriptに興味がある方

本書はNode.jsの入門書ではなく、Node.js入門書の次に読む副読本のような形を意識しています。 入門書を読み終えたエンジニアが次のステップに向けて、Node.jsに対する理解を深める読む本です。

本書で取り上げる内容について

本書で取り上げる内容は、大きくわけて「サーバーとしてのNode.js」と「JavaScript実行環境としてのNode.js」の2点です。

サーバーとしてのNode.js

Node.jsを単純にターミナルから実行すると、フォアグランドで動作するシングルプロセス・シングルスレッドのスクリプトになります。 本書は「Apache(prefork) + mod_php」構成と比較してみるという視点から、サーバーとしてのNode.jsを考察します。

  • クラスタリング:CPUコアを有効活用するために、クラスタリングによってworkerを複数立ち上げる
  • プロセスマネージャー:デーモン化によってnodeのプロセスをバックグラウンドプロセス化する

Node.jsはサーバーサイドのJavaScript実行環境であるとともに、WEBサーバーやウェブソケットサーバーにもなれる存在です。 その辺りについて、筆者が学んだことをつらつらと書いております。

f:id:konosumi:20190707222839p:plain

f:id:konosumi:20190707214819p:plain

JavaScript実行環境としてのNode.js

Node.jsを一言で表現するなら、サーバーサイドのJavaScript実行環境です。記述したJavaScriptは「V8 JavaScript Engine」が実行します。 V8はGoogleが開発しているオープンソースで、Google Chromeにも採用されています。

またV8は、Node.jsで新しいJavaScriptの文法(ES2015/ES2016・・・)を使うことができるが原動力にもなっています。

Node.jsのJavaScriptでは、非同期プログラミング・コールバック・イベント駆動・ストリームプログラミングなどを理解する必要があります。 この辺りはまだ執筆中でして、内容をご案内できないのが心苦しいところですが。。

時間の許す限り頑張って書きます。

f:id:konosumi:20190707214927p:plain

さいごに

今現在は夏休みの宿題が終わらない気分を味わってます。書き始めてみたものの内容にまとまりがなく、途中でゼロから書き直すことを決断したせいで進捗が0%になってしまったからだという自覚はあります(苦笑)。

時間の許す限り、Node.jsで学んだこを本書に詰め込んでいこうと思っております。もし興味がある方は、会場にてお待ちしております。

そして早く脱稿して、楽になりたいです。

gishohaku.dev