Node.js本 - 人気 / 新書 / 高評価 書籍一覧 | 技術書の本だな


Node.js 人気本 ランキング

人気 1位
発売日 2020/11/17
(4.7)
Amazon 4,070円
本書の内容
Node.jsの入門書。対象読者は、フロントエンド開発の知識はあってもサーバサイド開発は知らないエンジニアや、他言語の経験はあってもNode.jsは触ったことがないプログラマー。
本書ではターミナルのプロンプトにコマンドを入力してその反応を確認したり、簡単なスクリプトをNode.js環境で実行したりしながら、Node.jsプログラミングの基本からWebアプリケーションの開発、テスト、デプロイまでをハンズオン形式で学びます。また、コードの背景にある設計思想や、プログラムの挙動の仕組みについてもしっかり掘り下げます。
本書のゴールは、読者がNode.jsの全体像を掴み、業務レベルでのアプリケーション開発に対応可能な知識を身につけることです。  
内容サンプル
 
User Voice
 
   
人気 2位
本書の内容
Node.jsの入門者向け書籍です。2018/8に出た「Node.js超入門 第2版」の改訂版です。改訂内容は新バージョン14対応、データベースはSQLite3、ORMはSequelizeに変更しています。CSS関連はBootstrap利用、Expressは最初からGeneratorを使う形で解説しています。
対象読者はJavaScriptの入門書を読み終えた層ですが、その経験がない層も読めるよう配慮し巻末にこの本を読むのに必要なJavaScriptの知識を最低限解説しています。Node.js未経験者から、既存の入門書などで挫折した人までより多くの人がついていけるよう、手取り足取り教える内容です。  
内容サンプル
 
User Voice
仕事で必要になりそうだと言う事で購入しました。
内容もわかりやすく買って良かったと思いました!
残念な事に担当が変更となり勉強を継続する必要がなくなってしまいました。
超入門と書かれているので入門書のように見えますが入門書ではありません。
いわゆる入門書部分は一番最後にJavascript超入門として20ページほどありますが、このページ数では全然足りません。

アプリケーションVSC(Visual Studio Code)を利用してサーバー側のプログラムを書いてそれをブラウザで表示、操作してアプリの仕組みを覚えるための書籍です。
サーバーとクライアントのデータのやりとりの説明は図も付いていて非常にわかりやすく出来ています。

各サンプル毎にソースコードも記載されていますがソースコードに関する説明はありません。
あくまでアプリの動作を説明しているだけになります。
視点は変わっていますが必要な人も多いでしょう。

【書籍を読む前に必要な知識】
Javascriptを理解していること
HTMLを理解していること
データベースを理解していること

【この書籍を読むことで得られる知識】
サーバークライアントデータのやりとりの仕組み
フレームワークExpressの使い方を少々
データベースの使い方
データベースを使ったアプリの作成

と必要な知識と得られる知識の間が狭すぎるニッチな所を攻めてる書籍と言えるでしょう。
ソースコードのミスが多く気になった

- スペース忘れ
- 文末に謎のアルファベットd
- htmlタグ閉じ忘れ
など

内容は駆け足で初心者には難しいのではと感じた
実践の部分では他FWとの違いや、nodeを使うメリットなどもう少し教えて欲しかった
 
   
人気 3位
本書の内容
本書は、Node.jsとReactを使用した、アプリケーションの開発の解説書です。
Webの世界における古くて新しい言語「JavaScript」を題材に、 いま、JavaScriptで効率的に開発するには、どうしたら良いだろうか? ということを考えてみました。
本書は、Node.jsとReactを掲げることで、その問いに答えを出そうとしています。
Node.jsは、ブラウザを飛び出して、サーバの中で実行できるJavaScriptの実行エンジンです。
今やNode.jsはスクリプト実行環境として揺るぎない地位を築いているといってもいいと思いいます。
そして、ReactはFacebookが開発したUIフレームワークです。ReactはUIを個々のコンポーネントに分割することで、効率よく保守性の高いアプリを作ることができます。
本書の1章では、最初にNode.jsや最新のJavaScript仕様について紹介します。そして、2章と3章でReactについて解説します。
4章では、フロントエンド開発にフォーカスします。Electronを用いてPC向けのデスクトップアプリを作ったり、React Nativeを用いて、スマホ向けアプリを作る方法を紹介します。
さらに、5章、6章では、実際的なWebアプリを作りながら、Node.jsとReactの深い部分に切り込んでいきます。
本書では、具体的かつ簡潔なサンプルプログラムを心がけました。
本書が、ExmaScript 2015以降で大きな変化を遂げたJavaScript開発のための指南書となることを祈っています。
 
内容サンプル
 
User Voice
## 概要
JavaScriptの開発で人気のフレームワークであるReactによるアプリケーション開発方法を解説している。

最初に,Reactと共に使われる現代的なJavaScriptの開発方法として,Node.js,npm,Bable,Webpackを解説し,Reactの使い方を説明し,最後にその応用として実践的なアプリケーション開発事例を解説している。

実践的な開発例として,分散SNSのMastodonのElectronによるデスクトップクライアントとReact NativeによるAndroid/iOSクライアント,掲示板やリアルタイムチャット,Wikiシステム,独自SNS,機械学習による手書き文字認識を取り扱っていた。

説明が足りないところや,やや理解が難しい箇所もあったが,Reactや現代的なJavaScriptでの開発方法が一通り説明されていてよかった。

特に,実践的な開発として,分散SNSのMastodonのデスクトップとスマホクライアントの開発方法の解説があるのが良かった。MastodonのWeb APIを使うためのnpmのライブラリー (mastodon-api) が存在するので,これを使うことで,比較的簡単に必要な機能が実装できるようだ。

たぶん他のWeb APIも同じような感じなのだろうけれど,それが解説されているのが良かった。この手順通りにやれば,自分にもできそうだと思えた。

## 結論
Reactによる現代的なJavaScript開発全般が解説されていた。実践的な事例があり,これを目当てに購入してもいいなと思った。

ただし,解説が不十分なところがあったり,内容が難しいところもあるので,わからないところは追加で調査が必要だろう。

特に,分散SNSのMastodonのクライアントの開発例が書かれており,あまりネット上に情報が出回っていないので,貴重な情報源だった。

パーマリンク: https://senooken.jp/blog/2019/03/27/
おもろいです。
色々な分野をサクッとまとめていて、さらっと読むにはいいかも。

しかしながら誤字脱字の嵐。
proof readingはなかったのだろうか・・・
初めてReactを学ぶときにこの本を使いました。
React自体の説明も分かりやすくいいですし、何よりその他様々なこと(expressやwebsocketやその他技術)を広く浅く取り扱ってくれるので、かなりおいしいと思いました。

他のレビューに「物足りない」と書いている人がいましたが、確かにReactをある程度触ってきた人にとっては物足りないかもしれませんが、あまり触っていなかったり初心者の場合はかなり多くのことを得られると思います。
 
   
人気 4位
本書の内容

JavaScript(ES2015以降)をフル活用して
柔軟性に富んだWebアプリを作成しよう!
フロントエンドもバックエンドも
JavaScriptのスキルを120%活用する

本書は
「Get Programming with Node.js」
Jonathan Wexler, Manning Publications Co, 2019
の翻訳書です。

アプリケーションを構築できるプラットフォームは数多く存在します。Node.jsは、そのひとつですが、Webアプリケーション(インターネットを介してリクエストを処理し、応答として処理したデータとビューを返すアプリケーション)の構築に適している点が最大の特徴です。

本書は、純粋にJavaScript(ECMAScript 2015以降)だけを使ってアプリケーションを構築する手法と、その手立てを提供します。そのため、JavaScriptの機能と使い所の極意を否が応でも学ぶことになります。

また同時に、本書はWeb開発への導入編となるでしょう。Webアプリケーションを構築したことがないとか、内部的な仕組みを完全に理解していなかったという人は、本書で、その全貌を学ぶことができます。

本書の目標は、サンプルやコードを通じて、これらのコンセプトを説明することであり、サンプルを使い・変更して、読者が自分のアプリケーションを作れるようにすることにあります。

【本書のポイント】
・9つのユニットと38の短い章構成
・節ごとの理解度チェック
・章ごとの練習問題
・豊富な補足事項とポイント解説

【読者が得られること】
・Node.jsを使ったWebアプリケーション構築の基礎知識
・Node.jsによる実用的なプログラミング能力
・ECMAScript 2015以降の新しい機能を使ったプログラミング手法

※本電子書籍は同名出版物を底本として作成しました。記載内容は印刷出版当時のものです。
※印刷出版再現のため電子書籍としては不要な情報を含んでいる場合があります。
※印刷出版とは異なる表記・表現の場合があります。予めご了承ください。
※プレビューにてお手持ちの電子端末での表示状態をご確認の上、商品をお買い求めください。

 
内容サンプル
 
User Voice
HTML/CSS/JavaScript(フレームワーク含む)で何回かアプリや機能を実装したことのある人が、nodeが裏でやってくれていることについて理解し直すために読むのには良い書籍だと思います。

自分自身、これまでnodeに関しては良くわからないままnode_moduleを導入したり、スクレイピングのnodeライブラリを導入したりしていました。完全なる雰囲気でやっており、そのおかげでExpress.jsを使ったHerokuでのAPIの立て方がわからず本書にたどり着いた次第です。

この書籍を通じて、何が起こっているのかを少しずつソースコードを発展させながらキャッチアップできたので曖昧だったところがずいぶん減ったと思います。今まで断片的だった知識が線に繋がる感覚です。
(curlコマンドについて一緒に学べたのも良かった)

気になる点としては"Node.jsの入門書"であって"プログラミング初学者の入門書"ではない点です。

初心者であればことあるごとに丸々コードを貼っておいて欲しいのですが文章のみで「○○.jsを作成します」のように手順が書かれており、初心者だとわからない人が絶対にいるよな。と思える類の端折った解説が多かったです。私も途中途中、Gitのソースコードと照らし合わせながら進める必要がありました。

また、文章に違和感を覚える人もいて当然だと思います。私の場合は海外の記事を翻訳しながらキャッチアップした経験があるため言わんとすることがすぐにわかりますが、初心者もしくは英語で情報収集の経験がない方であれば難しいと感じる気持ちはわかります。日本人からするとどうしても独特な文章ですので。

さらに、パッケージのバージョン違いでうまく動かなかったりした際に、パッケージが原因なのか自分のコードが原因なのかを自分で考えたりしながらエラーを捌く必要もあります(例えば、lesson_10の内容は私のejsの3vでは動きませんでした。Gitのソースのバージョンに合わせることで動いた。基本的にGitのソースコードに合わせてやれよという話ではありますが...)
package.jsonに対して少しは慣れがある人でないとつまづくポイントかなと思います。

上記の理由から初心者向きではないし、初心者であればまずは動画の教材などでとにかく手を動かしてまずは雰囲気で動かし方を覚えた方が効率が良いかと思います(サーバーサイドの知識などがあればまた別ですが)。

とは言え、nodeに関する良さげな書籍が見つからなくて困っていたところ本書でキャッチアップできて良かったです。サーバーとのやりとりをnodeで体系立て理解できる書籍はそんなにないと思います(まだ本書の途中までしか終わってませんが)
Nodejs 本として一番良かった。
大抵の枝葉技術はどうせ海外のGitHubなどの公式リファレンスを読むことになるので、Web サーバーの組み立て方を順序よく最初のコードを繰り返し型で改良しながら学べるので、独学志向で最初しゃ簡単に、慣れたら高度に組み込みたい人にはヒントになる情報が多い。

批判レビューワーは恐らく冒頭に紹介されている著者のGitHubもみていないとおもわれる。

この手の技術書のサンプルコードはあまりに初歩的だったり極端に複雑なお手本をネット掲載するものも少なくないが、本書は同じコードをだんだん改良していく方式でそのレッスンごとのソースを収録している。
そのため理解度が深まるにつれて同じコードの改良結果を本の解説つきでソースを見れるので効率よく学べる。

ただし、nodejs でファイルの読み書き、javascript の最低限の構文知識、GitHubで自力で何度か英文リファレンスを読んで動かす経験がないと、本書の書いている意味そのものが理解できない。
英文リファレンスといっても最近はGoogle翻訳と英文を一緒に読めば辞書使わずにたいていは意味が理解できるし、本書を理解するレベルに至るハードルはかなり低い。

本書は本のタイトルが不適切で入門Express でサーバー構築である。
Node.js自体を学ぶにはかなり基本的な説明がないので言語自体の入門書ではない。
そもそもNode.jsとは何なのか、どういった働きをするのかがよく理解できました。

翻訳がひどいというレビューが散見されますが、そんなことはありません。
プログラミングやWebアプリケーションの仕組みがわかっている方であれば問題ないと思います。

最終的に作成するサンプルアプリケーションは、基本的なMVC・API作成・JWTを利用したAuthentication・WebSocketを利用したチャット機能などがあります。
 
   
人気 5位
本書の内容
※この商品は固定レイアウト型の電子書籍です。
※この商品はタブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
※お使いの端末で無料サンプルをお試しいただいた上でのご購入をお願いいたします。

※本書内容はカラーで制作されているため、カラー表示可能な端末での閲覧を推奨いたします。


これ1冊で「Webページ制作からサーバーの開発」までわかる!

日本初のMac専門月刊誌「Mac+」の頃から主にMac系雑誌に寄稿する。ハイパーカードの登場により「ビギナーのためのプログラミング」に開眼。以降、Mac、Windows、Web、Android、iPhoneとあらゆるプラットフォームのプログラミングビギナーに向けた書籍を執筆し続ける。●目次
Chapter 1 Webプログラミングを始めよう
Chapter 2 HTML/CSSを学ぼう
Chapter 3 JavaScriptを学ぼう
Chapter 4 Node.jsを学ぼう
Chapter 5 Expressフレームワークを学ぼう
Chapter 6 データベースを使おう
Chapter 7 本格Webアプリを作ろう



●著者
掌田 津耶乃(しょうだ・つやの)
日本初のMac専門月刊誌「Mac+」の頃から主にMac系雑誌に寄稿する。ハイパーカードの登場により「ビギナーのためのプログラミング」に開眼。以降、Mac、Windows、Web、Android、iPhoneとあらゆるプラットフォームのプログラミングビギナーに向けた書籍を執筆し続ける。  
内容サンプル
 
User Voice
わかりにくいが、何となくこう書けば動くという雰囲気がわかる
 
   
人気 6位
本書の内容
あなたがWebアプリケーションの開発をはじめたいなら、Node.jsを使って、JavaScriptから学習をはじめることをおすすめします。JavaScriptはWebページだけでなく、サーバー側の本格的な開発にも多用されています。本書は、Node.jsを使ってWebアプリケーション開発の基本から、Expressフレームワークを使った開発まで、自分の手を動かしながらおぼえる入門書です。Node.js Ver.10対応。

※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。  
内容サンプル
 
User Voice
Node.jsを全く知らないので読んだ。初心者本としては最適だと思う。Node.js+Expressの本。
他の本を読んだり学んだ経験がある人には物足りないと感じるでしょうけど。
書いてあることは、ほんとうに基礎の基礎。
本にも書かれているが、実際にアプリを作るようになるには、この本でどんなもんかわかった後の自分の頑張り次第。
誤字はちょこちょこあるが、致命的なものは無い。
Javascriptの入門ページが付録ページにあるが、不要だと思った。
かわりにVisualStudioCodeのショートカットや、デバッグについて書いてほしかった。
javascriptのせいかVSCodeのせいか、エラーが出たときにメッセージを見てもよくわからないのが不便だった。
2018年度版なので情報も新しい。
node.jsのことをよく知らない人向けに解説されていて、独学で勉強するのに良い本だとお思う。
初めてWeb開発をするような人にオススメできる1冊。
Node.jsだけでなくWebに関する基礎知識も丁寧に解説されており、わかりやすかった。

ただし、下記の点には注意が必要
・誤記が多いので、正誤表をこまめに確認しなければならない
・サンプルコードが変更部分を太字にするといった工夫がされていないので微妙に分かりづらい
・ダウンロード出来るサンプルのファイルがtxtファイル1枚にまとめられているので見辛い

また、出版年の関係で一部古いJavaScriptの書き方がされているため、近くにJavaScriptについて
聞けるような人がいればなお良いと思われる
 
   
人気 7位
発売日 2017/09/19
(3.2)
Amazon 347円 Kindle 2,970円
本書の内容
もし、あなたがWebアプリの開発をはじめてみようと思っているなら、Node.jsをおすすめします。Node.jsは、JavaScriptでサーバー開発ができる非常に重要なソフトです。本書は、Node.jsのインストールから、フレームワークの使い方、データベースを使った本格的なWebアプリの開発まで、初心者でも手を動かしながらおぼえられる入門書です。あなたもDB版ミニ伝言板やMarkdownデータ管理ツールなどの開発を体験してみましょう!

※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。  
内容サンプル
 
User Voice
Nodeを触って見たくなり、ネットで調べながら勉強してみたが何から手をつければいいのかわからずに挫折。コストパフォーマンス的に本を買ったほうがやすいと考えて購入しました。現在chapter4まで読んだところですが、一つ一つのモジュールの説明がありスッキリわかりました。文章も読みやすく、すらすら進めることができます。誤字は確かにありましたが私はそこまでは気になりませんでした。ただHTML・CSSに関する説明は少ないので、全くの初心者の方はHTML・CSSの意味は調べながら学習することになると思います。これからNodeを勉強したいが、何からやればわからない方は読めば勉強の方針を立てることができるのではと思います。
動画サイトや書籍で何度も挫折したが、初心者がどこに疑問を抱くかを先回りして説明が組み立てられています。

こういうものと、ある程度断定的に説明が進むので、割り切りながら読み進められるのもありがたかったです。

カラーで見やすく、汎用的な想像も掻き立てられました。
タイトルの通り
第2版を買うことをお勧めする
内容は本当に良かったです。
 
   
人気 8位
本書の内容
本書は、「スケーラブルなネットワークプログラムを簡単に作成するための方法を提供する」というNode.jsの日本初の解説書です。Node.jsの初歩から応用まで、すべてを学ぶことができます。  
内容サンプル
 
User Voice
入門的な簡単数行スクリプトに始まり、いろいろな例示も多いので分かりやすいと思います。
apacheやnginxではできないことを…と思っている人には良い教材ではないでしょうか。
この本は、導入編、基本編、実践編、応用編とわかれている。
HowTo本ではなく、そしてNode.js Web開発入門でもなく、その名の
通りNode.jsの入門。
だから、この本を読めばさっそくNode.jsのWebアプリを作れる!と期待
すると、ちょっと違う結果になる。
ただ、WebアプリのHowToはWebにありふれているので、検索すれば
いくらでも記事は見つかるので、問題ない。

導入編は、Node.jsの概念と開発環境の構築方法。

基本編は、Node.jsとは何かを理解することができる。
イベントの説明から始まり、nextTick(),ストリーム、バッファ、net,tcp
tls,httpと低いレイヤから丁寧に説明されている。
テストやデバッグ方法についても一通り説明されており、ちょっと違うこと
をしたいが、ネットでは解答が見つからないといった場面でこれらの知識は
活きてくるものと思われる。
またV.08から導入されたDomainの説明も1章さかれて説明されており、Node.js
でよく問題になる例外時にサーバごと落ちるといった問題への簡単な解決策が提示
されていて、とても助かった。

そして実践編。ExpressとSocket.ioの説明でこの部分は、HowToになって
いる。
サンプルのアプリは、フォーラム、socket.ioを使ったファイルの共有、
Twitterのハッシュタグストリーミングの3つ。 サンプルコードが追記が
ほとんどとはいえDiff形式で表示されていて、ちょっと辛い。
出版社のサイトからソースコードをダウンロードして読むことで理解できる
ようになった。 ものぐさな私には、いっそ完成形のソースをのせて部分
ごとに説明していただければありがたかった気が。
また、Express,Socket.ioの機能を網羅的に説明している訳ではないので、
実際のアプリはこういう感じで作るよといった雰囲気を知れる章として
思ったほうがいい。

応用編は、Node.js自体の実装の簡単な説明と非同期プログラミングで
同期的に書く方法(async)や、アドオン(C++での作成)、npmパッケージの作成
方法、スケーリング(WebSocketの共有)など、興味深く、ためになる項目
が多かった。ただ、ざっと記述されているだけなので、さらに自分で調べ
てみる必要はありそう。

実際にNode.jsを使う必要のある人は買って損はないと思う。
node.jsを使い始めて、1年近くになりますが、やっと日本語のnode.js技術書が出たということで購入してみました。まだ全て読み切ったわけではありませんが、基本的なところから実践部分まである程度カバーしているように思います。
node.jsを使っているけど、根本的なところがイマイチ理解できていない、そんな人にはおすすめできる1冊かなと思います。
 
   
人気 9位
本書の内容
Node/JavaScriptアプリの設計技法を、実際に手を動かしながら学ぶハンズオン形式の解説書。
本書では最初に、JavaScriptの大きな特徴でありながら多くの開発者にとって馴染みの薄い非同期処理(コールバックを用いた処理)についてその仕組みを詳しく説明するとともに主なデザインパターンを説明し、Node.jsの基礎を押さえます。
次に、ストリームや一般的なデザインパターンのNode.jsでの実装、Node.js専用のデザインパターンといった事柄を解説します。
最後に、ユニバーサルJavaScript、スケーラビリティ、Node.jsを使ったエンタープライズアプリの開発といったより高度なトピックを扱います。
中級以上のウェブ開発者を対象としています。バージョン11対応。  
内容サンプル
 
