Node.jsでノンブロッキングなコードを書くべき理由2019-01-09Node.jsでノンブロッキングなコードを書くべき理由node.jsNode.jsのロゴNode.jsで「イベントループをブロックするコードを書いてはだめで、ノンブロッキングなコードを書かないといけない」とかよく言われます。Node.jsを用いて実際に開発をしている人にとっては至極当然のことですが、なぜノンブロッキングなコードを書かないといけないのか、というのをもう一度まとめてみます。ブロッキングなコードの例fsモジュールのreadFileSyncはブロッキングな関数の最たる例です。dataを使った操作とても理解しやすいのですが、「こういうことはやってはいけません」とよく言われます。ノンブロッキングなコードの例fs.readFileはfs.readFileSyncのノンブロッキング版です(fs.readFileSyncがfs.readFileのブロッキング版と言ったほうがいいのかもしれないですが...)。dataを用いた操作});なぜだめなのかNode.jsにおいて、ユーザー(開発者)が書いたJavaScriptの処理は基本的に一つのスレッド(メインスレッド)の中で処理されます。メインスレッドではイベントループが走っています。基本的に、一つのスレッドの中では同時に一つの処理(関数)しか実行できません。実行中(ファイル読み込み待ち中)は、他の処理が何もできません。実行中はレスポンスを返すことができないのです。場合はそうではありません。メインスレッドで実行されます。よって、メインスレッドはファイルの読み込み待ちの間も他の処理をすることができます。ファイルのI/Oは上のようにメインスレッド以外のスレッドで処理をするのですが、ネットワークI/Oの場合は他のスレッドを用いない処理も多いです。存在するくらいなので、ブロッキングなコードを書いてもいいときは存在します。サーバーアプリケーションだとしてもです。用いて他ファイルから利用(require)したいとします。いったときにこういったことはできません。ブロッキングな操作を用いれば解決します。いった場合が、ブロッキングなコードを書いてよい場合です。ret;};もちろん、このコードはブロッキングな関数です。みたいなことをするとイベントループはブロックされてしまいます。いうときは(workerを使うか、C++のアドオンを使うかなどして)別スレッドを立てて処理するようにしないといけません。passport.jsで1分でbasic認証を実装するpassport.jsを用いると、expressでbasic認証が簡単にできます。...2019-03-03ウェブ開発でNode.jsを採用するメリット・デメリットウェブ開発においてある程度の地位を築いた感のあるNode.jsです...2019-02-13Express/Node.jsでTypeScriptを使ってみる最近、バックエンド開発でNode.jsを用いています。(1)リンクホームページfeedレビューのまとめスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。