User Voice
Node.jsのシングルスレッド、ノンブロッキングI/Oによる独自のアーキテクチャを踏まえた実装における細かなコーディング作法からデザインパターンまでを学ぶことができる。
大規模開発のための整備されたコード設計、関数設計、クラス設計、さらには分散スケール環境でのアーキテクチャのデザインパターンまでを紹介してくれている。node.jsはv11.9.0に対応。
gitからソースコードを取得できるが、著書に記載されているソースコードだけでも処理の概要を把握できるよう配慮されているのがありがたい。
基本的に各チャプターごとにプロジェクトファイルが用意されpackage.jsonで必要関連ライブラリをバージョン指定されているので、フォルダ内でnpm install の一発で環境が揃うのはありがたい配慮だ。著書では、ライブラリの個別インストールのコマンドが表記されているが、上記を実行していれば特に必要はない。
※一部でグローバルインストールが別途必要なものあり
※redis, rabbitMQなどミドルウェアは、別途構築する必要あり
コードを追いながら、高度なアーキテクチャの技術を身に付けたい人向け。
Node.jsの中上級者向けに響く著作だと感じた。

-------------------
#注意点

8章 webpackをグローバルインストールする記載がされている> P255
バージョンを指定しないと最新版がインストールされ、著書と挙動が異なって検証ができ
なくなるので、以下のバージョンでインストールすること。(package.jsonにも記されているので確認できる。)
npm install webpack@1.12.14 -g
※package.jsonのwebpackと合わせる
他のnpmでグローバルインストールしているものは、package.jsonのバージョンに合わせたほうがいい

8章:sample12,13,14
P285 に実行コマンドにnode serverと記載されているが、コードに記載されたJSXを変換実行する必要があるので、babel-nodeまたは、babel-cliをかましてスクリプトを実行する必要がある。
例:./node_modules/babel-cli/bin/babel-node.js server

9章以降:
node-gyp系リビルド処理でpython2.7系が必要なケースもあり。
nvmで異なるnodeのバージョンが必要になるケースもあり
macで検証している場合は xcode, xcode toolを最新版にしておくこと

--------------------
#以下、内容メモ

1章:Node.jsの世界へようこそ

モジュールは小さく設計すべき
・コードを少なく
・機能を最小限
npmによってモジュールの依存地獄から解放
->パッケージが個別に依存モジュールを定義できる

ブロッキングI/O:
I/O処理は時間がかかる→サーバがブロッキングI/Oの場合、複数リクエストの場合は新たにスレッドを起こす必要がある。消費するメモリや、コンテキストスイッチのコストを考えると、効率は良くない。

ノンブロッキングI/O:
データの書き込み完了をまたずに一旦終了できる。
同一スレッドで、複数リソースを扱えるようになる。
イベントループでビジーウェイトせずに複数のI/Oを処理
並行性の扱いが単純になる。スレッドの競合、同期を考慮しなくて良い

・リアクタパターン
I/Oタスクのそれぞれにハンドラ(コールバック関数)を対応させるもの
コールバック関数を使用して、すべてのリソース処理を後回しにするようなプログラミン
グスタイル。

Node.jsのアーキテクチャ
libuv:node.jsのCライブラリで、OSに依存せず同じ手法でブロッキングI/Oを使える。
v8:GoogleによりChromeブラウザのために作られら高速効率的メモリ管理のJavaScriptエンジン
バインディング:libuvmやその他の低レベルの機能をラップし、JavaScriptで利用できる
ようにするための抽象化レイヤー
node-core:ハイレベルなNode APIを実装したJavaScriptライブラリ

2章:Node.jsの基本パターン

・コールバックパターン
同期プログラミングにおけるreturn文に相当。非同期プログラミングでは必須。
JavaScriptのクロージャを使うことで、コールバック関数内にその関数で生成された環境
を参照することができる。

関数によって同期、非同期で呼ばれるかの違いによって呼び出し元の実装も変わる。
関数内で分岐判定処理によって同期や非同期で値が返る仕様は思わぬバグを産む。
->どちらかに明示的に仕様を決める。

process.nextTick() イベントループで次まで関数の実行を遅延(先延ばし)してくれる。登録されたI/Oイベントの前に実行->nextTIck()の再帰呼び出しはI/O starvationに陥るケースがあるので注意。
setImmediate():登録されたI/Oイベントの後に実行

try catchでキャッチされない例外の補足方法
 process.on('uncaughtException',(err)=>{ //todo process.exit(1); }):

依存解決の仕組み:ロード元によて異なるモジュールのバージョンをロードする機能
循環参照の注意点:読み込む順番によって初期化されるモジュールが異なる問題が起きる

・モジュール定義におけるパターン
オブジェクト、コンストラクタ、関数のエクスポート
インスタンスのエクスポート

・オブザーバパターン
EventEmitterをつかって複数のオブザーバに対して通知を行う。
on, emit, return emitter P62
複数イベントを扱う、イベントの発生回数が予測できない場合に向いている。

コールバックと、EventEmitterを組み合わせた関数
glon(pattern, [option], callback).on('match', match => console.log(`${match}`))
コールバックは結果データを返すが、EventEmitter(`match`)で中間処理情報を通知する仕組み

3章:コールバックを用いた非同期パターン

コールバックのネストが幾つも重なる=コールバック地獄 p51
視認性が悪く、クロージャを解放し忘れるとメモリリークの原因にもなる
・クロージャを乱用しない
・if文にelseをかかず、returnでなるべく早く抜ける:ネストレベルを下げる
・コールバックを独立した関数で定義し、クロージャを使わない。
・一つの関数にネストしたコールバックを書かず、複数の関数に分割する
※クロージャ:自分を囲むスコープにある変数を参照できる関数:関数の内側の関数

逐次処理におけるコールバックの伝播
並行処理におけるコールバックの伝播

・並行処理:非同期でイベントループ内で並列数分インタリーブされ処理される。
マルチスレッドでないので特別な技術は必要ない。Nodeの強み。
完全に競合状態がないわけではない。複数タスク新しいファイルだった場合ファイル読み込み処理するケースで、複数タスクが同時に新しいファイルだと判定して、同じ処理をしてしまう場合がある。

同時実行数制限をした並行処理
キューを使った同時実行数制御

委譲:delegate

asyncライブラリを使用した逐次、並行処理、同時実行数を制御した並行処理
series:非同期逐次実行
eachSeries:配列要素を捜査して非同期逐次実行
each:並行eachSeriesからの移行に便利
eachLimit,mapLimit,parallelLimit,queue,cargo:同時実行数を制限した並行処理
前半の並行処理実装は、asyncライブラリで簡潔に置き換えられる

4章:ES2015以降の機能を使った非同期パターン

Promise:コールバックの欠点を補うために考案された。非同期処理の結果を表現するオブジェクト。callbackなどの橋渡しスタイルからの変更
Generator:functionの後ろに*を付加して宣言すれば、yieldにより処理を中断できる。
 非同期の制御フローを簡単に記述(yield, next()を活用)し、関数を一旦抜けたり、そこから再開できるようにする
coライブラリを利用したジェネレータベースの制御フロー
 async/awaitを使用した制御フローでGeneratorを使用することで複雑化した実装をシンプルにする。

5章:ストリーム

ストリームとバッファの違い
バッファ:データが全て揃ってからコールバック通知
ストリーム:データを受け取った時点で途中でもコールバック通知可能
巨大なデータも少ないリソースでやりとりできる。
ファイル転送後の解凍処理もチャンク単位で圧縮して転送し解凍することができる。
バイナリモード:チャンクの形でストリーム化する
オブジェクトモード:オブジェクトとしてデータを処理
・Readable:ソースを表現
 non-flowingモード:readableイベントにアタッチ、read()でバッファが空になるまで読み込む
 flowingモード:dataイベントにアタッチ、データがリスナーにプッシュされる
Readableストリームの実装:_read()は継承したReadable内部で呼ばれる
・Writable:データの行き先
writable.write でチャンク書き込み
writable.end で最後のチャンク書き込み
 バックプレッシャ:データが消費されるよりも速く書き込まれてしまう場合の対処
 Writableストリームの実装:_write()は継承したWritable内部で呼ばれる
・Duplex:ReadableかつWritableなストリーム、双方を継承しread(),write()を行う
・Transform:データ変換用 write -> read
・パイプを使ったストリームの接続
 unixでは、次のプログラムの入力として簡単に接続できる
echo Hello World! | sed s/World/Node.js/g
node.js -> pipe()で行う
・パイプ処理パターン
 Combinedストリーム:ストリームの合併
 ストリームのフォーク
 ストリームのマージ
 マルチプレクシングとでマルチプレクシング

6章:オブジェクト指向デザインパターンのNode.jsへの適用

・ファクトリ:
p152 模擬オブジェクトを返す(start:function{}, end:function{})
合成可能ファクトリ:ファイプラリstampit
・公開コンストラクタ
・プロキシ
データ妥当性検討、権限チェック、キャ種保存、遅延初期化など
応用:配列の仮想化
・デコレータ
・アダプタ
・ストラテジー
・ステート
 コンテクストの状態によって変化するストラテジーとして見れる
・テンプレート
具象クラスが定義された瞬時にアルゴリズムが決定される。ストラテジとの違いは、ストラテジは動的に変更が可能、テンプレートはクラスが定義された瞬間にアルゴリズムが決定する。
・ミドルウェア
 玉ねぎの皮のようにミドルウェアの層をつくり、順に層を呼び出し中心のアプリケーションのコアに到達させる。
・コマンド

7章:モジュールの接続

・シングルトンとしてモジュールを利用するパターン
 modele.exportsを活用
 require()関数呼び出し時にキャッシュされ、以降はキャッシュを返すため
->落とし穴がある。パッケージごとに異なるnode_modulesのパッケージを参照してしまう恐れあり:global変数で対応できるが、この方法は避けるべき。

・モジュール接続のためのパターン
require()でステートを持ったインスタンスへの依存をハードコードすることによる制限
 DI(依存性注入)のケース:Factoryパターンを活用して後からモジュールを指定する
 ->利点:dependencyから分離し再利用しやすくなる
  欠点:依存関係の把握が増加複雑化すると管理が大変
 サービスロケータ:DI同様、コンポーネント間の把握が難しくなる
 DIコンテナ:依存するもの以外の余計なサービスにモジュールを依存させなくできる
・プラグインの接続
 require()するだけで、プラグイン機能を付加できる実装:関数を変数に格納する手法とデコレータパターンを駆使して行う
 サービスロケータ、DIコンテナをつかった公開方法

8章:ユニバーサルJavaScript

サーバサイドとフロントエンドでのコード共有
Reactを使用したSPA(Single-Page-Application)の作成
・モジュールの共有
 UMDパターン:定型的なコードを沢山書かなければならない
 ES2015モジュール:サポートされていないブラウザに注意
・Webpackの導入
node用に作成したモジュールをブラウザ用に書き直してくれる
 ES2015で提供される機能を実装していても変換してくれる
・クロスプラットフォーム開発の基礎
 実行時コード分岐
 ビルド時コード分岐:Webpackの例
 ビルド時にモジュール置換:Webpackの例
 クロスプラットフォーム開発向けのデザインパターン
 ・ストラテジー、テンプレート:用途によって切り替え処理ができる
 ・アダプター:互換性を持たすようにアダプターで置換する
 ・プロキシ:サーバ側のモジュールをリモートプロキシで呼び出す
 ・オブザーバ:イベントを発生、受け取りのコンポーネントを抽象化
 ・DIとサービスロケータ:依存性注入時にモジュール入れ替えする
・React
サーバ内とクライアントでほぼ同じコードでのビューのレンダリングができる
 Nodeサーバでビューをレンダリングしてブラウザが受け取り表示可能=SPAを作成できる。
JSX:HTMLとDOMツリー表現の中間フォーマット的な位置付け
expressのstaticを利用してwebpackしたモジュールを読み込めるようにして、1度目はサーバでレンダリングし、以降はブラウザで再描画する仕組み
babel-cliでサーバサイドでJSX記述を残したまま、実行時変換起動させる方法
 Webサーバ(プロキシとして活用)、APIサーバとスケーラブルな構成のパターン

9章;特殊な問題を解決するためのパターン

・非同期に初期化されるもモジュールのrequire
ステートパターンを利用し実行リクエストをキューにため、非同期実行が完了してからキューのリクエストを実行する堅牢な作りの紹介
・非同期のバッチ処理とキャッシュの利用
・CPUバウンドなタスクの実行
setImmediateによるインタリーブ:cpuバウンドの処理のステップが完了するたびにイベントループに制御を戻す
マルチプロセスの利用:子プロセスへ移譲

10章:スケーラビリティとアーキテクチャ

複数プロセス利用、複数サーバ利用にしてスケールする
下記3つの観点でのスケールを考える。
 クローニング:アプリをn回クローニングして各インスタンスに1/nの処理をさせる
 サービスと機能による分割;機能、サービス、ユースケースで分割
 データパーティションによる分割:データの一部を各インスタンスが分担して担当
  水平分割、シャーディング
・クローニングと負荷分散
 モジュールcluster
 ・バージョン0.11.2以降からラウンドロビン方式の振り分け
 ・障害時の再起動(zero-downtime restart)の実装
 ・負荷分散
  ステートフルにしたいデータの共有問題
  ・共有メモリを利用した認証データの保存
  ・スティッキーな負荷分散(値判定で特定ノードへ割り振る)による特定なインスタンスへのマッピング
 ->問題点あり:インスタンスの代替が効かなくなる問題
  リバースプロキシによるスケーリング
 ・ロードバランサとして機能するリバースプロキシ
  ・URLリライト、キャッシング、SSLターミネーション
  ・nginxをロードバランサとしてバックエンドにnodeのwebサーバを稼働させたパターン
  サービスレジストリを活用し、最新の稼働サーバ情報を登録し、ロードバランサがその内容を参照するパターン
  ・nodeでの負荷分散装置の実装
  ピアツーピア負荷分散:ロードバランサの処理量に依存させない方法:その分、接続方法は複雑になる
・サービスと機能の分割
マイクロサービスアーキテクチャのパターン
 各サービスにデータ所有権があることがマイクロサービスアーキテクチャの特徴
 正しいレベルの分離を独立維持するために、データベースも分割する
 データベースを分割した分、システム全体の一貫性を維持するために、互いのデータを参照更新する多くの通信が必要になる。
 クラッシュ、バグ、互換性を破る変更をシステム全体に波及させないようにする。
 利点:
 ・再利用性向上
 ・スケールは、複数マシンに負荷分散。独立してスケール可能
 難点:
 ・管理すべきノードが増えると、統合、デプロイ、コード共有が複雑になる。
 ・APIオーケストレーション層で複数のマイクロサービスのAPIを実行し、データを集約、処理する。
 ・メッセージブローかを使ったケース;フロントエンドのリクエストを受け取ったマイクロサービスが、関連するマイクロサービスにメッセージブローカを通して処理を行う

11章;メッセージ通信と統合

分散アプリケーションを統合する手段
・共有ストレージを中央の調整器兼情報の保持器として使う。
・メッセージを使ってデータ、胃炎と、コマンドを各ノードに行き渡らせる

メッセージ通信
・非同期メッセージと送信キュー:SMSのようなもの
・ピアツーピアメッセージ通信
・ブローカを使ったメッセージ通信:プロトコル間のブリッジにも利用できる、ブローカ
が単一障害になるデメリットはある。

パブリッシュ/サブスクライブ(pub/sub)パターン
 分散オブザーバーパターンでもある
 ・ピアツーピア型Pub/Sub
 ・ブローカ型Pub/Sub
 メッセージブローカにredisを適用したチャットサーバの分散スケール
 ZeroMQを使ったピアツーピア型PubSubで分散処理するチャットサーバ
 サブスクライバに障害が起きても確実にメッセージを送信できるような永続サブスクライバの実現
 ・多くのメッセージキューシステムが採用しているプロトコル:AMQP
 ラビットMQを使用したAMQPによるチャットサーバ

パイプラインとタスク分散パターン
・ZeroMQのファンアウト/ファンインパターン
 ハッシュサムを総当たりでしてアルファベットの考えられるすべての組み合わせを照合
するシステムで実践
 ベンチレータ->ワーカー->シンク
・パイプラインとAMQPの競合コンシューマ
 競合コンシューマ;複数のコンシューマが同じキューをリッスンし、メッセージをファ
ンアウト分散する

リクエスト/リプライ・パターン
・相関識別子を使用した、リクエストとリプライの紐付けで、リクエスト順序に影響しない
実装方法

付録A:ES2015以降のJavaScriptの主要機能
let, const:変数定義
アロー関数:=> コールバック関数を簡潔化記述できる
class構文
オブジェクトリテラルの改善
MapとSet
WeakMapとWeakSet
テンプレートリテラル
etc...

以上。
よきよき
40代のプログラマーです。
ここ何年かはデータ分析のシステムの開発、運用に携わってきました。

ごく小さい、スピード重視のWebの開発、運用において、
GCP Firebase, AWS AmplifyなどmBaaSと呼ばれるサービスを採用した
案件が、まだまだ少ないもののじわじわ増えています。

それぞれのクラウドで提供しているサービス群をまとめて利用できる、
そのクラウドごとに囲い込まれたWebフレームワークというもののようです。

自分は、ここ何年かは、Webよりもバックエンドのビッグデータばかり関わってましたが、
自分が今いるチームのひとたちがFirebaseを使っているのを見て興味がでました。
mBaaSは、認証まわりは楽で、データベースまわりはつらいといった印象です。

Webでなくても、Visual Studio Codeのように、
UIの開発には、HTML + CSS + JavaScriptを使うという流れがあることもあり、
JavaScriptについては、UIの開発では必須というのはわかります。
しかし、サーバの開発はそんなにあるのか?と思っています。

ところが、mBaasでは、JavaScriptというかNode.jsでの開発、運用になるとのことで、
そちらの知識、経験がないので、まわりくどく要素技術の勉強からということで、
本書を手に取りました。

読んでみると、本書は、とにかく深いです。

1, 2章で基本を紹介して、続く残りの章で、それらの話題を
これでもかと深く説明しています。

Node.jsでの非同期については、
章が変わり、話題が変わったところで、何度も触れられています。
非同期だけでも、いくつもパターンがあります。

npmのパッケージ管理を使うと、(というか、どのプログラミング言語でもそうですが、)
依存する大量のライブラリがロードされて、
はじめぎょっとして、繰り返すうちにうんざりしますが、
このモジュールの仕組みついても、けっこう踏み込んだ説明があります。

ストリームについては、
大量のひとつづきのデータが絶え間なく次々というイメージだったので、
そんなのNode.js向きなのか?と思ったのですが、そうでもないらしい。
Webというのは、CPUバウンドではなく、IOバウンドであり、
Node.jsはもちろんIOバウンド向け。
おもえば、たしかに、今の職場の別チームが、
ログを取集する受け口のサーバとしてNode.jsをつかっていました。
なるほど。

ほかにも、なつかしのGoFのデザインパターンを使った例や、
運用面でのスケーラビリティのはなしもあり、
深さにも関わらず、幅広い話題について述べられています。

ただ、まー、オライリーの本らしい、わかりづらさもあります。
書いてある内容は緻密で興味深い。
しかし、自分が経験不足なことを気づかせてくれるものの、
体験させてくれるわけではない。

トラブルも含めて、何百時間か経験を積んで、断片的な知識も蓄えていると、
価値が跳ね上がる本だと思います。

自分は、まだまだ経験が足りませんが、
Node.jsの経験が多めのひとには、
よりおもしろく読める本ではないかと思います。
 
   
人気 10位
本書の内容
 
内容サンプル
 
User Voice
 
   
人気 11位
本書の内容
HTML文法解析から機械学習まで
JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック

まだ、Webデータを手で集めていますか?

サーバーサイドのNode.jsとJavaScriptでクローラーが簡単に作れる!
WebAPI経由でデータをゲット!
得られたデータでレポートやPDF/Excel文書を自動作成!
本書のスクリプトはダウンロード可能!

【本書で紹介している技術】
機械学習、画像認識、形態素解析、マルコフ連鎖、ベイジアンフィルタ、
GoogleCharts、各種SNSのWebAPIアクセス、HTML解析、リンク抽出、画像抽出 他

【本書で使用しているライブラリやモジュール】
PhantomJS/CasperJS/CoffeeScript/Electron/Node.js/Rhino/Nashorn/JScript他
 
内容サンプル
 
User Voice
何を言っているのかわからないと思いますが、本書は前半と後半で雰囲気がかなり異なります。
以下、まとめます。

<1章~4章>
基本的なクローリング方法やスクレイピング方法がメインとなっています。
最近クローラーでよく問題になるSPAやAjax方式のページ取得や、取得待ち時間の設定(取得先サーバ負荷低減)、ログインページの処理、文字コードの問題、各種ファイル形式のスクレイピング、データベースへの登録など必要なところがちゃんと抑えられています。
ここまでで本書の半分です。

<5章~8章>
5章から急激に雰囲気が変わります。
6章だけはメジャーサイト(Twitter,Amazon,Wikipediaなど)のAPIの利用方法や分析例が記載されているので、スクレイピングの1つと呼べますが、
他は形態素解析、データマイニング、ベイジアンフィルタ、人工無能、機械学習、手書き文字の認識、解析結果のグラフ描画など、取得したデータの解析に重点を置いた内容となっていました。
むしろデータ解析技術の本ではないかと思うほど。

考えてみればデータ解析には大量のデータが必要なわけで、クローラー・スクレイパーはそのための手段でしかないわけです。
実際のところ、本書は「Node.jsによる データサイエンティストになるためのデータ収集と解析」といったタイトルが似合います。

クローラーとしての基本も抑えられますし、その発展としてのデータ分析技術の基本も抑えられるので非常に面白い書籍でした。

※ レベル感としてはプログラミングの知識があるNode.js初心者・中級者以上向けだと思います。
 インストール方法や開発環境の解説もありますし、サンプルプログラムは豊富なので
 その解説を読めば初心者でもNode.jsを勉強できると思いますが、
 習うより慣れろ方式を採用しているようなので、ある程度自分で調べられる人が対象のようです。

※ またWebサーバとしての利用は想定されていないので、Expressなどの解説が欲しい方は別書を勧めます。
JS+Node.jsにのクローラーについて書かれた本です。
多彩な実用例も載っており、これらを参考に
何かを面白いものを作れないか、ワクワクしています。

プログラムサンプルにもプログラム内のコメントだけで終わらせるのではなく、
文面を割いて、ちゃんと詳細な解説が書かれており、
他の文献を調べながら読む必要がほとんどありません。
論理の飛躍もなく、最初から読み進めてもすんなり頭に入ってくるような
分かりやすさがあります。

環境についてもWindowsだけではなくLinuxやMacOSについても
考慮されており、定期的に自動取得する方法など、ニーズに合わせて
いろいろな手法が書かれています。

個人的には、FirefoxやChromeなどのブラウザを
JSのライブラリとプログラムを用いて自動化する方法は、とても新鮮でした。
とてもわかりやすかったです。
サンプルが充実しているので きわめて実用的でした。

サーバーサイドのJavascriptでここまでできるのか!と驚きもありました。

大規模システム構築には向いてないのかもしれませんが、Webクローラーの仕組み
を理解するにはとても役立ちました。
 
   
人気 12位
本書の内容

※この商品は固定レイアウト型の電子書籍です。

※この商品はタブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。

※お使いの端末で無料サンプルをお試しいただいた上でのご購入をお願いいたします。



サーバーサイドJavaScriptの実行環境、Node.jsを基本から習得し、Webアプリケーションを制作しよう!

Webクリエイターのための、Node.jsによるサーバーサイドJavaScript入門です。 JavaScriptは今、もっとも注目されているプログラミング言語ですが、サーバー開発の世界でもJavaScriptが急速に広まりつつあります。それが「Node.js」です。本書は、「JavaScriptの基本はだいたいわかっている」という人でも読めるように、基本的なインストールや設定などから順を追って説明しています。また、サーバーサイドの技術的な説明よりも「Webアプリケーションを作りたい」と思うクリエイターに役に立つ知識を中心にまとめました。本書をひと通りマスターすれば、一般的なWebアプリケーションであればたいていのものが作れるようになっているでしょう。ぜひ、本書でサーバーサイドJavaScriptの世界に足を踏み入れてください。

■CONTENTS
【Chapter1】Node.js 開発の準備を整える/【Chapter2】アプリケーションの基本を覚える/【Chapter3】クッキーとテンプレート/【Chapter4】Webアプリケーションライブラリ「Express」/【Chapter5】PostgreSQLの利用/【Chapter6】MongoDBの利用/【Chapter7】Sails.jsによるMVCアプリケーション/【Chapter8】Sails.jsのデータベース開発  
内容サンプル
 
User Voice
初心者がつまずきそうな細かい部分を省略しないでわかりやすく丁寧に説明しています。
node.jsでwebサイトを作成する方法が一通り理解できました。
あとはwebの情報を拾っていけばとりあえずなんとかなりそうです。
たしかに誤字などがありましたが、javascriptの文法がわかっていれば対応できます。
Node.jsの基本を理解したい人、その先のExpressやDBの使い方の概要をつかみたい人、さらにMVCフレームワークのSails.jsの概要を知りたい人に有用な本だと思います。誤植が少しありますが、順を追って丁寧に説明してあります。
他の言語の経験があり、Node.jsを新たに学ぶ方には良いかと思います。概要を理解できますし、Expressとは何ぞや、という所も学べます。
他のレビューにもありますが、誤植があります。ただ、コーディングはネットで調べながら悪戦苦闘しながら学習していくものだと思うので、それほどマイナスポイントではないかなと思います。
 
   
人気 13位
本書の内容
シングルページWebアプリケーション(SPA)は、最近注目を集めているWebアプリケーションのアーキテクチャです。
SPAは、ユーザがアプリケーションを使っている間、Webページ全体をロードすることがなく、レスポンスが高速でUI/UXに優れているという利点を持っています。
かつてはJavaアプレットやFlashといったWebブラウザのプラグインに依存する必要がありましたが、近年ではJavaScriptを使ったSPAが現実的になってきています。
JavaScriptベースのため、既存のWeb開発スキルの活用が容易であり、新しいデバイスへの対応も比較的簡単です。
本書では、クライアントでJavaScriptを使ったSPAを採用するだけでなく、WebサーバにNode.js、データベースにMongoDBを使うことで、
フロントエンドからバックエンドまでエンドツーエンドのJavaScript SPAの仕組みと開発方法について詳しく解説します。  
内容サンプル
 
User Voice
対象は題のとおりですが、前提知識として、完全にではありませんが、以下のようなレベルのことが大方理解できていないと読めないと思います。
・オブジェクト指向について
・HTML/CSSについて
・ネットワークの基礎知識
・サーバーの基礎知識
・jsのプロトタイブへの知識

本書の対象レベルの方にとっては特にjsを理解することは完全には難しいと思います(文中でも「完全に理解できないかもしれない」というようなことが書かれています)が、例えばオライリーのサイ本(http://www.amazon.co.jp/dp/4873115736/)などに多少なりとも目を通している程度の知識はあったほうが読み進めやすいかと思います。

翻訳は、難しい概念については英語からそのままカタカナ語で訳されていたりして少し読みにくいです。
カタカナ語に対して、文中での明確な定義はもちろん、訳注などもついていないため、知識レベルが低い人(というよりカタカナ語に慣れていない人)は、別に難しいことを言っているわけではないのに、訳のせいで本筋でないところで考えてしまう事が多いと思います。

内容や構成そのものは分かりやすく、コードも誤解のないように省略せずに書かれているので読み進めやすいです。
また一貫して一つのアプリケーションを作りこんでいくので、実際的なコーディング手法を丁寧に教えてくれる、とても良い本です。

前述のとおり、コードがほとんど省略されていないので、本自体は内容の割に分厚くなっています。
少し厚めな見た目に反して、気軽に、しかし本格的に学べる一冊ではないでしょうか。
間違いなく、Web開発初学者にとっては敷居は高く感じるかもですが、
ひとつひとつのJs特有の概念や、開発手法、構成の仕方、コーディング手法など、
学ぶべきことは多く載っており、6章までは本物のSPAを学べる本当に素晴らしい本です。
中~上級者向けの本だと思います。Js未経験ではちときついです。
初学者は、これを読む前に、オライリーの開眼!Jsを読むべきです。
サイ本も同時に眺めつつ、ある程度理解して書けるようになったころ読むと
きっとあなたをJs使いとして次のステップに誘導してくれます。
コードを1から書くのが面倒な方も、本に記載されているサイトに
コメントほぼなしのソースがあるので、コメントを書きながら納得しつつ学習を進められます。
この本に感銘をうけて、僕はSPAのサイトを作り始めました。
みなさんもこの素晴らしい構成・内容の本を手に取り、SPA開発に着手してはいかがでしょうか。
今、注目のSPAについて、実践的なやり方(フレームワーク)を、詳細に説明してくれてます。
シンプルなページから始まり、徐々に機能追加していく構成となっています。追加・修正されたコードの説明がわかりやすく、大変勉強になりました。
米国amazonでの原書の評価が高いのもうなづけます。
著者のサイトから各章のコードがダウンロードできるので、写経せずに自分の環境で動作確認できたのも、とても助かりました。
翻訳も、理解の妨げになることはなく、特に不満はありません(良い和訳、とは言えないと思いますが)。
 
   
人気 14位
本書の内容
 
内容サンプル
 
User Voice
ほとんどのページをリファレンスのために使っているが、内容はほぼ公式リファレンスそのまま。
公式のリファレンスは日本語訳もされていて、無料で読めるので3000円以上も払ってこの本を買う価値は全く無い。
むしろ公式のリファレンスの方が一覧性もあって読みやすく、目的のモジュールのリファレンスに簡単にたどりつけるだろう。
 
   
人気 15位
本書の内容
Node.jsでWebアプリケーションを開発しよう!!

サーバーサイドJavaScriptの実行環境である「Node.js」の入門書。
環境構築からデータベースへのアクセス、Expressフレームワークの使い方、
デプロイおよびホスティング環境まで、Node.jsのすべてが分かる一冊です。

本書では、Node.jsの入手やインストールといった開発環境の構築、
nodeコマンドの基本操作、アプリケーションの作成手順、ファイルやデータベースへの入出力、
プログラムのデバッグやテスト、Webアプリケーションフレームワークの利用など、
特にWebアプリケーションの作成に必要となる知識やテクニックについて解説。
Node.js解説書の決定版と言える一冊です。

■第1章 Node.jsの特徴を理解する
■第2章 Node.jsの環境を構築する
■第3章 nodeコマンドとNode.jsのイベントシステム
■第4章 npmでモジュールを管理する
■第5章 シンプルなWebアプリケーションを作る
■第6章 バイナリデータの操作とファイルの入出力
■第7章 Node.jsアプリケーションのデバッグ方法
■第8章 Node.jsからデータベースにアクセスする
■第9章 Expressフレームワークを使う
■第10章 Node.jsでSocket.IOを利用する
■第11章 Node.jsアプリケーションのデプロイとホスティング環境
■第12章 スマートフォン対応のWebアプリケーションを作る
■第13章 対話的なコンソールアプリケーションを作る
■第14章 複数のプロセスを利用するアプリケーションを作る
■第15章 テストフレームワークを使う
 
内容サンプル
 
User Voice
バージョンアップが頻繁に行われるNode.js環境において、現時点ではかなり最新の情報で記載されている。
特にExpressフレームワークは、ネットでは2.x系の情報が多い中、3.x系での解説になっている点は評価したい。
さらに、データベース接続やスマートフォン対応(jQuery Mobile 連携)、Socket.IO、本番環境におけるホスティングなど、実際にNode.jsでサービスを公開するためのノウハウが1冊にまとまっている。
欲を言えば、ExpressではサポートされないModelに関する部分を、筆者のやり方でもう少し深く解説してもらうと良かった。
いずれにしろ、ほぼ全章が有益な書籍。
Node.jsの入門本としては最適でしたが…
初判から少し時間がたってしまったので、現状(2016年現在)にそぐうかはわかりません。
このレビューを書いている現在、Node.jsは0.12.5です。既に古くなった内容が何箇所かあります。でもまぁ、技術書なんて、どれもそんなもんでしょう。特にNode.jsは絶賛成長途中の言語なので、部分的な陳腐化を気にしていたら本なんて読めません。

この本がすばらしいのは、Node.jsという、非同期I/Oを持ったローカルJavascript実行環境だからこそできることを明確に書いているところです。

たとえば、ローカルファイルの操作方法、シェルコマンドの実行方法などなどです。
また、Node.jsの持つ非同期プログラミングの概念と導入についてきちんと説明していることも良い点だと思います。残念ながらStreamについては記述が弱いのですが、それが気になるくらいにスキルが上昇したら、自分でWebを見て調べることもできるようになっているでしょう。
加えて残念なのが、Node.jsの重要な要素であるexpress(Webアプリ開発ミドルウェア)について、当該書籍はver3を扱っており、現在はver4になってしまっています。この本に記載されているexpressの記述は概念を理解する程度にとどめ、実際の操作などは当該書籍で得た知識を元にしてWebを参照するのが良いと思います。
 
   
人気 16位
本書の内容
 
内容サンプル
 
User Voice
 
   
人気 17位
本書の内容
 
内容サンプル
 
User Voice
 
   

Node.js 新書一覧

本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
発売日 2020/11/17
(4.7)
Amazon 4,070円
本書の内容
Node.jsの入門書。対象読者は、フロントエンド開発の知識はあってもサーバサイド開発は知らないエンジニアや、他言語の経験はあってもNode.jsは触ったことがないプログラマー。
本書ではターミナルのプロンプトにコマンドを入力してその反応を確認したり、簡単なスクリプトをNode.js環境で実行したりしながら、Node.jsプログラミングの基本からWebアプリケーションの開発、テスト、デプロイまでをハンズオン形式で学びます。また、コードの背景にある設計思想や、プログラムの挙動の仕組みについてもしっかり掘り下げます。
本書のゴールは、読者がNode.jsの全体像を掴み、業務レベルでのアプリケーション開発に対応可能な知識を身につけることです。  
内容サンプル
 
User Voice
 
   
発売日 2020/11/04
(5)
Kindle 99円
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
Node.jsの入門者向け書籍です。2018/8に出た「Node.js超入門 第2版」の改訂版です。改訂内容は新バージョン14対応、データベースはSQLite3、ORMはSequelizeに変更しています。CSS関連はBootstrap利用、Expressは最初からGeneratorを使う形で解説しています。
対象読者はJavaScriptの入門書を読み終えた層ですが、その経験がない層も読めるよう配慮し巻末にこの本を読むのに必要なJavaScriptの知識を最低限解説しています。Node.js未経験者から、既存の入門書などで挫折した人までより多くの人がついていけるよう、手取り足取り教える内容です。  
内容サンプル
 
User Voice
仕事で必要になりそうだと言う事で購入しました。
内容もわかりやすく買って良かったと思いました!
残念な事に担当が変更となり勉強を継続する必要がなくなってしまいました。
超入門と書かれているので入門書のように見えますが入門書ではありません。
いわゆる入門書部分は一番最後にJavascript超入門として20ページほどありますが、このページ数では全然足りません。

アプリケーションVSC(Visual Studio Code)を利用してサーバー側のプログラムを書いてそれをブラウザで表示、操作してアプリの仕組みを覚えるための書籍です。
サーバーとクライアントのデータのやりとりの説明は図も付いていて非常にわかりやすく出来ています。

各サンプル毎にソースコードも記載されていますがソースコードに関する説明はありません。
あくまでアプリの動作を説明しているだけになります。
視点は変わっていますが必要な人も多いでしょう。

【書籍を読む前に必要な知識】
Javascriptを理解していること
HTMLを理解していること
データベースを理解していること

【この書籍を読むことで得られる知識】
サーバークライアントデータのやりとりの仕組み
フレームワークExpressの使い方を少々
データベースの使い方
データベースを使ったアプリの作成

と必要な知識と得られる知識の間が狭すぎるニッチな所を攻めてる書籍と言えるでしょう。
ソースコードのミスが多く気になった

- スペース忘れ
- 文末に謎のアルファベットd
- htmlタグ閉じ忘れ
など

内容は駆け足で初心者には難しいのではと感じた
実践の部分では他FWとの違いや、nodeを使うメリットなどもう少し教えて欲しかった
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
※この商品は固定レイアウト型の電子書籍です。
※この商品はタブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
※お使いの端末で無料サンプルをお試しいただいた上でのご購入をお願いいたします。

※本書内容はカラーで制作されているため、カラー表示可能な端末での閲覧を推奨いたします。


これ1冊で「Webページ制作からサーバーの開発」までわかる!

日本初のMac専門月刊誌「Mac+」の頃から主にMac系雑誌に寄稿する。ハイパーカードの登場により「ビギナーのためのプログラミング」に開眼。以降、Mac、Windows、Web、Android、iPhoneとあらゆるプラットフォームのプログラミングビギナーに向けた書籍を執筆し続ける。●目次
Chapter 1 Webプログラミングを始めよう
Chapter 2 HTML/CSSを学ぼう
Chapter 3 JavaScriptを学ぼう
Chapter 4 Node.jsを学ぼう
Chapter 5 Expressフレームワークを学ぼう
Chapter 6 データベースを使おう
Chapter 7 本格Webアプリを作ろう



●著者
掌田 津耶乃(しょうだ・つやの)
日本初のMac専門月刊誌「Mac+」の頃から主にMac系雑誌に寄稿する。ハイパーカードの登場により「ビギナーのためのプログラミング」に開眼。以降、Mac、Windows、Web、Android、iPhoneとあらゆるプラットフォームのプログラミングビギナーに向けた書籍を執筆し続ける。  
内容サンプル
 
User Voice
わかりにくいが、何となくこう書けば動くという雰囲気がわかる
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容

JavaScript(ES2015以降)をフル活用して
柔軟性に富んだWebアプリを作成しよう!
フロントエンドもバックエンドも
JavaScriptのスキルを120%活用する

本書は
「Get Programming with Node.js」
Jonathan Wexler, Manning Publications Co, 2019
の翻訳書です。

アプリケーションを構築できるプラットフォームは数多く存在します。Node.jsは、そのひとつですが、Webアプリケーション(インターネットを介してリクエストを処理し、応答として処理したデータとビューを返すアプリケーション)の構築に適している点が最大の特徴です。

本書は、純粋にJavaScript(ECMAScript 2015以降)だけを使ってアプリケーションを構築する手法と、その手立てを提供します。そのため、JavaScriptの機能と使い所の極意を否が応でも学ぶことになります。

また同時に、本書はWeb開発への導入編となるでしょう。Webアプリケーションを構築したことがないとか、内部的な仕組みを完全に理解していなかったという人は、本書で、その全貌を学ぶことができます。

本書の目標は、サンプルやコードを通じて、これらのコンセプトを説明することであり、サンプルを使い・変更して、読者が自分のアプリケーションを作れるようにすることにあります。

【本書のポイント】
・9つのユニットと38の短い章構成
・節ごとの理解度チェック
・章ごとの練習問題
・豊富な補足事項とポイント解説

【読者が得られること】
・Node.jsを使ったWebアプリケーション構築の基礎知識
・Node.jsによる実用的なプログラミング能力
・ECMAScript 2015以降の新しい機能を使ったプログラミング手法

※本電子書籍は同名出版物を底本として作成しました。記載内容は印刷出版当時のものです。
※印刷出版再現のため電子書籍としては不要な情報を含んでいる場合があります。
※印刷出版とは異なる表記・表現の場合があります。予めご了承ください。
※プレビューにてお手持ちの電子端末での表示状態をご確認の上、商品をお買い求めください。

 
内容サンプル
 
User Voice
HTML/CSS/JavaScript(フレームワーク含む)で何回かアプリや機能を実装したことのある人が、nodeが裏でやってくれていることについて理解し直すために読むのには良い書籍だと思います。

自分自身、これまでnodeに関しては良くわからないままnode_moduleを導入したり、スクレイピングのnodeライブラリを導入したりしていました。完全なる雰囲気でやっており、そのおかげでExpress.jsを使ったHerokuでのAPIの立て方がわからず本書にたどり着いた次第です。

この書籍を通じて、何が起こっているのかを少しずつソースコードを発展させながらキャッチアップできたので曖昧だったところがずいぶん減ったと思います。今まで断片的だった知識が線に繋がる感覚です。
(curlコマンドについて一緒に学べたのも良かった)

気になる点としては"Node.jsの入門書"であって"プログラミング初学者の入門書"ではない点です。

初心者であればことあるごとに丸々コードを貼っておいて欲しいのですが文章のみで「○○.jsを作成します」のように手順が書かれており、初心者だとわからない人が絶対にいるよな。と思える類の端折った解説が多かったです。私も途中途中、Gitのソースコードと照らし合わせながら進める必要がありました。

また、文章に違和感を覚える人もいて当然だと思います。私の場合は海外の記事を翻訳しながらキャッチアップした経験があるため言わんとすることがすぐにわかりますが、初心者もしくは英語で情報収集の経験がない方であれば難しいと感じる気持ちはわかります。日本人からするとどうしても独特な文章ですので。

さらに、パッケージのバージョン違いでうまく動かなかったりした際に、パッケージが原因なのか自分のコードが原因なのかを自分で考えたりしながらエラーを捌く必要もあります(例えば、lesson_10の内容は私のejsの3vでは動きませんでした。Gitのソースのバージョンに合わせることで動いた。基本的にGitのソースコードに合わせてやれよという話ではありますが...)
package.jsonに対して少しは慣れがある人でないとつまづくポイントかなと思います。

上記の理由から初心者向きではないし、初心者であればまずは動画の教材などでとにかく手を動かしてまずは雰囲気で動かし方を覚えた方が効率が良いかと思います(サーバーサイドの知識などがあればまた別ですが)。

とは言え、nodeに関する良さげな書籍が見つからなくて困っていたところ本書でキャッチアップできて良かったです。サーバーとのやりとりをnodeで体系立て理解できる書籍はそんなにないと思います(まだ本書の途中までしか終わってませんが)
Nodejs 本として一番良かった。
大抵の枝葉技術はどうせ海外のGitHubなどの公式リファレンスを読むことになるので、Web サーバーの組み立て方を順序よく最初のコードを繰り返し型で改良しながら学べるので、独学志向で最初しゃ簡単に、慣れたら高度に組み込みたい人にはヒントになる情報が多い。

批判レビューワーは恐らく冒頭に紹介されている著者のGitHubもみていないとおもわれる。

この手の技術書のサンプルコードはあまりに初歩的だったり極端に複雑なお手本をネット掲載するものも少なくないが、本書は同じコードをだんだん改良していく方式でそのレッスンごとのソースを収録している。
そのため理解度が深まるにつれて同じコードの改良結果を本の解説つきでソースを見れるので効率よく学べる。

ただし、nodejs でファイルの読み書き、javascript の最低限の構文知識、GitHubで自力で何度か英文リファレンスを読んで動かす経験がないと、本書の書いている意味そのものが理解できない。
英文リファレンスといっても最近はGoogle翻訳と英文を一緒に読めば辞書使わずにたいていは意味が理解できるし、本書を理解するレベルに至るハードルはかなり低い。

本書は本のタイトルが不適切で入門Express でサーバー構築である。
Node.js自体を学ぶにはかなり基本的な説明がないので言語自体の入門書ではない。
そもそもNode.jsとは何なのか、どういった働きをするのかがよく理解できました。

翻訳がひどいというレビューが散見されますが、そんなことはありません。
プログラミングやWebアプリケーションの仕組みがわかっている方であれば問題ないと思います。

最終的に作成するサンプルアプリケーションは、基本的なMVC・API作成・JWTを利用したAuthentication・WebSocketを利用したチャット機能などがあります。
 
   
本書の内容
Node/JavaScriptアプリの設計技法を、実際に手を動かしながら学ぶハンズオン形式の解説書。
本書では最初に、JavaScriptの大きな特徴でありながら多くの開発者にとって馴染みの薄い非同期処理(コールバックを用いた処理)についてその仕組みを詳しく説明するとともに主なデザインパターンを説明し、Node.jsの基礎を押さえます。
次に、ストリームや一般的なデザインパターンのNode.jsでの実装、Node.js専用のデザインパターンといった事柄を解説します。
最後に、ユニバーサルJavaScript、スケーラビリティ、Node.jsを使ったエンタープライズアプリの開発といったより高度なトピックを扱います。
中級以上のウェブ開発者を対象としています。バージョン11対応。  
内容サンプル
 
User Voice
Node.jsのシングルスレッド、ノンブロッキングI/Oによる独自のアーキテクチャを踏まえた実装における細かなコーディング作法からデザインパターンまでを学ぶことができる。
大規模開発のための整備されたコード設計、関数設計、クラス設計、さらには分散スケール環境でのアーキテクチャのデザインパターンまでを紹介してくれている。node.jsはv11.9.0に対応。
gitからソースコードを取得できるが、著書に記載されているソースコードだけでも処理の概要を把握できるよう配慮されているのがありがたい。
基本的に各チャプターごとにプロジェクトファイルが用意されpackage.jsonで必要関連ライブラリをバージョン指定されているので、フォルダ内でnpm install の一発で環境が揃うのはありがたい配慮だ。著書では、ライブラリの個別インストールのコマンドが表記されているが、上記を実行していれば特に必要はない。
※一部でグローバルインストールが別途必要なものあり
※redis, rabbitMQなどミドルウェアは、別途構築する必要あり
コードを追いながら、高度なアーキテクチャの技術を身に付けたい人向け。
Node.jsの中上級者向けに響く著作だと感じた。

-------------------
#注意点

8章 webpackをグローバルインストールする記載がされている> P255
バージョンを指定しないと最新版がインストールされ、著書と挙動が異なって検証ができ
なくなるので、以下のバージョンでインストールすること。(package.jsonにも記されているので確認できる。)
npm install webpack@1.12.14 -g
※package.jsonのwebpackと合わせる
他のnpmでグローバルインストールしているものは、package.jsonのバージョンに合わせたほうがいい

8章:sample12,13,14
P285 に実行コマンドにnode serverと記載されているが、コードに記載されたJSXを変換実行する必要があるので、babel-nodeまたは、babel-cliをかましてスクリプトを実行する必要がある。
例:./node_modules/babel-cli/bin/babel-node.js server

9章以降:
node-gyp系リビルド処理でpython2.7系が必要なケースもあり。
nvmで異なるnodeのバージョンが必要になるケースもあり
macで検証している場合は xcode, xcode toolを最新版にしておくこと

--------------------
#以下、内容メモ

1章:Node.jsの世界へようこそ

モジュールは小さく設計すべき
・コードを少なく
・機能を最小限
npmによってモジュールの依存地獄から解放
->パッケージが個別に依存モジュールを定義できる

ブロッキングI/O:
I/O処理は時間がかかる→サーバがブロッキングI/Oの場合、複数リクエストの場合は新たにスレッドを起こす必要がある。消費するメモリや、コンテキストスイッチのコストを考えると、効率は良くない。

ノンブロッキングI/O:
データの書き込み完了をまたずに一旦終了できる。
同一スレッドで、複数リソースを扱えるようになる。
イベントループでビジーウェイトせずに複数のI/Oを処理
並行性の扱いが単純になる。スレッドの競合、同期を考慮しなくて良い

・リアクタパターン
I/Oタスクのそれぞれにハンドラ(コールバック関数)を対応させるもの
コールバック関数を使用して、すべてのリソース処理を後回しにするようなプログラミン
グスタイル。

Node.jsのアーキテクチャ
libuv:node.jsのCライブラリで、OSに依存せず同じ手法でブロッキングI/Oを使える。
v8:GoogleによりChromeブラウザのために作られら高速効率的メモリ管理のJavaScriptエンジン
バインディング:libuvmやその他の低レベルの機能をラップし、JavaScriptで利用できる
ようにするための抽象化レイヤー
node-core:ハイレベルなNode APIを実装したJavaScriptライブラリ

2章:Node.jsの基本パターン

・コールバックパターン
同期プログラミングにおけるreturn文に相当。非同期プログラミングでは必須。
JavaScriptのクロージャを使うことで、コールバック関数内にその関数で生成された環境
を参照することができる。

関数によって同期、非同期で呼ばれるかの違いによって呼び出し元の実装も変わる。
関数内で分岐判定処理によって同期や非同期で値が返る仕様は思わぬバグを産む。
->どちらかに明示的に仕様を決める。

process.nextTick() イベントループで次まで関数の実行を遅延(先延ばし)してくれる。登録されたI/Oイベントの前に実行->nextTIck()の再帰呼び出しはI/O starvationに陥るケースがあるので注意。
setImmediate():登録されたI/Oイベントの後に実行

try catchでキャッチされない例外の補足方法
 process.on('uncaughtException',(err)=>{ //todo process.exit(1); }):

依存解決の仕組み:ロード元によて異なるモジュールのバージョンをロードする機能
循環参照の注意点:読み込む順番によって初期化されるモジュールが異なる問題が起きる

・モジュール定義におけるパターン
オブジェクト、コンストラクタ、関数のエクスポート
インスタンスのエクスポート

・オブザーバパターン
EventEmitterをつかって複数のオブザーバに対して通知を行う。
on, emit, return emitter P62
複数イベントを扱う、イベントの発生回数が予測できない場合に向いている。

コールバックと、EventEmitterを組み合わせた関数
glon(pattern, [option], callback).on('match', match => console.log(`${match}`))
コールバックは結果データを返すが、EventEmitter(`match`)で中間処理情報を通知する仕組み

3章:コールバックを用いた非同期パターン

コールバックのネストが幾つも重なる=コールバック地獄 p51
視認性が悪く、クロージャを解放し忘れるとメモリリークの原因にもなる
・クロージャを乱用しない
・if文にelseをかかず、returnでなるべく早く抜ける:ネストレベルを下げる
・コールバックを独立した関数で定義し、クロージャを使わない。
・一つの関数にネストしたコールバックを書かず、複数の関数に分割する
※クロージャ:自分を囲むスコープにある変数を参照できる関数:関数の内側の関数

逐次処理におけるコールバックの伝播
並行処理におけるコールバックの伝播

・並行処理:非同期でイベントループ内で並列数分インタリーブされ処理される。
マルチスレッドでないので特別な技術は必要ない。Nodeの強み。
完全に競合状態がないわけではない。複数タスク新しいファイルだった場合ファイル読み込み処理するケースで、複数タスクが同時に新しいファイルだと判定して、同じ処理をしてしまう場合がある。

同時実行数制限をした並行処理
キューを使った同時実行数制御

委譲:delegate

asyncライブラリを使用した逐次、並行処理、同時実行数を制御した並行処理
series:非同期逐次実行
eachSeries:配列要素を捜査して非同期逐次実行
each:並行eachSeriesからの移行に便利
eachLimit,mapLimit,parallelLimit,queue,cargo:同時実行数を制限した並行処理
前半の並行処理実装は、asyncライブラリで簡潔に置き換えられる

4章:ES2015以降の機能を使った非同期パターン

Promise:コールバックの欠点を補うために考案された。非同期処理の結果を表現するオブジェクト。callbackなどの橋渡しスタイルからの変更
Generator:functionの後ろに*を付加して宣言すれば、yieldにより処理を中断できる。
 非同期の制御フローを簡単に記述(yield, next()を活用)し、関数を一旦抜けたり、そこから再開できるようにする
coライブラリを利用したジェネレータベースの制御フロー
 async/awaitを使用した制御フローでGeneratorを使用することで複雑化した実装をシンプルにする。

5章:ストリーム

ストリームとバッファの違い
バッファ:データが全て揃ってからコールバック通知
ストリーム:データを受け取った時点で途中でもコールバック通知可能
巨大なデータも少ないリソースでやりとりできる。
ファイル転送後の解凍処理もチャンク単位で圧縮して転送し解凍することができる。
バイナリモード:チャンクの形でストリーム化する
オブジェクトモード:オブジェクトとしてデータを処理
・Readable:ソースを表現
 non-flowingモード:readableイベントにアタッチ、read()でバッファが空になるまで読み込む
 flowingモード:dataイベントにアタッチ、データがリスナーにプッシュされる
Readableストリームの実装:_read()は継承したReadable内部で呼ばれる
・Writable:データの行き先
writable.write でチャンク書き込み
writable.end で最後のチャンク書き込み
 バックプレッシャ:データが消費されるよりも速く書き込まれてしまう場合の対処
 Writableストリームの実装:_write()は継承したWritable内部で呼ばれる
・Duplex:ReadableかつWritableなストリーム、双方を継承しread(),write()を行う
・Transform:データ変換用 write -> read
・パイプを使ったストリームの接続
 unixでは、次のプログラムの入力として簡単に接続できる
echo Hello World! | sed s/World/Node.js/g
node.js -> pipe()で行う
・パイプ処理パターン
 Combinedストリーム:ストリームの合併
 ストリームのフォーク
 ストリームのマージ
 マルチプレクシングとでマルチプレクシング

6章:オブジェクト指向デザインパターンのNode.jsへの適用

・ファクトリ:
p152 模擬オブジェクトを返す(start:function{}, end:function{})
合成可能ファクトリ:ファイプラリstampit
・公開コンストラクタ
・プロキシ
データ妥当性検討、権限チェック、キャ種保存、遅延初期化など
応用:配列の仮想化
・デコレータ
・アダプタ
・ストラテジー
・ステート
 コンテクストの状態によって変化するストラテジーとして見れる
・テンプレート
具象クラスが定義された瞬時にアルゴリズムが決定される。ストラテジとの違いは、ストラテジは動的に変更が可能、テンプレートはクラスが定義された瞬間にアルゴリズムが決定する。
・ミドルウェア
 玉ねぎの皮のようにミドルウェアの層をつくり、順に層を呼び出し中心のアプリケーションのコアに到達させる。
・コマンド

7章:モジュールの接続

・シングルトンとしてモジュールを利用するパターン
 modele.exportsを活用
 require()関数呼び出し時にキャッシュされ、以降はキャッシュを返すため
->落とし穴がある。パッケージごとに異なるnode_modulesのパッケージを参照してしまう恐れあり:global変数で対応できるが、この方法は避けるべき。

・モジュール接続のためのパターン
require()でステートを持ったインスタンスへの依存をハードコードすることによる制限
 DI(依存性注入)のケース:Factoryパターンを活用して後からモジュールを指定する
 ->利点:dependencyから分離し再利用しやすくなる
  欠点:依存関係の把握が増加複雑化すると管理が大変
 サービスロケータ:DI同様、コンポーネント間の把握が難しくなる
 DIコンテナ:依存するもの以外の余計なサービスにモジュールを依存させなくできる
・プラグインの接続
 require()するだけで、プラグイン機能を付加できる実装:関数を変数に格納する手法とデコレータパターンを駆使して行う
 サービスロケータ、DIコンテナをつかった公開方法

8章:ユニバーサルJavaScript

サーバサイドとフロントエンドでのコード共有
Reactを使用したSPA(Single-Page-Application)の作成
・モジュールの共有
 UMDパターン:定型的なコードを沢山書かなければならない
 ES2015モジュール:サポートされていないブラウザに注意
・Webpackの導入
node用に作成したモジュールをブラウザ用に書き直してくれる
 ES2015で提供される機能を実装していても変換してくれる
・クロスプラットフォーム開発の基礎
 実行時コード分岐
 ビルド時コード分岐:Webpackの例
 ビルド時にモジュール置換:Webpackの例
 クロスプラットフォーム開発向けのデザインパターン
 ・ストラテジー、テンプレート:用途によって切り替え処理ができる
 ・アダプター:互換性を持たすようにアダプターで置換する
 ・プロキシ:サーバ側のモジュールをリモートプロキシで呼び出す
 ・オブザーバ:イベントを発生、受け取りのコンポーネントを抽象化
 ・DIとサービスロケータ:依存性注入時にモジュール入れ替えする
・React
サーバ内とクライアントでほぼ同じコードでのビューのレンダリングができる
 Nodeサーバでビューをレンダリングしてブラウザが受け取り表示可能=SPAを作成できる。
JSX:HTMLとDOMツリー表現の中間フォーマット的な位置付け
expressのstaticを利用してwebpackしたモジュールを読み込めるようにして、1度目はサーバでレンダリングし、以降はブラウザで再描画する仕組み
babel-cliでサーバサイドでJSX記述を残したまま、実行時変換起動させる方法
 Webサーバ(プロキシとして活用)、APIサーバとスケーラブルな構成のパターン

9章;特殊な問題を解決するためのパターン

・非同期に初期化されるもモジュールのrequire
ステートパターンを利用し実行リクエストをキューにため、非同期実行が完了してからキューのリクエストを実行する堅牢な作りの紹介
・非同期のバッチ処理とキャッシュの利用
・CPUバウンドなタスクの実行
setImmediateによるインタリーブ:cpuバウンドの処理のステップが完了するたびにイベントループに制御を戻す
マルチプロセスの利用:子プロセスへ移譲

10章:スケーラビリティとアーキテクチャ

複数プロセス利用、複数サーバ利用にしてスケールする
下記3つの観点でのスケールを考える。
 クローニング:アプリをn回クローニングして各インスタンスに1/nの処理をさせる
 サービスと機能による分割;機能、サービス、ユースケースで分割
 データパーティションによる分割:データの一部を各インスタンスが分担して担当
  水平分割、シャーディング
・クローニングと負荷分散
 モジュールcluster
 ・バージョン0.11.2以降からラウンドロビン方式の振り分け
 ・障害時の再起動(zero-downtime restart)の実装
 ・負荷分散
  ステートフルにしたいデータの共有問題
  ・共有メモリを利用した認証データの保存
  ・スティッキーな負荷分散(値判定で特定ノードへ割り振る)による特定なインスタンスへのマッピング
 ->問題点あり:インスタンスの代替が効かなくなる問題
  リバースプロキシによるスケーリング
 ・ロードバランサとして機能するリバースプロキシ
  ・URLリライト、キャッシング、SSLターミネーション
  ・nginxをロードバランサとしてバックエンドにnodeのwebサーバを稼働させたパターン
  サービスレジストリを活用し、最新の稼働サーバ情報を登録し、ロードバランサがその内容を参照するパターン
  ・nodeでの負荷分散装置の実装
  ピアツーピア負荷分散:ロードバランサの処理量に依存させない方法:その分、接続方法は複雑になる
・サービスと機能の分割
マイクロサービスアーキテクチャのパターン
 各サービスにデータ所有権があることがマイクロサービスアーキテクチャの特徴
 正しいレベルの分離を独立維持するために、データベースも分割する
 データベースを分割した分、システム全体の一貫性を維持するために、互いのデータを参照更新する多くの通信が必要になる。
 クラッシュ、バグ、互換性を破る変更をシステム全体に波及させないようにする。
 利点:
 ・再利用性向上
 ・スケールは、複数マシンに負荷分散。独立してスケール可能
 難点:
 ・管理すべきノードが増えると、統合、デプロイ、コード共有が複雑になる。
 ・APIオーケストレーション層で複数のマイクロサービスのAPIを実行し、データを集約、処理する。
 ・メッセージブローかを使ったケース;フロントエンドのリクエストを受け取ったマイクロサービスが、関連するマイクロサービスにメッセージブローカを通して処理を行う

11章;メッセージ通信と統合

分散アプリケーションを統合する手段
・共有ストレージを中央の調整器兼情報の保持器として使う。
・メッセージを使ってデータ、胃炎と、コマンドを各ノードに行き渡らせる

メッセージ通信
・非同期メッセージと送信キュー:SMSのようなもの
・ピアツーピアメッセージ通信
・ブローカを使ったメッセージ通信:プロトコル間のブリッジにも利用できる、ブローカ
が単一障害になるデメリットはある。

パブリッシュ/サブスクライブ(pub/sub)パターン
 分散オブザーバーパターンでもある
 ・ピアツーピア型Pub/Sub
 ・ブローカ型Pub/Sub
 メッセージブローカにredisを適用したチャットサーバの分散スケール
 ZeroMQを使ったピアツーピア型PubSubで分散処理するチャットサーバ
 サブスクライバに障害が起きても確実にメッセージを送信できるような永続サブスクライバの実現
 ・多くのメッセージキューシステムが採用しているプロトコル:AMQP
 ラビットMQを使用したAMQPによるチャットサーバ

パイプラインとタスク分散パターン
・ZeroMQのファンアウト/ファンインパターン
 ハッシュサムを総当たりでしてアルファベットの考えられるすべての組み合わせを照合
するシステムで実践
 ベンチレータ->ワーカー->シンク
・パイプラインとAMQPの競合コンシューマ
 競合コンシューマ;複数のコンシューマが同じキューをリッスンし、メッセージをファ
ンアウト分散する

リクエスト/リプライ・パターン
・相関識別子を使用した、リクエストとリプライの紐付けで、リクエスト順序に影響しない
実装方法

付録A:ES2015以降のJavaScriptの主要機能
let, const:変数定義
アロー関数:=> コールバック関数を簡潔化記述できる
class構文
オブジェクトリテラルの改善
MapとSet
WeakMapとWeakSet
テンプレートリテラル
etc...

以上。
よきよき
40代のプログラマーです。
ここ何年かはデータ分析のシステムの開発、運用に携わってきました。

ごく小さい、スピード重視のWebの開発、運用において、
GCP Firebase, AWS AmplifyなどmBaaSと呼ばれるサービスを採用した
案件が、まだまだ少ないもののじわじわ増えています。

それぞれのクラウドで提供しているサービス群をまとめて利用できる、
そのクラウドごとに囲い込まれたWebフレームワークというもののようです。

自分は、ここ何年かは、Webよりもバックエンドのビッグデータばかり関わってましたが、
自分が今いるチームのひとたちがFirebaseを使っているのを見て興味がでました。
mBaaSは、認証まわりは楽で、データベースまわりはつらいといった印象です。

Webでなくても、Visual Studio Codeのように、
UIの開発には、HTML + CSS + JavaScriptを使うという流れがあることもあり、
JavaScriptについては、UIの開発では必須というのはわかります。
しかし、サーバの開発はそんなにあるのか?と思っています。

ところが、mBaasでは、JavaScriptというかNode.jsでの開発、運用になるとのことで、
そちらの知識、経験がないので、まわりくどく要素技術の勉強からということで、
本書を手に取りました。

読んでみると、本書は、とにかく深いです。

1, 2章で基本を紹介して、続く残りの章で、それらの話題を
これでもかと深く説明しています。

Node.jsでの非同期については、
章が変わり、話題が変わったところで、何度も触れられています。
非同期だけでも、いくつもパターンがあります。

npmのパッケージ管理を使うと、(というか、どのプログラミング言語でもそうですが、)
依存する大量のライブラリがロードされて、
はじめぎょっとして、繰り返すうちにうんざりしますが、
このモジュールの仕組みついても、けっこう踏み込んだ説明があります。

ストリームについては、
大量のひとつづきのデータが絶え間なく次々というイメージだったので、
そんなのNode.js向きなのか?と思ったのですが、そうでもないらしい。
Webというのは、CPUバウンドではなく、IOバウンドであり、
Node.jsはもちろんIOバウンド向け。
おもえば、たしかに、今の職場の別チームが、
ログを取集する受け口のサーバとしてNode.jsをつかっていました。
なるほど。

ほかにも、なつかしのGoFのデザインパターンを使った例や、
運用面でのスケーラビリティのはなしもあり、
深さにも関わらず、幅広い話題について述べられています。

ただ、まー、オライリーの本らしい、わかりづらさもあります。
書いてある内容は緻密で興味深い。
しかし、自分が経験不足なことを気づかせてくれるものの、
体験させてくれるわけではない。

トラブルも含めて、何百時間か経験を積んで、断片的な知識も蓄えていると、
価値が跳ね上がる本だと思います。

自分は、まだまだ経験が足りませんが、
Node.jsの経験が多めのひとには、
よりおもしろく読める本ではないかと思います。
 
   
本書の内容
あなたがWebアプリケーションの開発をはじめたいなら、Node.jsを使って、JavaScriptから学習をはじめることをおすすめします。JavaScriptはWebページだけでなく、サーバー側の本格的な開発にも多用されています。本書は、Node.jsを使ってWebアプリケーション開発の基本から、Expressフレームワークを使った開発まで、自分の手を動かしながらおぼえる入門書です。Node.js Ver.10対応。

※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。  
内容サンプル
 
User Voice
Node.jsを全く知らないので読んだ。初心者本としては最適だと思う。Node.js+Expressの本。
他の本を読んだり学んだ経験がある人には物足りないと感じるでしょうけど。
書いてあることは、ほんとうに基礎の基礎。
本にも書かれているが、実際にアプリを作るようになるには、この本でどんなもんかわかった後の自分の頑張り次第。
誤字はちょこちょこあるが、致命的なものは無い。
Javascriptの入門ページが付録ページにあるが、不要だと思った。
かわりにVisualStudioCodeのショートカットや、デバッグについて書いてほしかった。
javascriptのせいかVSCodeのせいか、エラーが出たときにメッセージを見てもよくわからないのが不便だった。
2018年度版なので情報も新しい。
node.jsのことをよく知らない人向けに解説されていて、独学で勉強するのに良い本だとお思う。
初めてWeb開発をするような人にオススメできる1冊。
Node.jsだけでなくWebに関する基礎知識も丁寧に解説されており、わかりやすかった。

ただし、下記の点には注意が必要
・誤記が多いので、正誤表をこまめに確認しなければならない
・サンプルコードが変更部分を太字にするといった工夫がされていないので微妙に分かりづらい
・ダウンロード出来るサンプルのファイルがtxtファイル1枚にまとめられているので見辛い

また、出版年の関係で一部古いJavaScriptの書き方がされているため、近くにJavaScriptについて
聞けるような人がいればなお良いと思われる
 
   
本書の内容
本書「Node.js入門 ~ Node.js + Express + MongoDB + ReactでWebサービスを開発しよう」は簡単なプログラミングの基礎知識がある方を対象に、本格的なWebサービスの開発のさわりの部分を解説する本です。Node.jsとWebアプリケーション開発フレームワークであるExpress、そしてデータベースにはMongoDB、フロントエンドにはReactを使用します。また、本書はタイトルの通り、入門書でありますが、本当に基本的な部分から解説を始めて、最終的には自分自身で実用的な
Webサービスを公開するところまで到達できるように配慮しています。土日など空いた時間を使って比較的新しい技術であるNode.jsを使って趣味の開発が始められるようにすることをコンセプトにしています。

本書はシリーズ形式になっています。本書ではNode.jsとExpress、MongoDBの基礎を、次の本では認証やHerokuを使用したデプロイを、その次の本でReactを導入します。

Node.js入門 ~ Node.js + Express + MongoDBでWebサービスを開発しよう ~ その1

目次

1. Node.jsについての基礎知識
1.1 Node.jsとは?
1.2 Node.jsの何が優れているのか?
1.3 Node.jsの実績

2. Node.jsを使用するための環境構築

2.1 MacOSの場合
2.2 Linuxの場合

2.3 Windowsの場合

3. JavaScriptの基本文法おさらい
3.1 変数
3.2 型

4. Expressについての基礎知識
4.1 導入
4.2 Expressをプロジェクトに導入
4.3 Expressの基本的な仕組み
4.4 RESTfulとは何か
4.5 Expressのルーティング
4.6 Expressでのルーティングを設定
4.7 Expressでのテンプレートエンジンの使用
4.8 pug(jade) ~ シンプルな構文が特徴の強力なテンプレートエンジン

5. MongoDB
5.1 MongoDBとは?
5.2 MongoDBの特徴
5.3 MongoDBの環境構築
5.4 MongoDBを起動する
5.5 MongoDBのデータ構造
5.6 MongoDBを操作してみる
5.7 mongooseでExpressからMongoDBを利用する
5.8 mongooseとスキーマ
5.9 実際にMongoDBにメッセージを保存できるようにしてみよう
5.10 body-parserミドルウェアの導入
5.11 MongoDBからデータを取得する
5.12 画像データのアップロード
5.13 express.staticで静的ファイルを配信

6. Expressのユーザー認証

6.1 Passport ~ Expressのための認証機能ライブラリ
6.2 Passportの基本的な仕組み
6.3 インターネットを介して他の人にみられたら困る情報を送信するための仕組み ~ セッション
6.4 passportでローカル認証を実装

7. おわりに

GitHubのレポジトリ上で本書のコードサンプルを公開しています。

https://github.com/react-samples/mern-1

*** 電子書籍を初めてご利用になる方は、装丁の確認のために一度無料サンプルの確認をよろしくお願いします。 ***  
内容サンプル
 
User Voice
ネイティブアプリの開発をしていて、いままで触らずにきたNode.jsを勉強することになりました。Node.jsの紹介記事でほぼセットで出てくる「Express.js」の使い方を知りたかったため本書を購入しました。

express-generatorを使って雛形を作成して実装を説明していくスタイルではなく、レンダリングエンジンを追加したりミドルウェアを追加したりとひとつずつ地道に実装していくスタイルでした。私の知りたかった Expressでリクエストを受けてレスポンスを返す処理がわかりやすく書かれていました。

基本的な実装方法を知ることができたので、本書では http-server と MongoDBが使われていたのを Cloud Function と Firestore に読み替えて実装することができました。

*** 本書で気になった点

Rubyを知っている方がターゲットなのか「RubyのSinatra」「Ruby on RailsのようなDBのモデル設定」といったRuby環境でのたとえが出てくる点です。Rubyは未履修でしたのでどのようなものを指しているのかうまく理解できませんでした。

また、タイトルに含まれているReactについての記載が本書では皆無だった点も気になりました。これは続編である「その2」でピックアップされるのかもしれませんが、React目的で購入するとガッカリしてしまうと思われます。
Reactについてはほとんど記述がないが、Node.js MongoDB Expressを初めて学習する人にはちょうどよいレベルだと思う。ただし、ある程度、プログラミングをやっている人でないと、理解が難しい部分もある。
 
   
本書の内容
デザインを改善してiOS版に対応した改訂版になります。

「JavaScriptでのWeb開発 ~ Node.js + Express + MongoDB + ReactでWebアプリを開
発しよう ~ その1」の続編となる本です。とりあえずこの本までの知識で自分で製作したアプリを公開することができます。

今回はNode.js + Express + MongoDBで作成したWebアプリを公開するために必要な最低限のセキュリティの知識やソーシャル認証、Herokuを使ったアプリケーションの公開の方法について解説します。

この本の続編としてReactやWebSocketを使ったより高度なWebアプリを開発する手法を公開する予定です。


JavaScriptでのWeb開発 ~ Node.js + Express + MongoDB + ReactでWebアプリを開発しよう ~ その2

目次

7. SNSを使ったサードパーティ認証

7.1 Oauthとは?

7.2 Twitterを使ったログインの設定

7.3 セッション情報の保存

7.4 その他のサービスを使ったOAuth認証の方法について

8. エラー処理とロギング

8.1 Winstonで高度なログ取得を行う

8.2 Expressでのエラーハンドリング

9. Webサービスの基本的なセキュリティ

9.1 Helmetでセキュリティ用のヘッダを設定しよう。

9.2 XSS - Expressでのクロスサイトスクリプティング対策

9.3 ExpressでのOSコマンドインジェクション対策

9.4 CSRF - Expressでのクロスサイトリクエストフォージュリ対策

9.5 ExpressでのHTTPSの取り扱い

10. ExpressアプリケーションとCSS

10.1 LESSとは?

10.2 LESSを使ってWebアプリのスタイルを生成する

10.3 moment.jsで時間表示を行う

10.4 認証の確認とログアウトの機能を追加

11. アプリケーションを公開する

11.1 Herokuとは何か?

11.2 Herokuのアカウントを取得する

11.3 Herokuのコマンドラインツールを導入する

11.4 Heroku以外でのデプロイ


付録

付録A. ES6でのNode.js + ExpressのWebアプリケーション開発
 
内容サンプル
 
User Voice
 
   
本書の内容
-------- 必ずお読みください -------
「Node.js + Express入門 - JavaScriptとコマンドラインがちょっとわかる人がNode.jsを使うサーバーサイド開発に入門するための本 」を手に取っていただきありがとうございます!

この本はタイトル通りにJavaScriptの文法がある程度頭に入っていて「基本的な文字列操作や関数の宣言などはお手の物」でコマンドラインを使ってフォルダを作成したり、VimやEmacs、AtomやVSCode, BracketやSublimeTextを使って自在にテキストファイルを編集できるレベルの人が、効率的にNode.js + Expressを使ったWebサーバーの開発を始められるようになれるような基礎知識をまとめたものです。

本書の装丁については、一度「無料サンプルを送信」の機能を使用して、一度確認してからのご購入をお願いします。

なお、本書はシリーズ形式になっています。本書ではNode.jsとExpressの基本的な知識とそのインストールの方法について説明して、Webアプリケーションの基本的なURL設計の考え方、テンプレートエンジンの基本的な使い方について説明します。

データベースの接続やオンラインへの公開などの解説は本書でなく、別の本で行います。

本書のサンプルコードは以下のURLから入手可能です。

https://github.com/react-samples/express-book

目次:

- 1. Node.jsの基本情報

- 1.1 Node.jsとは何か?
- 1.2 Node.jsでサーバーサイド開発を行うメリット・デメリット
- 1.3 大量のアクセスを処理することに向いているNode.js
- 1.4 フロントエンド開発のツールとしても必須のNode.js
- 1.5 なぜフレームワークにExpressを使うのか?

- 2. Node.jsの導入

- 2.1 Node.jsのインストール
- 2.2 nodeコマンドの使い方
- 2.3 npmとは?
- 2.4 npmを使ってアプリケーションを一から立ち上げる
- 2.5 npmを使用したパッケージの導入
- 2.6 package.jsonを使用したプロジェクト管理

- 3. Expressで作るWebサーバー

- 3.1 Expressのインストール
- 3.2 Expressの基本的な仕組み
- 3.3 ExpressとRESTful

- 4. Expressとテンプレート

- 4.1 テンプレートエンジン?
- 4.2 jade
- 4.3 EJS
- 4.4 フォームの作成
- 4.5 静的ファイルの配信  
内容サンプル
 
User Voice
室温をラズパイに記録するサーバを構築するためにnode.js+expressの本を探してこの本に辿り着きました。
今までは無料のサイトで構築例などを見ましたが、node.jsやnpm自体の説明はよくわかりませんでした。

本書はnode.jsやnpm,expressなどのWebサーバに必要なものの使い方と存在意義を簡潔に説明してあり、どうしてそのオプションを使うかなどが必要充分に説明されています。
無料のサイトのサンプルでの疑問が解決できました。

説明の順番などの構成も良く、文章とコード量のバランスもいいと思います。

ただ、概念の説明などに限っては図があった方がよかったかも
Node.js を使ったWebアプリの開発の導入として購入しました。
確かに初級者を対象とされていますが、内容が薄すぎだと思います。
PUG と EJS を紹介しておいて、途中から EJS のみのサンプルコードだけに
なるのは何故???

誤字が多く、読みづらいのも気になりました。

とはいえ、Node.js / Express での開発の概要はつかめたので、良かったです。
インフラエンジニアだったので、シェルとPerlとVBAをログ解析に組んでいたぐらいだったのですが、なんともわかりやすい切り口でするすると脳に染み込んでいきました。これなら誰でもwebサーバを立てられるので、若い衆を鍛えるために読ませます。他の著作もぜひ読んでみたい。
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
「Azure Appにてnodeアプリケーションが500エラーで動かない」
「MySQL in Appの情報が無い。node.jsでの接続コードがわからない」
「ツイッターのWebhook URLの登録作業がうまくいかない」
「無料で動かしたい」


これ一冊ですべて解決!!

//// 改訂履歴 ////
第1版2018年5月10日初版発行
第2版2018年10月22日Account Activity APIに対応。
第2.1版2018年12月29日Webhook URLを登録 を作業手順に絞って簡潔な説明に更新
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~はじめに より抜粋~

今回このe-bookを執筆した動機は、ツイッターボット作成に関する情報や書籍が乏しかったり古かったりであったこと。
そして無料で動かすことにこだわったからでした。
調査した結果、Azure App Serviceに行きつきました。

・・・中略・・・

MySQL in Appが無料使用でき、もしかしたら将来的な本格運用にそなえて有料プランへの変更でスケールアップ・スケールアウト、日本語サポート対応が受けられるのであれば、Azureを選択したいという開発者の要望もあるのではないかと思い一冊の本に纏めた次第です。
そしてツイッターのUser streams APIの廃止、Account Activity APIへの移行にともない、第2版を書きはじめたことろ…

まずいきなりAzure Appにてnodeアプリケーションが505エラーで動かなくなっている。
また、ツイッターのAccount Activity API使用のための登録作業も公式マニュアル通りにはいかない。
MySQL in Appの情報が相変わらず無い。

ひとつひとつこういった問題を潰していき、大量の時間を読者のみなさまが費やさずに済むように手順を詳しく仕上げたつもりです。

本書読者対象としましては、プログラム言語とデータベース操作について基本知識があること。またGitHubを使用していることが前提です。
本書ではNode.jsのスクリプト言語であるJavaScriptの文法については解説していません。
MySQLおよびSQL文についても解説していません。

※ GitHubについてはチームで作業するわけではないので、リポジトリを作成し初期化しgit add, git commit, git pushする基本操作だけで問題ありません。


目次
 改訂履歴
 はじめに
 環境
 免責事項
 サンプルコード
Lesson1
 Section1: 開発環境構築
  1.1. Ubuntuの場合
  1.2. Windowsの場合
  1.2. Macの場合
 Section2: Node.js + Express
  Node.jsについて
  Expressについて
 Section3 : Twtterボットを作ってみよう
  Twitter APIについて
  Twitter開発アカウントを申請
  Twitterアプリケーションの登録
  Twitterボットをプログラミング
 Section4: Azure App Serviceにアップロードしてみる
  Azureにサインアップ
  Azure App Serviceアプリを作成する
  App Serviceにコードをアップロードしてみる
  App Serviceに環境変数を設定する
Lesson2
 Section5: Node.js + Express + MySQL
  XAMPPのインストール:Ubuntuの場合
  XAMPPのインストール:Windowsの場合
  XAMPPのインストール:Macの場合
  データベースを用意
  NodeでMySQLを利用する準備
 Section6: Node.js + Express + MySQLでTwitterボット作成
 Section7: Azure App Serviceにアップ、完成
  MySQL in Appの準備
  server.jsのコードを編集
 Section8: スリープ対策
  Azure Function Appの作成
Lesson3: Account Activity API
 Section9: Webhook URLを登録
 Section10: Account Activity APIで自動フォロー返し
  自動フォロー返しをプログラム
あとがき
 
内容サンプル
 
User Voice
ググッても先輩に聞いてもわからなかったツイッター、webhook URLの登録。本書の手順の通りにやってできました!ありがとうございました。
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
この本を手に取っていただいた方は、JavaScriptを使ったプログラミングを始めたけれど、実際にどんな風に役立てていけば良いのかよくわからないという方だと思います。あるいはJavaScriptを始め一通りのチュートリアルをやって見て、ある程度の自身が付いたのでもう少し実用的なプログラミングに取り組んでみたいと思った方かもしれません。

JavaScript自体はとても簡単な言語で、いろいろな分野に応用できる言語ではありますが、その選択肢の多さゆえに、どんな風に使っていいのかわからなくなっている人が多いようです。また、JavaScriptの本の中にはブラウザで動かす前提のものが多く、サーバーサイドJavaScriptのNode.jsの使い方についてはノウハウが一般化していない印象があります。

この本の目標としては、基本的なJavaScriptの知識があることを前提に、かんたんなプログラムを書いてTwitterのアカウントを自動的に操作して、好きなメッセージを定期的に投稿したりする「ボット」を自作できるようにすることです。

そのために、本書の流れとしては、最初にJavaScriptの文法を復習して、その次にTwitterの開発者メニューから必要なアクセスキーを取るための手順を説明します。次にローカルのPCでJavaScriptのプログラムを作成してTwitter APIにアクセスできるようにします。余裕がある人向けのおまけですが、Amazon Web Servicesを使って、ほぼ無料でボットを運用できるようにするための方法を解説します。

学習を進める際の注意点ですが、一気に進めようとせずに、少しずつ、わからなくなったら前の章に戻ったり、別の本を参照したりしてゆっくりと進めると良いと思います。プログラミングは楽しいですが、理解に時間がかかることがあるのも事実です。焦ることなく、ゆっくりと学習を進めていきましょう。

1. Node.jsについての基礎知識

1.1 Node.jsとは?
1.2 Node.jsの基本的な情報
1.3 Node.jsと従来のブラウザで動作するJavaScriptとの違いとは
1.4 なぜ今Node.jsを勉強すべきなのか?
1.5 Node.jsの開発者・ライアン・ダール(Ryan Dahl)について
1.6 Node.jsの問題点とは

2. Node.jsを使用するための環境構築

2.1 MacOSの場合
2.2 Linuxの場合
2.3 Windowsの場合
2.4 nvmを使用する方法

3. Node.jsのプログラムを実行する方法について

3.1 REPLを活用する
3.2 ファイルを使用する

4. JavaScriptの基本文法おさらい

4.1 JavaScriptの基本的な言語仕様
4.2 コンソール
4.3 変数
4.4 型
4.5 if構文
4.6 for構文
4.7 while構文
4.8 コールバック関数

5. Twitter APIの活用

5.1 APIとは?
5.2 OAuthとは?
5.3 Twitter APIを使用するための登録
5.4 Twitter APIを使用した投稿
5.5 Twitter APIでメディアを投稿する

6. クラウドとTwitter APIの連携

6.1 Amazon Web ServicesとTwitter API
6.2 AWS Lambdaの課金について
6.3 デプロイパッケージ  
内容サンプル
 
User Voice
 
   
本書の内容

本書「Node.jsとPythonを使ったSlack API 活用術 - チャットボットの活用で仕事効率化」は便利なチャットアプリケーションの「Slack」の豊富なAPIやBot機能をNode.jsやPythonといったプログラミング言語と組み合わせて利用することで、仕事の効率化やその他の面白い応用への可能性を提案するものです。

前提となるのは簡単なプログラミングの知識のみです。

構成:

1. Slackとは?
1.1 SlackとBot
1.2 Slack Appを使用する

2. Slack APIを使った仕事効率化
2.1 Botユーザーを作成する
2.2 Node.jsとSlack API
2.3 PythonとSlack API

3. クラウドとSlack APIの連携
3.1 Amazon Web ServiceとSlack API
3.2 スラッシュコマンドとは?
3.3 Google Cloud FunctionsとSlack API

付録A - Node.jsの導入方法
付録B - Ubuntu16.04でのPython3の導入方法  
内容サンプル
 
User Voice
初心者だとちょっとキツイかもですが、AWS LamdaなGoogle Cloudを使ってのSlackボットの説明など、偏りなく紹介されていて知識の幅が広がります。
画面スナップ使っての説明も豊富で読みやすいです。
ただ、まだ私には作れないかも...これから挑戦してみます。
本当にちょうど良い文量です。一気読みしても集中力がちゃんと続きます。
 
   
発売日 2017/09/19
(3.2)
Amazon 347円 Kindle 2,970円
本書の内容
もし、あなたがWebアプリの開発をはじめてみようと思っているなら、Node.jsをおすすめします。Node.jsは、JavaScriptでサーバー開発ができる非常に重要なソフトです。本書は、Node.jsのインストールから、フレームワークの使い方、データベースを使った本格的なWebアプリの開発まで、初心者でも手を動かしながらおぼえられる入門書です。あなたもDB版ミニ伝言板やMarkdownデータ管理ツールなどの開発を体験してみましょう!

※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。  
内容サンプル
 
User Voice
Nodeを触って見たくなり、ネットで調べながら勉強してみたが何から手をつければいいのかわからずに挫折。コストパフォーマンス的に本を買ったほうがやすいと考えて購入しました。現在chapter4まで読んだところですが、一つ一つのモジュールの説明がありスッキリわかりました。文章も読みやすく、すらすら進めることができます。誤字は確かにありましたが私はそこまでは気になりませんでした。ただHTML・CSSに関する説明は少ないので、全くの初心者の方はHTML・CSSの意味は調べながら学習することになると思います。これからNodeを勉強したいが、何からやればわからない方は読めば勉強の方針を立てることができるのではと思います。
動画サイトや書籍で何度も挫折したが、初心者がどこに疑問を抱くかを先回りして説明が組み立てられています。

こういうものと、ある程度断定的に説明が進むので、割り切りながら読み進められるのもありがたかったです。

カラーで見やすく、汎用的な想像も掻き立てられました。
タイトルの通り
第2版を買うことをお勧めする
内容は本当に良かったです。
 
   
本書の内容
本書は、Node.jsとReactを使用した、アプリケーションの開発の解説書です。
Webの世界における古くて新しい言語「JavaScript」を題材に、 いま、JavaScriptで効率的に開発するには、どうしたら良いだろうか? ということを考えてみました。
本書は、Node.jsとReactを掲げることで、その問いに答えを出そうとしています。
Node.jsは、ブラウザを飛び出して、サーバの中で実行できるJavaScriptの実行エンジンです。
今やNode.jsはスクリプト実行環境として揺るぎない地位を築いているといってもいいと思いいます。
そして、ReactはFacebookが開発したUIフレームワークです。ReactはUIを個々のコンポーネントに分割することで、効率よく保守性の高いアプリを作ることができます。
本書の1章では、最初にNode.jsや最新のJavaScript仕様について紹介します。そして、2章と3章でReactについて解説します。
4章では、フロントエンド開発にフォーカスします。Electronを用いてPC向けのデスクトップアプリを作ったり、React Nativeを用いて、スマホ向けアプリを作る方法を紹介します。
さらに、5章、6章では、実際的なWebアプリを作りながら、Node.jsとReactの深い部分に切り込んでいきます。
本書では、具体的かつ簡潔なサンプルプログラムを心がけました。
本書が、ExmaScript 2015以降で大きな変化を遂げたJavaScript開発のための指南書となることを祈っています。
 
内容サンプル
 
User Voice
## 概要
JavaScriptの開発で人気のフレームワークであるReactによるアプリケーション開発方法を解説している。

最初に,Reactと共に使われる現代的なJavaScriptの開発方法として,Node.js,npm,Bable,Webpackを解説し,Reactの使い方を説明し,最後にその応用として実践的なアプリケーション開発事例を解説している。

実践的な開発例として,分散SNSのMastodonのElectronによるデスクトップクライアントとReact NativeによるAndroid/iOSクライアント,掲示板やリアルタイムチャット,Wikiシステム,独自SNS,機械学習による手書き文字認識を取り扱っていた。

説明が足りないところや,やや理解が難しい箇所もあったが,Reactや現代的なJavaScriptでの開発方法が一通り説明されていてよかった。

特に,実践的な開発として,分散SNSのMastodonのデスクトップとスマホクライアントの開発方法の解説があるのが良かった。MastodonのWeb APIを使うためのnpmのライブラリー (mastodon-api) が存在するので,これを使うことで,比較的簡単に必要な機能が実装できるようだ。

たぶん他のWeb APIも同じような感じなのだろうけれど,それが解説されているのが良かった。この手順通りにやれば,自分にもできそうだと思えた。

## 結論
Reactによる現代的なJavaScript開発全般が解説されていた。実践的な事例があり,これを目当てに購入してもいいなと思った。

ただし,解説が不十分なところがあったり,内容が難しいところもあるので,わからないところは追加で調査が必要だろう。

特に,分散SNSのMastodonのクライアントの開発例が書かれており,あまりネット上に情報が出回っていないので,貴重な情報源だった。

パーマリンク: https://senooken.jp/blog/2019/03/27/
おもろいです。
色々な分野をサクッとまとめていて、さらっと読むにはいいかも。

しかしながら誤字脱字の嵐。
proof readingはなかったのだろうか・・・
初めてReactを学ぶときにこの本を使いました。
React自体の説明も分かりやすくいいですし、何よりその他様々なこと(expressやwebsocketやその他技術)を広く浅く取り扱ってくれるので、かなりおいしいと思いました。

他のレビューに「物足りない」と書いている人がいましたが、確かにReactをある程度触ってきた人にとっては物足りないかもしれませんが、あまり触っていなかったり初心者の場合はかなり多くのことを得られると思います。
 
   
本書の内容
JavaScriptエンジニアのためのNode.js入門書です。
昨今何かと話題のNode.jsとは何者なのか、どうやって使うのかを簡潔にまとめていますので、興味のある方は是非ご一読ください。

第1章 導入
  Node.jsとは
  Node.jsの特徴
  Node.jsのインストール

第2章 基本的な使い方
  Hello World
  テンプレートファイルの利用
  画面遷移
  送信データの処理
  静的ファイルの供給
  モジュール

第3章 テンプレートエンジン ~EJS~
  EJSのインストール
  基本的な使い方
  テンプレートの組み合わせ

第4章 フレームワーク ~Express~
  Expressのインストール
  基本的な使い方
  送信データの処理
  Cookieの利用
  Sessionの利用
  Ajaxの処理
  雛形の自動生成  
内容サンプル
 
User Voice
すっきりと要点がまとめられており、とてもわかりやすい。
特に最後に各ディレクトリの構成の補足等もあるので、初心者にとっては学習しやすくてベストでした。
ここ数年、ネットで見つけた記事通りにやっても途中で行き止まることが多く、その解決方法を探してもゴミのようなメモ書き情報ばかりが出てきて、本当に役立つものに出会いにくくなったと感じていました。

その点本書は、NodeJsのインストールに始まり、フレームワークを使わないやり方、使うやり方と、基礎の基から、応用の手前までの情報を、シンプルにわかりやすく再利用しやすい情報として教えてくれました。

おかげ様でJavaScript素人(ほかの言語は経験あり)の私ですが、NodeJsを使ってそれなりのサイトが作れそうなイメージが出来るようになりましたので、著者の天田士郎さんに感謝しております。

ほかのシリーズもまたお世話になると思います!!
他の格安入門書に比べると、誤字が少なく説明の順序もわかりやすく、短時間でざっくりと把握するには最適だと思う。

他の多くの入門書では、作者の個人的な趣味が思いっきり全面に出ていたり(自分の得意な他の言語と比較したり、自分の出版した他の本を宣伝したりなど)してかなり感じが悪いが、この本はしっかりNodeJSのことだけがまとまってわかりやすく書いてあるので非常に助かる。

この本を読んだからいきなりNodeJSの仕事ができるというわけではないけど、ここから無限の広がりを感じることは可能。自分次第。

おすすめ。
 
   
本書の内容
HTML文法解析から機械学習まで
JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック

まだ、Webデータを手で集めていますか?

サーバーサイドのNode.jsとJavaScriptでクローラーが簡単に作れる!
WebAPI経由でデータをゲット!
得られたデータでレポートやPDF/Excel文書を自動作成!
本書のスクリプトはダウンロード可能!

【本書で紹介している技術】
機械学習、画像認識、形態素解析、マルコフ連鎖、ベイジアンフィルタ、
GoogleCharts、各種SNSのWebAPIアクセス、HTML解析、リンク抽出、画像抽出 他

【本書で使用しているライブラリやモジュール】
PhantomJS/CasperJS/CoffeeScript/Electron/Node.js/Rhino/Nashorn/JScript他
 
内容サンプル
 
User Voice
何を言っているのかわからないと思いますが、本書は前半と後半で雰囲気がかなり異なります。
以下、まとめます。

<1章~4章>
基本的なクローリング方法やスクレイピング方法がメインとなっています。
最近クローラーでよく問題になるSPAやAjax方式のページ取得や、取得待ち時間の設定(取得先サーバ負荷低減)、ログインページの処理、文字コードの問題、各種ファイル形式のスクレイピング、データベースへの登録など必要なところがちゃんと抑えられています。
ここまでで本書の半分です。

<5章~8章>
5章から急激に雰囲気が変わります。
6章だけはメジャーサイト(Twitter,Amazon,Wikipediaなど)のAPIの利用方法や分析例が記載されているので、スクレイピングの1つと呼べますが、
他は形態素解析、データマイニング、ベイジアンフィルタ、人工無能、機械学習、手書き文字の認識、解析結果のグラフ描画など、取得したデータの解析に重点を置いた内容となっていました。
むしろデータ解析技術の本ではないかと思うほど。

考えてみればデータ解析には大量のデータが必要なわけで、クローラー・スクレイパーはそのための手段でしかないわけです。
実際のところ、本書は「Node.jsによる データサイエンティストになるためのデータ収集と解析」といったタイトルが似合います。

クローラーとしての基本も抑えられますし、その発展としてのデータ分析技術の基本も抑えられるので非常に面白い書籍でした。

※ レベル感としてはプログラミングの知識があるNode.js初心者・中級者以上向けだと思います。
 インストール方法や開発環境の解説もありますし、サンプルプログラムは豊富なので
 その解説を読めば初心者でもNode.jsを勉強できると思いますが、
 習うより慣れろ方式を採用しているようなので、ある程度自分で調べられる人が対象のようです。

※ またWebサーバとしての利用は想定されていないので、Expressなどの解説が欲しい方は別書を勧めます。
JS+Node.jsにのクローラーについて書かれた本です。
多彩な実用例も載っており、これらを参考に
何かを面白いものを作れないか、ワクワクしています。

プログラムサンプルにもプログラム内のコメントだけで終わらせるのではなく、
文面を割いて、ちゃんと詳細な解説が書かれており、
他の文献を調べながら読む必要がほとんどありません。
論理の飛躍もなく、最初から読み進めてもすんなり頭に入ってくるような
分かりやすさがあります。

環境についてもWindowsだけではなくLinuxやMacOSについても
考慮されており、定期的に自動取得する方法など、ニーズに合わせて
いろいろな手法が書かれています。

個人的には、FirefoxやChromeなどのブラウザを
JSのライブラリとプログラムを用いて自動化する方法は、とても新鮮でした。
とてもわかりやすかったです。
サンプルが充実しているので きわめて実用的でした。

サーバーサイドのJavascriptでここまでできるのか!と驚きもありました。

大規模システム構築には向いてないのかもしれませんが、Webクローラーの仕組み
を理解するにはとても役立ちました。
 
   
本書の内容
(※2016年10月5日、最新の情報にあわせて改訂しました)

「サーバーサイドJavaScriptをマスターせよ!」
とかくWebの開発は難しい。クライアント側ではJavaScript、サーバー側は? いくつもの言語を覚えて使いこなす、そんな面倒は今日で終わり! クライアントもサーバーも、JavaScript一択、これで決まり。「Node.js」なら、それが可能だ。今日から「サーバーサイドJavaScript」でWeb開発をしよう!

※node.js 6.7.0、express 4.13.4に対応。


<<目 次>>
1. Node.js利用の準備を整えよう
Node.jsってどんなもの?
Node.jsを準備しよう!
インストールを実行しよう
Node.jsはどこにある?
Node.jsのスクリプトを書いてみよう!
Herokuの利用環境を整えよう
Heroku公開に必要なファイルの準備
Herokuにデプロイしてみよう!
ダッシュボードで確認しよう

2. Node.jsのスクリプトの基本を覚えよう
基本のスクリプトとhttpオブジェクト
リクエスト処理用関数について
リクエストの処理
ファイルの読み込みと「fs」オブジェクト
HTMLファイルを読み込んで表示する
HTML内の一部をスクリプトで変更する

3. EJSテンプレートエンジンを使おう!
npmでEJSをインストールしよう
テンプレートで使える特殊なタグ
簡単なテンプレートを作る
EJSによるテンプレートの表示
テンプレート部品を組み合わせる
配列データを繰り返し出力する

4. 複数ページのルーティングとフォーム送信
複数ページのルーティングの考え方
「url」オブジェクトによるURL処理
ルート処理の流れをチェックする
フォームのPOST送信について
POST送信されたデータの処理

5. Expressを導入しよう
フレームワークと「Express」
Expressのインストールについて
ExpressのWebアプリケーションを作る
Express利用の基本スクリプト
Expressの基本処理を整理する
テンプレートを利用する
テンプレート利用の処理を作る
テンプレート利用の処理のポイント

6. Express GeneratorでWebアプリケーションを自動生成する
Express Application Generatorの準備
ExpressコマンドでWebアプリを作る
Webアプリケーションの中身をチェック!
メインプログラム「app.js」について
「routes」のスクリプトとテンプレート
「helo」ページを作ってみよう

7. Expressによるリクエスト処理の基本
クエリー文字列によるパラメータ送信
フォームの送信について
Ajaxでアクセスした情報をJSONで受け取る
クッキーの利用

8. Node.js/ExpressでPostgreSQLを使おう
Node.jsでのPostgreSQLの利用
データベースの準備をする
Expressのapp.jsを用意する
indexでテーブルの一覧を表示する
データベースアクセスの流れ
レコードの追加を行う
データ追加の処理の流れ


※本書は、入門ドキュメントサイトlibro(http://libro.tuyano.com)の掲載記事を元に図版などを追加、最新バージョンに合わせて加筆修正したものです。

※著者について
掌田津耶乃(しょうだつやの)。日本初のMac専門月刊誌「Mac+」の頃から主にMac系雑誌に寄稿する。ハイパーカードの登場により「ビギナーのためのプログラミング」に開眼。以後、Mac、Windows、Web、Android、iOSとあらゆるプラットフォームのプログラミングビギナーに向けた書籍を執筆し続ける。(著者プロフィールより)  
内容サンプル
 
User Voice
ほかの言語でWebアプリを作ったことある人で、Node.js全くの初心者がさいしょにやるチュートリアルになっています。
ただ本のフォントが変で、サンプルコードが読みづらい..
特にシングルクォート2つなのかダブルクォート1つなのかがわかりづらい..
なので星1個ひいてます。
最初から全部やってもいいですが、飛ばして動かしてみたい所だけやってもいいとおもいます。
その場合はnpm installやexpressコマンドなど省略されていたりするのでそこらへんは脳内補完してください。
本番実行環境にHerokuで紹介されていますが、ローカルPCだけでも十分勉強できます。
ただ最後のPostgreSQLと接続する部分の章がチュートリアルとして使う場合そこそこはしょられており、そのままコードを打って完成させることができません。このあたりは、端折られたコードをこれまでの章で勉強した内容から補完して完成させる必要があります。
なので更に星2個ひいてます。

最初からまじめに初めて、ひっかからなければ半日、ゆっくりコーヒーを煽りながらやれば1日といったところでしょうか。

問題は、この後中級クラスのNode.js本が少ないことです..
結論からいうとQiitaでexpressの入門記事を読んだ方がマシ。

ビギナーズガイドという事だが、
Node.jsインストールしてサーバを起動するくらいなのでQiitaを読んだほうがマシ。
またWindowsなのでそれ以外の環境には不向き。

書名の副題の「サーバーサイドJavaScriptをマスターせよ!」だが
Node.jsのAPIについて説明を掘り下げてはいないので全くの嘘。

文章の誤りが目立つ。著者は他社に校正レビュー、コードレビューをしてもらうべき。

他の方もおっしゃっているようにフォントが見づらい。
「'」「"」だけでなく「.」「,」、「:」「;」、「{}」「[]」も見づらい。
タブインデントなのかインデントも無駄にでかい。

著者のコーディングルールもおかしい
input.value,callcbackのように引数がくっついていたり見づらい

req.setRequestHeader
("User-Agent","XMLHttpRequest");
のように変なところの折り返しが幾つもあって見づらい
※著者はリーダブルコードなどのコードを読みやすく書くための本を読むべき

ObjectをObjctと書いたり、HeroをHeroと書いたりスペルミスも目立つ。

body onload="inti()"のように動いていないコードを呼び出してエラーがでているのも微妙

onclick="doAction();"こっちは「;」があってコードの統一がされていない

という具合に後半は著者がデバッグされていないのが明らか。
恐らく過去に作ったコードを持ってきたのだろうと思われる。
著者は自分の書いたコードが正しく動いているか開発者ツールにエラーがでていないか確認する癖をつけるべき。

ajaxの所は著者の過去の遺産ぽいエラーの出るjs使うくらいなら素直にjQuery使ったほうがNode.jsを勉強する趣旨から外れなくていいのではと思った。

最後のポスグレはコードがはしょられたり、タイポがあったり、読みづらかったです。

前半のepxress動かすところまではまぁまぁ良かったので☆3

その後のよくない所があって☆を引いて☆1
最初に書いたようにexpressの入門記事を読むのが良い
(著者サイトLibroは同じ内容だったので参考にしないほうがいい)
最速でひととおりの事が理解できる、という意味で非常に良かったです。

特に秀逸だったのは、
まず原始的に作ってから、Expressなどのツールを導入する流れになっており、
『ツールをなぜ使うのか、ツールは何を肩代わりするのか』という疑問に
答えているのが、理解を助けるうえで良かったです。
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
シングルページWebアプリケーション(SPA)は、最近注目を集めているWebアプリケーションのアーキテクチャです。
SPAは、ユーザがアプリケーションを使っている間、Webページ全体をロードすることがなく、レスポンスが高速でUI/UXに優れているという利点を持っています。
かつてはJavaアプレットやFlashといったWebブラウザのプラグインに依存する必要がありましたが、近年ではJavaScriptを使ったSPAが現実的になってきています。
JavaScriptベースのため、既存のWeb開発スキルの活用が容易であり、新しいデバイスへの対応も比較的簡単です。
本書では、クライアントでJavaScriptを使ったSPAを採用するだけでなく、WebサーバにNode.js、データベースにMongoDBを使うことで、
フロントエンドからバックエンドまでエンドツーエンドのJavaScript SPAの仕組みと開発方法について詳しく解説します。  
内容サンプル
 
User Voice
対象は題のとおりですが、前提知識として、完全にではありませんが、以下のようなレベルのことが大方理解できていないと読めないと思います。
・オブジェクト指向について
・HTML/CSSについて
・ネットワークの基礎知識
・サーバーの基礎知識
・jsのプロトタイブへの知識

本書の対象レベルの方にとっては特にjsを理解することは完全には難しいと思います(文中でも「完全に理解できないかもしれない」というようなことが書かれています)が、例えばオライリーのサイ本(http://www.amazon.co.jp/dp/4873115736/)などに多少なりとも目を通している程度の知識はあったほうが読み進めやすいかと思います。

翻訳は、難しい概念については英語からそのままカタカナ語で訳されていたりして少し読みにくいです。
カタカナ語に対して、文中での明確な定義はもちろん、訳注などもついていないため、知識レベルが低い人(というよりカタカナ語に慣れていない人)は、別に難しいことを言っているわけではないのに、訳のせいで本筋でないところで考えてしまう事が多いと思います。

内容や構成そのものは分かりやすく、コードも誤解のないように省略せずに書かれているので読み進めやすいです。
また一貫して一つのアプリケーションを作りこんでいくので、実際的なコーディング手法を丁寧に教えてくれる、とても良い本です。

前述のとおり、コードがほとんど省略されていないので、本自体は内容の割に分厚くなっています。
少し厚めな見た目に反して、気軽に、しかし本格的に学べる一冊ではないでしょうか。
間違いなく、Web開発初学者にとっては敷居は高く感じるかもですが、
ひとつひとつのJs特有の概念や、開発手法、構成の仕方、コーディング手法など、
学ぶべきことは多く載っており、6章までは本物のSPAを学べる本当に素晴らしい本です。
中~上級者向けの本だと思います。Js未経験ではちときついです。
初学者は、これを読む前に、オライリーの開眼!Jsを読むべきです。
サイ本も同時に眺めつつ、ある程度理解して書けるようになったころ読むと
きっとあなたをJs使いとして次のステップに誘導してくれます。
コードを1から書くのが面倒な方も、本に記載されているサイトに
コメントほぼなしのソースがあるので、コメントを書きながら納得しつつ学習を進められます。
この本に感銘をうけて、僕はSPAのサイトを作り始めました。
みなさんもこの素晴らしい構成・内容の本を手に取り、SPA開発に着手してはいかがでしょうか。
今、注目のSPAについて、実践的なやり方(フレームワーク)を、詳細に説明してくれてます。
シンプルなページから始まり、徐々に機能追加していく構成となっています。追加・修正されたコードの説明がわかりやすく、大変勉強になりました。
米国amazonでの原書の評価が高いのもうなづけます。
著者のサイトから各章のコードがダウンロードできるので、写経せずに自分の環境で動作確認できたのも、とても助かりました。
翻訳も、理解の妨げになることはなく、特に不満はありません(良い和訳、とは言えないと思いますが)。
 
   
本書の内容

※この商品は固定レイアウト型の電子書籍です。

※この商品はタブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。

※お使いの端末で無料サンプルをお試しいただいた上でのご購入をお願いいたします。



サーバーサイドJavaScriptの実行環境、Node.jsを基本から習得し、Webアプリケーションを制作しよう!

Webクリエイターのための、Node.jsによるサーバーサイドJavaScript入門です。 JavaScriptは今、もっとも注目されているプログラミング言語ですが、サーバー開発の世界でもJavaScriptが急速に広まりつつあります。それが「Node.js」です。本書は、「JavaScriptの基本はだいたいわかっている」という人でも読めるように、基本的なインストールや設定などから順を追って説明しています。また、サーバーサイドの技術的な説明よりも「Webアプリケーションを作りたい」と思うクリエイターに役に立つ知識を中心にまとめました。本書をひと通りマスターすれば、一般的なWebアプリケーションであればたいていのものが作れるようになっているでしょう。ぜひ、本書でサーバーサイドJavaScriptの世界に足を踏み入れてください。

■CONTENTS
【Chapter1】Node.js 開発の準備を整える/【Chapter2】アプリケーションの基本を覚える/【Chapter3】クッキーとテンプレート/【Chapter4】Webアプリケーションライブラリ「Express」/【Chapter5】PostgreSQLの利用/【Chapter6】MongoDBの利用/【Chapter7】Sails.jsによるMVCアプリケーション/【Chapter8】Sails.jsのデータベース開発  
内容サンプル
 
User Voice
初心者がつまずきそうな細かい部分を省略しないでわかりやすく丁寧に説明しています。
node.jsでwebサイトを作成する方法が一通り理解できました。
あとはwebの情報を拾っていけばとりあえずなんとかなりそうです。
たしかに誤字などがありましたが、javascriptの文法がわかっていれば対応できます。
Node.jsの基本を理解したい人、その先のExpressやDBの使い方の概要をつかみたい人、さらにMVCフレームワークのSails.jsの概要を知りたい人に有用な本だと思います。誤植が少しありますが、順を追って丁寧に説明してあります。
他の言語の経験があり、Node.jsを新たに学ぶ方には良いかと思います。概要を理解できますし、Expressとは何ぞや、という所も学べます。
他のレビューにもありますが、誤植があります。ただ、コーディングはネットで調べながら悪戦苦闘しながら学習していくものだと思うので、それほどマイナスポイントではないかなと思います。
 
   
本書の内容
本書は、「スケーラブルなネットワークプログラムを簡単に作成するための方法を提供する」というNode.jsの日本初の解説書です。Node.jsの初歩から応用まで、すべてを学ぶことができます。  
内容サンプル
 
User Voice
入門的な簡単数行スクリプトに始まり、いろいろな例示も多いので分かりやすいと思います。
apacheやnginxではできないことを…と思っている人には良い教材ではないでしょうか。
この本は、導入編、基本編、実践編、応用編とわかれている。
HowTo本ではなく、そしてNode.js Web開発入門でもなく、その名の
通りNode.jsの入門。
だから、この本を読めばさっそくNode.jsのWebアプリを作れる!と期待
すると、ちょっと違う結果になる。
ただ、WebアプリのHowToはWebにありふれているので、検索すれば
いくらでも記事は見つかるので、問題ない。

導入編は、Node.jsの概念と開発環境の構築方法。

基本編は、Node.jsとは何かを理解することができる。
イベントの説明から始まり、nextTick(),ストリーム、バッファ、net,tcp
tls,httpと低いレイヤから丁寧に説明されている。
テストやデバッグ方法についても一通り説明されており、ちょっと違うこと
をしたいが、ネットでは解答が見つからないといった場面でこれらの知識は
活きてくるものと思われる。
またV.08から導入されたDomainの説明も1章さかれて説明されており、Node.js
でよく問題になる例外時にサーバごと落ちるといった問題への簡単な解決策が提示
されていて、とても助かった。

そして実践編。ExpressとSocket.ioの説明でこの部分は、HowToになって
いる。
サンプルのアプリは、フォーラム、socket.ioを使ったファイルの共有、
Twitterのハッシュタグストリーミングの3つ。 サンプルコードが追記が
ほとんどとはいえDiff形式で表示されていて、ちょっと辛い。
出版社のサイトからソースコードをダウンロードして読むことで理解できる
ようになった。 ものぐさな私には、いっそ完成形のソースをのせて部分
ごとに説明していただければありがたかった気が。
また、Express,Socket.ioの機能を網羅的に説明している訳ではないので、
実際のアプリはこういう感じで作るよといった雰囲気を知れる章として
思ったほうがいい。

応用編は、Node.js自体の実装の簡単な説明と非同期プログラミングで
同期的に書く方法(async)や、アドオン(C++での作成)、npmパッケージの作成
方法、スケーリング(WebSocketの共有)など、興味深く、ためになる項目
が多かった。ただ、ざっと記述されているだけなので、さらに自分で調べ
てみる必要はありそう。

実際にNode.jsを使う必要のある人は買って損はないと思う。
node.jsを使い始めて、1年近くになりますが、やっと日本語のnode.js技術書が出たということで購入してみました。まだ全て読み切ったわけではありませんが、基本的なところから実践部分まである程度カバーしているように思います。
node.jsを使っているけど、根本的なところがイマイチ理解できていない、そんな人にはおすすめできる1冊かなと思います。
 
   
本書の内容
Node.jsでWebアプリケーションを開発しよう!!

サーバーサイドJavaScriptの実行環境である「Node.js」の入門書。
環境構築からデータベースへのアクセス、Expressフレームワークの使い方、
デプロイおよびホスティング環境まで、Node.jsのすべてが分かる一冊です。

本書では、Node.jsの入手やインストールといった開発環境の構築、
nodeコマンドの基本操作、アプリケーションの作成手順、ファイルやデータベースへの入出力、
プログラムのデバッグやテスト、Webアプリケーションフレームワークの利用など、
特にWebアプリケーションの作成に必要となる知識やテクニックについて解説。
Node.js解説書の決定版と言える一冊です。

■第1章 Node.jsの特徴を理解する
■第2章 Node.jsの環境を構築する
■第3章 nodeコマンドとNode.jsのイベントシステム
■第4章 npmでモジュールを管理する
■第5章 シンプルなWebアプリケーションを作る
■第6章 バイナリデータの操作とファイルの入出力
■第7章 Node.jsアプリケーションのデバッグ方法
■第8章 Node.jsからデータベースにアクセスする
■第9章 Expressフレームワークを使う
■第10章 Node.jsでSocket.IOを利用する
■第11章 Node.jsアプリケーションのデプロイとホスティング環境
■第12章 スマートフォン対応のWebアプリケーションを作る
■第13章 対話的なコンソールアプリケーションを作る
■第14章 複数のプロセスを利用するアプリケーションを作る
■第15章 テストフレームワークを使う
 
内容サンプル
 
User Voice
バージョンアップが頻繁に行われるNode.js環境において、現時点ではかなり最新の情報で記載されている。
特にExpressフレームワークは、ネットでは2.x系の情報が多い中、3.x系での解説になっている点は評価したい。
さらに、データベース接続やスマートフォン対応(jQuery Mobile 連携)、Socket.IO、本番環境におけるホスティングなど、実際にNode.jsでサービスを公開するためのノウハウが1冊にまとまっている。
欲を言えば、ExpressではサポートされないModelに関する部分を、筆者のやり方でもう少し深く解説してもらうと良かった。
いずれにしろ、ほぼ全章が有益な書籍。
Node.jsの入門本としては最適でしたが…
初判から少し時間がたってしまったので、現状(2016年現在)にそぐうかはわかりません。
このレビューを書いている現在、Node.jsは0.12.5です。既に古くなった内容が何箇所かあります。でもまぁ、技術書なんて、どれもそんなもんでしょう。特にNode.jsは絶賛成長途中の言語なので、部分的な陳腐化を気にしていたら本なんて読めません。

この本がすばらしいのは、Node.jsという、非同期I/Oを持ったローカルJavascript実行環境だからこそできることを明確に書いているところです。

たとえば、ローカルファイルの操作方法、シェルコマンドの実行方法などなどです。
また、Node.jsの持つ非同期プログラミングの概念と導入についてきちんと説明していることも良い点だと思います。残念ながらStreamについては記述が弱いのですが、それが気になるくらいにスキルが上昇したら、自分でWebを見て調べることもできるようになっているでしょう。
加えて残念なのが、Node.jsの重要な要素であるexpress(Webアプリ開発ミドルウェア)について、当該書籍はver3を扱っており、現在はver4になってしまっています。この本に記載されているexpressの記述は概念を理解する程度にとどめ、実際の操作などは当該書籍で得た知識を元にしてWebを参照するのが良いと思います。
 
   
本書の内容
 
内容サンプル
 
User Voice
ほとんどのページをリファレンスのために使っているが、内容はほぼ公式リファレンスそのまま。
公式のリファレンスは日本語訳もされていて、無料で読めるので3000円以上も払ってこの本を買う価値は全く無い。
むしろ公式のリファレンスの方が一覧性もあって読みやすく、目的のモジュールのリファレンスに簡単にたどりつけるだろう。
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   

Node.js 高評価のおすすめ本 ランキング

人気 1位
発売日 2020/11/17
(4.7)
Amazon 4,070円
本書の内容
Node.jsの入門書。対象読者は、フロントエンド開発の知識はあってもサーバサイド開発は知らないエンジニアや、他言語の経験はあってもNode.jsは触ったことがないプログラマー。
本書ではターミナルのプロンプトにコマンドを入力してその反応を確認したり、簡単なスクリプトをNode.js環境で実行したりしながら、Node.jsプログラミングの基本からWebアプリケーションの開発、テスト、デプロイまでをハンズオン形式で学びます。また、コードの背景にある設計思想や、プログラムの挙動の仕組みについてもしっかり掘り下げます。
本書のゴールは、読者がNode.jsの全体像を掴み、業務レベルでのアプリケーション開発に対応可能な知識を身につけることです。  
内容サンプル
 
User Voice
 
   
人気 2位
本書の内容
Node/JavaScriptアプリの設計技法を、実際に手を動かしながら学ぶハンズオン形式の解説書。
本書では最初に、JavaScriptの大きな特徴でありながら多くの開発者にとって馴染みの薄い非同期処理(コールバックを用いた処理)についてその仕組みを詳しく説明するとともに主なデザインパターンを説明し、Node.jsの基礎を押さえます。
次に、ストリームや一般的なデザインパターンのNode.jsでの実装、Node.js専用のデザインパターンといった事柄を解説します。
最後に、ユニバーサルJavaScript、スケーラビリティ、Node.jsを使ったエンタープライズアプリの開発といったより高度なトピックを扱います。
中級以上のウェブ開発者を対象としています。バージョン11対応。  
内容サンプル
 
User Voice
Node.jsのシングルスレッド、ノンブロッキングI/Oによる独自のアーキテクチャを踏まえた実装における細かなコーディング作法からデザインパターンまでを学ぶことができる。
大規模開発のための整備されたコード設計、関数設計、クラス設計、さらには分散スケール環境でのアーキテクチャのデザインパターンまでを紹介してくれている。node.jsはv11.9.0に対応。
gitからソースコードを取得できるが、著書に記載されているソースコードだけでも処理の概要を把握できるよう配慮されているのがありがたい。
基本的に各チャプターごとにプロジェクトファイルが用意されpackage.jsonで必要関連ライブラリをバージョン指定されているので、フォルダ内でnpm install の一発で環境が揃うのはありがたい配慮だ。著書では、ライブラリの個別インストールのコマンドが表記されているが、上記を実行していれば特に必要はない。
※一部でグローバルインストールが別途必要なものあり
※redis, rabbitMQなどミドルウェアは、別途構築する必要あり
コードを追いながら、高度なアーキテクチャの技術を身に付けたい人向け。
Node.jsの中上級者向けに響く著作だと感じた。

-------------------
#注意点

8章 webpackをグローバルインストールする記載がされている> P255
バージョンを指定しないと最新版がインストールされ、著書と挙動が異なって検証ができ
なくなるので、以下のバージョンでインストールすること。(package.jsonにも記されているので確認できる。)
npm install webpack@1.12.14 -g
※package.jsonのwebpackと合わせる
他のnpmでグローバルインストールしているものは、package.jsonのバージョンに合わせたほうがいい

8章:sample12,13,14
P285 に実行コマンドにnode serverと記載されているが、コードに記載されたJSXを変換実行する必要があるので、babel-nodeまたは、babel-cliをかましてスクリプトを実行する必要がある。
例:./node_modules/babel-cli/bin/babel-node.js server

9章以降:
node-gyp系リビルド処理でpython2.7系が必要なケースもあり。
nvmで異なるnodeのバージョンが必要になるケースもあり
macで検証している場合は xcode, xcode toolを最新版にしておくこと

--------------------
#以下、内容メモ

1章:Node.jsの世界へようこそ

モジュールは小さく設計すべき
・コードを少なく
・機能を最小限
npmによってモジュールの依存地獄から解放
->パッケージが個別に依存モジュールを定義できる

ブロッキングI/O:
I/O処理は時間がかかる→サーバがブロッキングI/Oの場合、複数リクエストの場合は新たにスレッドを起こす必要がある。消費するメモリや、コンテキストスイッチのコストを考えると、効率は良くない。

ノンブロッキングI/O:
データの書き込み完了をまたずに一旦終了できる。
同一スレッドで、複数リソースを扱えるようになる。
イベントループでビジーウェイトせずに複数のI/Oを処理
並行性の扱いが単純になる。スレッドの競合、同期を考慮しなくて良い

・リアクタパターン
I/Oタスクのそれぞれにハンドラ(コールバック関数)を対応させるもの
コールバック関数を使用して、すべてのリソース処理を後回しにするようなプログラミン
グスタイル。

Node.jsのアーキテクチャ
libuv:node.jsのCライブラリで、OSに依存せず同じ手法でブロッキングI/Oを使える。
v8:GoogleによりChromeブラウザのために作られら高速効率的メモリ管理のJavaScriptエンジン
バインディング:libuvmやその他の低レベルの機能をラップし、JavaScriptで利用できる
ようにするための抽象化レイヤー
node-core:ハイレベルなNode APIを実装したJavaScriptライブラリ

2章:Node.jsの基本パターン

・コールバックパターン
同期プログラミングにおけるreturn文に相当。非同期プログラミングでは必須。
JavaScriptのクロージャを使うことで、コールバック関数内にその関数で生成された環境
を参照することができる。

関数によって同期、非同期で呼ばれるかの違いによって呼び出し元の実装も変わる。
関数内で分岐判定処理によって同期や非同期で値が返る仕様は思わぬバグを産む。
->どちらかに明示的に仕様を決める。

process.nextTick() イベントループで次まで関数の実行を遅延(先延ばし)してくれる。登録されたI/Oイベントの前に実行->nextTIck()の再帰呼び出しはI/O starvationに陥るケースがあるので注意。
setImmediate():登録されたI/Oイベントの後に実行

try catchでキャッチされない例外の補足方法
 process.on('uncaughtException',(err)=>{ //todo process.exit(1); }):

依存解決の仕組み:ロード元によて異なるモジュールのバージョンをロードする機能
循環参照の注意点:読み込む順番によって初期化されるモジュールが異なる問題が起きる

・モジュール定義におけるパターン
オブジェクト、コンストラクタ、関数のエクスポート
インスタンスのエクスポート

・オブザーバパターン
EventEmitterをつかって複数のオブザーバに対して通知を行う。
on, emit, return emitter P62
複数イベントを扱う、イベントの発生回数が予測できない場合に向いている。

コールバックと、EventEmitterを組み合わせた関数
glon(pattern, [option], callback).on('match', match => console.log(`${match}`))
コールバックは結果データを返すが、EventEmitter(`match`)で中間処理情報を通知する仕組み

3章:コールバックを用いた非同期パターン

コールバックのネストが幾つも重なる=コールバック地獄 p51
視認性が悪く、クロージャを解放し忘れるとメモリリークの原因にもなる
・クロージャを乱用しない
・if文にelseをかかず、returnでなるべく早く抜ける:ネストレベルを下げる
・コールバックを独立した関数で定義し、クロージャを使わない。
・一つの関数にネストしたコールバックを書かず、複数の関数に分割する
※クロージャ:自分を囲むスコープにある変数を参照できる関数:関数の内側の関数

逐次処理におけるコールバックの伝播
並行処理におけるコールバックの伝播

・並行処理:非同期でイベントループ内で並列数分インタリーブされ処理される。
マルチスレッドでないので特別な技術は必要ない。Nodeの強み。
完全に競合状態がないわけではない。複数タスク新しいファイルだった場合ファイル読み込み処理するケースで、複数タスクが同時に新しいファイルだと判定して、同じ処理をしてしまう場合がある。

同時実行数制限をした並行処理
キューを使った同時実行数制御

委譲:delegate

asyncライブラリを使用した逐次、並行処理、同時実行数を制御した並行処理
series:非同期逐次実行
eachSeries:配列要素を捜査して非同期逐次実行
each:並行eachSeriesからの移行に便利
eachLimit,mapLimit,parallelLimit,queue,cargo:同時実行数を制限した並行処理
前半の並行処理実装は、asyncライブラリで簡潔に置き換えられる

4章:ES2015以降の機能を使った非同期パターン

Promise:コールバックの欠点を補うために考案された。非同期処理の結果を表現するオブジェクト。callbackなどの橋渡しスタイルからの変更
Generator:functionの後ろに*を付加して宣言すれば、yieldにより処理を中断できる。
 非同期の制御フローを簡単に記述(yield, next()を活用)し、関数を一旦抜けたり、そこから再開できるようにする
coライブラリを利用したジェネレータベースの制御フロー
 async/awaitを使用した制御フローでGeneratorを使用することで複雑化した実装をシンプルにする。

5章:ストリーム

ストリームとバッファの違い
バッファ:データが全て揃ってからコールバック通知
ストリーム:データを受け取った時点で途中でもコールバック通知可能
巨大なデータも少ないリソースでやりとりできる。
ファイル転送後の解凍処理もチャンク単位で圧縮して転送し解凍することができる。
バイナリモード:チャンクの形でストリーム化する
オブジェクトモード:オブジェクトとしてデータを処理
・Readable:ソースを表現
 non-flowingモード:readableイベントにアタッチ、read()でバッファが空になるまで読み込む
 flowingモード:dataイベントにアタッチ、データがリスナーにプッシュされる
Readableストリームの実装:_read()は継承したReadable内部で呼ばれる
・Writable:データの行き先
writable.write でチャンク書き込み
writable.end で最後のチャンク書き込み
 バックプレッシャ:データが消費されるよりも速く書き込まれてしまう場合の対処
 Writableストリームの実装:_write()は継承したWritable内部で呼ばれる
・Duplex:ReadableかつWritableなストリーム、双方を継承しread(),write()を行う
・Transform:データ変換用 write -> read
・パイプを使ったストリームの接続
 unixでは、次のプログラムの入力として簡単に接続できる
echo Hello World! | sed s/World/Node.js/g
node.js -> pipe()で行う
・パイプ処理パターン
 Combinedストリーム:ストリームの合併
 ストリームのフォーク
 ストリームのマージ
 マルチプレクシングとでマルチプレクシング

6章:オブジェクト指向デザインパターンのNode.jsへの適用

・ファクトリ:
p152 模擬オブジェクトを返す(start:function{}, end:function{})
合成可能ファクトリ:ファイプラリstampit
・公開コンストラクタ
・プロキシ
データ妥当性検討、権限チェック、キャ種保存、遅延初期化など
応用:配列の仮想化
・デコレータ
・アダプタ
・ストラテジー
・ステート
 コンテクストの状態によって変化するストラテジーとして見れる
・テンプレート
具象クラスが定義された瞬時にアルゴリズムが決定される。ストラテジとの違いは、ストラテジは動的に変更が可能、テンプレートはクラスが定義された瞬間にアルゴリズムが決定する。
・ミドルウェア
 玉ねぎの皮のようにミドルウェアの層をつくり、順に層を呼び出し中心のアプリケーションのコアに到達させる。
・コマンド

7章:モジュールの接続

・シングルトンとしてモジュールを利用するパターン
 modele.exportsを活用
 require()関数呼び出し時にキャッシュされ、以降はキャッシュを返すため
->落とし穴がある。パッケージごとに異なるnode_modulesのパッケージを参照してしまう恐れあり:global変数で対応できるが、この方法は避けるべき。

・モジュール接続のためのパターン
require()でステートを持ったインスタンスへの依存をハードコードすることによる制限
 DI(依存性注入)のケース:Factoryパターンを活用して後からモジュールを指定する
 ->利点:dependencyから分離し再利用しやすくなる
  欠点:依存関係の把握が増加複雑化すると管理が大変
 サービスロケータ:DI同様、コンポーネント間の把握が難しくなる
 DIコンテナ:依存するもの以外の余計なサービスにモジュールを依存させなくできる
・プラグインの接続
 require()するだけで、プラグイン機能を付加できる実装:関数を変数に格納する手法とデコレータパターンを駆使して行う
 サービスロケータ、DIコンテナをつかった公開方法

8章:ユニバーサルJavaScript

サーバサイドとフロントエンドでのコード共有
Reactを使用したSPA(Single-Page-Application)の作成
・モジュールの共有
 UMDパターン:定型的なコードを沢山書かなければならない
 ES2015モジュール:サポートされていないブラウザに注意
・Webpackの導入
node用に作成したモジュールをブラウザ用に書き直してくれる
 ES2015で提供される機能を実装していても変換してくれる
・クロスプラットフォーム開発の基礎
 実行時コード分岐
 ビルド時コード分岐:Webpackの例
 ビルド時にモジュール置換:Webpackの例
 クロスプラットフォーム開発向けのデザインパターン
 ・ストラテジー、テンプレート:用途によって切り替え処理ができる
 ・アダプター:互換性を持たすようにアダプターで置換する
 ・プロキシ:サーバ側のモジュールをリモートプロキシで呼び出す
 ・オブザーバ:イベントを発生、受け取りのコンポーネントを抽象化
 ・DIとサービスロケータ:依存性注入時にモジュール入れ替えする
・React
サーバ内とクライアントでほぼ同じコードでのビューのレンダリングができる
 Nodeサーバでビューをレンダリングしてブラウザが受け取り表示可能=SPAを作成できる。
JSX:HTMLとDOMツリー表現の中間フォーマット的な位置付け
expressのstaticを利用してwebpackしたモジュールを読み込めるようにして、1度目はサーバでレンダリングし、以降はブラウザで再描画する仕組み
babel-cliでサーバサイドでJSX記述を残したまま、実行時変換起動させる方法
 Webサーバ(プロキシとして活用)、APIサーバとスケーラブルな構成のパターン

9章;特殊な問題を解決するためのパターン

・非同期に初期化されるもモジュールのrequire
ステートパターンを利用し実行リクエストをキューにため、非同期実行が完了してからキューのリクエストを実行する堅牢な作りの紹介
・非同期のバッチ処理とキャッシュの利用
・CPUバウンドなタスクの実行
setImmediateによるインタリーブ:cpuバウンドの処理のステップが完了するたびにイベントループに制御を戻す
マルチプロセスの利用:子プロセスへ移譲

10章:スケーラビリティとアーキテクチャ

複数プロセス利用、複数サーバ利用にしてスケールする
下記3つの観点でのスケールを考える。
 クローニング:アプリをn回クローニングして各インスタンスに1/nの処理をさせる
 サービスと機能による分割;機能、サービス、ユースケースで分割
 データパーティションによる分割:データの一部を各インスタンスが分担して担当
  水平分割、シャーディング
・クローニングと負荷分散
 モジュールcluster
 ・バージョン0.11.2以降からラウンドロビン方式の振り分け
 ・障害時の再起動(zero-downtime restart)の実装
 ・負荷分散
  ステートフルにしたいデータの共有問題
  ・共有メモリを利用した認証データの保存
  ・スティッキーな負荷分散(値判定で特定ノードへ割り振る)による特定なインスタンスへのマッピング
 ->問題点あり:インスタンスの代替が効かなくなる問題
  リバースプロキシによるスケーリング
 ・ロードバランサとして機能するリバースプロキシ
  ・URLリライト、キャッシング、SSLターミネーション
  ・nginxをロードバランサとしてバックエンドにnodeのwebサーバを稼働させたパターン
  サービスレジストリを活用し、最新の稼働サーバ情報を登録し、ロードバランサがその内容を参照するパターン
  ・nodeでの負荷分散装置の実装
  ピアツーピア負荷分散:ロードバランサの処理量に依存させない方法:その分、接続方法は複雑になる
・サービスと機能の分割
マイクロサービスアーキテクチャのパターン
 各サービスにデータ所有権があることがマイクロサービスアーキテクチャの特徴
 正しいレベルの分離を独立維持するために、データベースも分割する
 データベースを分割した分、システム全体の一貫性を維持するために、互いのデータを参照更新する多くの通信が必要になる。
 クラッシュ、バグ、互換性を破る変更をシステム全体に波及させないようにする。
 利点:
 ・再利用性向上
 ・スケールは、複数マシンに負荷分散。独立してスケール可能
 難点:
 ・管理すべきノードが増えると、統合、デプロイ、コード共有が複雑になる。
 ・APIオーケストレーション層で複数のマイクロサービスのAPIを実行し、データを集約、処理する。
 ・メッセージブローかを使ったケース;フロントエンドのリクエストを受け取ったマイクロサービスが、関連するマイクロサービスにメッセージブローカを通して処理を行う

11章;メッセージ通信と統合

分散アプリケーションを統合する手段
・共有ストレージを中央の調整器兼情報の保持器として使う。
・メッセージを使ってデータ、胃炎と、コマンドを各ノードに行き渡らせる

メッセージ通信
・非同期メッセージと送信キュー:SMSのようなもの
・ピアツーピアメッセージ通信
・ブローカを使ったメッセージ通信:プロトコル間のブリッジにも利用できる、ブローカ
が単一障害になるデメリットはある。

パブリッシュ/サブスクライブ(pub/sub)パターン
 分散オブザーバーパターンでもある
 ・ピアツーピア型Pub/Sub
 ・ブローカ型Pub/Sub
 メッセージブローカにredisを適用したチャットサーバの分散スケール
 ZeroMQを使ったピアツーピア型PubSubで分散処理するチャットサーバ
 サブスクライバに障害が起きても確実にメッセージを送信できるような永続サブスクライバの実現
 ・多くのメッセージキューシステムが採用しているプロトコル:AMQP
 ラビットMQを使用したAMQPによるチャットサーバ

パイプラインとタスク分散パターン
・ZeroMQのファンアウト/ファンインパターン
 ハッシュサムを総当たりでしてアルファベットの考えられるすべての組み合わせを照合
するシステムで実践
 ベンチレータ->ワーカー->シンク
・パイプラインとAMQPの競合コンシューマ
 競合コンシューマ;複数のコンシューマが同じキューをリッスンし、メッセージをファ
ンアウト分散する

リクエスト/リプライ・パターン
・相関識別子を使用した、リクエストとリプライの紐付けで、リクエスト順序に影響しない
実装方法

付録A:ES2015以降のJavaScriptの主要機能
let, const:変数定義
アロー関数:=> コールバック関数を簡潔化記述できる
class構文
オブジェクトリテラルの改善
MapとSet
WeakMapとWeakSet
テンプレートリテラル
etc...

以上。
よきよき
40代のプログラマーです。
ここ何年かはデータ分析のシステムの開発、運用に携わってきました。

ごく小さい、スピード重視のWebの開発、運用において、
GCP Firebase, AWS AmplifyなどmBaaSと呼ばれるサービスを採用した
案件が、まだまだ少ないもののじわじわ増えています。

それぞれのクラウドで提供しているサービス群をまとめて利用できる、
そのクラウドごとに囲い込まれたWebフレームワークというもののようです。

自分は、ここ何年かは、Webよりもバックエンドのビッグデータばかり関わってましたが、
自分が今いるチームのひとたちがFirebaseを使っているのを見て興味がでました。
mBaaSは、認証まわりは楽で、データベースまわりはつらいといった印象です。

Webでなくても、Visual Studio Codeのように、
UIの開発には、HTML + CSS + JavaScriptを使うという流れがあることもあり、
JavaScriptについては、UIの開発では必須というのはわかります。
しかし、サーバの開発はそんなにあるのか?と思っています。

ところが、mBaasでは、JavaScriptというかNode.jsでの開発、運用になるとのことで、
そちらの知識、経験がないので、まわりくどく要素技術の勉強からということで、
本書を手に取りました。

読んでみると、本書は、とにかく深いです。

1, 2章で基本を紹介して、続く残りの章で、それらの話題を
これでもかと深く説明しています。

Node.jsでの非同期については、
章が変わり、話題が変わったところで、何度も触れられています。
非同期だけでも、いくつもパターンがあります。

npmのパッケージ管理を使うと、(というか、どのプログラミング言語でもそうですが、)
依存する大量のライブラリがロードされて、
はじめぎょっとして、繰り返すうちにうんざりしますが、
このモジュールの仕組みついても、けっこう踏み込んだ説明があります。

ストリームについては、
大量のひとつづきのデータが絶え間なく次々というイメージだったので、
そんなのNode.js向きなのか?と思ったのですが、そうでもないらしい。
Webというのは、CPUバウンドではなく、IOバウンドであり、
Node.jsはもちろんIOバウンド向け。
おもえば、たしかに、今の職場の別チームが、
ログを取集する受け口のサーバとしてNode.jsをつかっていました。
なるほど。

ほかにも、なつかしのGoFのデザインパターンを使った例や、
運用面でのスケーラビリティのはなしもあり、
深さにも関わらず、幅広い話題について述べられています。

ただ、まー、オライリーの本らしい、わかりづらさもあります。
書いてある内容は緻密で興味深い。
しかし、自分が経験不足なことを気づかせてくれるものの、
体験させてくれるわけではない。

トラブルも含めて、何百時間か経験を積んで、断片的な知識も蓄えていると、
価値が跳ね上がる本だと思います。

自分は、まだまだ経験が足りませんが、
Node.jsの経験が多めのひとには、
よりおもしろく読める本ではないかと思います。
 
   
人気 3位
本書の内容
Node.jsの入門者向け書籍です。2018/8に出た「Node.js超入門 第2版」の改訂版です。改訂内容は新バージョン14対応、データベースはSQLite3、ORMはSequelizeに変更しています。CSS関連はBootstrap利用、Expressは最初からGeneratorを使う形で解説しています。
対象読者はJavaScriptの入門書を読み終えた層ですが、その経験がない層も読めるよう配慮し巻末にこの本を読むのに必要なJavaScriptの知識を最低限解説しています。Node.js未経験者から、既存の入門書などで挫折した人までより多くの人がついていけるよう、手取り足取り教える内容です。  
内容サンプル
 
User Voice
仕事で必要になりそうだと言う事で購入しました。
内容もわかりやすく買って良かったと思いました!
残念な事に担当が変更となり勉強を継続する必要がなくなってしまいました。
超入門と書かれているので入門書のように見えますが入門書ではありません。
いわゆる入門書部分は一番最後にJavascript超入門として20ページほどありますが、このページ数では全然足りません。

アプリケーションVSC(Visual Studio Code)を利用してサーバー側のプログラムを書いてそれをブラウザで表示、操作してアプリの仕組みを覚えるための書籍です。
サーバーとクライアントのデータのやりとりの説明は図も付いていて非常にわかりやすく出来ています。

各サンプル毎にソースコードも記載されていますがソースコードに関する説明はありません。
あくまでアプリの動作を説明しているだけになります。
視点は変わっていますが必要な人も多いでしょう。

【書籍を読む前に必要な知識】
Javascriptを理解していること
HTMLを理解していること
データベースを理解していること

【この書籍を読むことで得られる知識】
サーバークライアントデータのやりとりの仕組み
フレームワークExpressの使い方を少々
データベースの使い方
データベースを使ったアプリの作成

と必要な知識と得られる知識の間が狭すぎるニッチな所を攻めてる書籍と言えるでしょう。
ソースコードのミスが多く気になった

- スペース忘れ
- 文末に謎のアルファベットd
- htmlタグ閉じ忘れ
など

内容は駆け足で初心者には難しいのではと感じた
実践の部分では他FWとの違いや、nodeを使うメリットなどもう少し教えて欲しかった
 
   
人気 4位
本書の内容

JavaScript(ES2015以降)をフル活用して
柔軟性に富んだWebアプリを作成しよう!
フロントエンドもバックエンドも
JavaScriptのスキルを120%活用する

本書は
「Get Programming with Node.js」
Jonathan Wexler, Manning Publications Co, 2019
の翻訳書です。

アプリケーションを構築できるプラットフォームは数多く存在します。Node.jsは、そのひとつですが、Webアプリケーション(インターネットを介してリクエストを処理し、応答として処理したデータとビューを返すアプリケーション)の構築に適している点が最大の特徴です。

本書は、純粋にJavaScript(ECMAScript 2015以降)だけを使ってアプリケーションを構築する手法と、その手立てを提供します。そのため、JavaScriptの機能と使い所の極意を否が応でも学ぶことになります。

また同時に、本書はWeb開発への導入編となるでしょう。Webアプリケーションを構築したことがないとか、内部的な仕組みを完全に理解していなかったという人は、本書で、その全貌を学ぶことができます。

本書の目標は、サンプルやコードを通じて、これらのコンセプトを説明することであり、サンプルを使い・変更して、読者が自分のアプリケーションを作れるようにすることにあります。

【本書のポイント】
・9つのユニットと38の短い章構成
・節ごとの理解度チェック
・章ごとの練習問題
・豊富な補足事項とポイント解説

【読者が得られること】
・Node.jsを使ったWebアプリケーション構築の基礎知識
・Node.jsによる実用的なプログラミング能力
・ECMAScript 2015以降の新しい機能を使ったプログラミング手法

※本電子書籍は同名出版物を底本として作成しました。記載内容は印刷出版当時のものです。
※印刷出版再現のため電子書籍としては不要な情報を含んでいる場合があります。
※印刷出版とは異なる表記・表現の場合があります。予めご了承ください。
※プレビューにてお手持ちの電子端末での表示状態をご確認の上、商品をお買い求めください。

 
内容サンプル
 
User Voice
HTML/CSS/JavaScript(フレームワーク含む)で何回かアプリや機能を実装したことのある人が、nodeが裏でやってくれていることについて理解し直すために読むのには良い書籍だと思います。

自分自身、これまでnodeに関しては良くわからないままnode_moduleを導入したり、スクレイピングのnodeライブラリを導入したりしていました。完全なる雰囲気でやっており、そのおかげでExpress.jsを使ったHerokuでのAPIの立て方がわからず本書にたどり着いた次第です。

この書籍を通じて、何が起こっているのかを少しずつソースコードを発展させながらキャッチアップできたので曖昧だったところがずいぶん減ったと思います。今まで断片的だった知識が線に繋がる感覚です。
(curlコマンドについて一緒に学べたのも良かった)

気になる点としては"Node.jsの入門書"であって"プログラミング初学者の入門書"ではない点です。

初心者であればことあるごとに丸々コードを貼っておいて欲しいのですが文章のみで「○○.jsを作成します」のように手順が書かれており、初心者だとわからない人が絶対にいるよな。と思える類の端折った解説が多かったです。私も途中途中、Gitのソースコードと照らし合わせながら進める必要がありました。

また、文章に違和感を覚える人もいて当然だと思います。私の場合は海外の記事を翻訳しながらキャッチアップした経験があるため言わんとすることがすぐにわかりますが、初心者もしくは英語で情報収集の経験がない方であれば難しいと感じる気持ちはわかります。日本人からするとどうしても独特な文章ですので。

さらに、パッケージのバージョン違いでうまく動かなかったりした際に、パッケージが原因なのか自分のコードが原因なのかを自分で考えたりしながらエラーを捌く必要もあります(例えば、lesson_10の内容は私のejsの3vでは動きませんでした。Gitのソースのバージョンに合わせることで動いた。基本的にGitのソースコードに合わせてやれよという話ではありますが...)
package.jsonに対して少しは慣れがある人でないとつまづくポイントかなと思います。

上記の理由から初心者向きではないし、初心者であればまずは動画の教材などでとにかく手を動かしてまずは雰囲気で動かし方を覚えた方が効率が良いかと思います(サーバーサイドの知識などがあればまた別ですが)。

とは言え、nodeに関する良さげな書籍が見つからなくて困っていたところ本書でキャッチアップできて良かったです。サーバーとのやりとりをnodeで体系立て理解できる書籍はそんなにないと思います(まだ本書の途中までしか終わってませんが)
Nodejs 本として一番良かった。
大抵の枝葉技術はどうせ海外のGitHubなどの公式リファレンスを読むことになるので、Web サーバーの組み立て方を順序よく最初のコードを繰り返し型で改良しながら学べるので、独学志向で最初しゃ簡単に、慣れたら高度に組み込みたい人にはヒントになる情報が多い。

批判レビューワーは恐らく冒頭に紹介されている著者のGitHubもみていないとおもわれる。

この手の技術書のサンプルコードはあまりに初歩的だったり極端に複雑なお手本をネット掲載するものも少なくないが、本書は同じコードをだんだん改良していく方式でそのレッスンごとのソースを収録している。
そのため理解度が深まるにつれて同じコードの改良結果を本の解説つきでソースを見れるので効率よく学べる。

ただし、nodejs でファイルの読み書き、javascript の最低限の構文知識、GitHubで自力で何度か英文リファレンスを読んで動かす経験がないと、本書の書いている意味そのものが理解できない。
英文リファレンスといっても最近はGoogle翻訳と英文を一緒に読めば辞書使わずにたいていは意味が理解できるし、本書を理解するレベルに至るハードルはかなり低い。

本書は本のタイトルが不適切で入門Express でサーバー構築である。
Node.js自体を学ぶにはかなり基本的な説明がないので言語自体の入門書ではない。
そもそもNode.jsとは何なのか、どういった働きをするのかがよく理解できました。

翻訳がひどいというレビューが散見されますが、そんなことはありません。
プログラミングやWebアプリケーションの仕組みがわかっている方であれば問題ないと思います。

最終的に作成するサンプルアプリケーションは、基本的なMVC・API作成・JWTを利用したAuthentication・WebSocketを利用したチャット機能などがあります。
 
   
人気 5位
本書の内容
※この商品は固定レイアウト型の電子書籍です。
※この商品はタブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
※お使いの端末で無料サンプルをお試しいただいた上でのご購入をお願いいたします。

※本書内容はカラーで制作されているため、カラー表示可能な端末での閲覧を推奨いたします。


これ1冊で「Webページ制作からサーバーの開発」までわかる!

日本初のMac専門月刊誌「Mac+」の頃から主にMac系雑誌に寄稿する。ハイパーカードの登場により「ビギナーのためのプログラミング」に開眼。以降、Mac、Windows、Web、Android、iPhoneとあらゆるプラットフォームのプログラミングビギナーに向けた書籍を執筆し続ける。●目次
Chapter 1 Webプログラミングを始めよう
Chapter 2 HTML/CSSを学ぼう
Chapter 3 JavaScriptを学ぼう
Chapter 4 Node.jsを学ぼう
Chapter 5 Expressフレームワークを学ぼう
Chapter 6 データベースを使おう
Chapter 7 本格Webアプリを作ろう



●著者
掌田 津耶乃(しょうだ・つやの)
日本初のMac専門月刊誌「Mac+」の頃から主にMac系雑誌に寄稿する。ハイパーカードの登場により「ビギナーのためのプログラミング」に開眼。以降、Mac、Windows、Web、Android、iPhoneとあらゆるプラットフォームのプログラミングビギナーに向けた書籍を執筆し続ける。  
内容サンプル
 
User Voice
わかりにくいが、何となくこう書けば動くという雰囲気がわかる
 
   
人気 6位
本書の内容
あなたがWebアプリケーションの開発をはじめたいなら、Node.jsを使って、JavaScriptから学習をはじめることをおすすめします。JavaScriptはWebページだけでなく、サーバー側の本格的な開発にも多用されています。本書は、Node.jsを使ってWebアプリケーション開発の基本から、Expressフレームワークを使った開発まで、自分の手を動かしながらおぼえる入門書です。Node.js Ver.10対応。

※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。  
内容サンプル
 
User Voice
Node.jsを全く知らないので読んだ。初心者本としては最適だと思う。Node.js+Expressの本。
他の本を読んだり学んだ経験がある人には物足りないと感じるでしょうけど。
書いてあることは、ほんとうに基礎の基礎。
本にも書かれているが、実際にアプリを作るようになるには、この本でどんなもんかわかった後の自分の頑張り次第。
誤字はちょこちょこあるが、致命的なものは無い。
Javascriptの入門ページが付録ページにあるが、不要だと思った。
かわりにVisualStudioCodeのショートカットや、デバッグについて書いてほしかった。
javascriptのせいかVSCodeのせいか、エラーが出たときにメッセージを見てもよくわからないのが不便だった。
2018年度版なので情報も新しい。
node.jsのことをよく知らない人向けに解説されていて、独学で勉強するのに良い本だとお思う。
初めてWeb開発をするような人にオススメできる1冊。
Node.jsだけでなくWebに関する基礎知識も丁寧に解説されており、わかりやすかった。

ただし、下記の点には注意が必要
・誤記が多いので、正誤表をこまめに確認しなければならない
・サンプルコードが変更部分を太字にするといった工夫がされていないので微妙に分かりづらい
・ダウンロード出来るサンプルのファイルがtxtファイル1枚にまとめられているので見辛い

また、出版年の関係で一部古いJavaScriptの書き方がされているため、近くにJavaScriptについて
聞けるような人がいればなお良いと思われる
 
   
人気 7位
本書の内容
 
内容サンプル
 
User Voice
 
   

Copyrights hogehoge