Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8829

入門者のためのNode.js関連用語の意味と体系化

$
0
0

公式ドキュメントやQiitaの解説は入門者には意味不明だったので、翻訳するための知識が必要と思ってここにまとめておく。

関連記事
入門者のためのNode.js関連用語の意味と体系化
What's "Git" ?
What's "nvm" ?
What's "Node.js" ?
What's "npm" ?
What's "React" ?
What's "Next.js" ?

基礎知識がないと記憶が定着しない

まず、こんな記事をまとめる必要性を感じたキッカケについて。知識も経験を触りだけの初心者なりに公式チュートリアルを読みながら自分のサイトをNext.jsで再構築してみようと試みたところ、ある程度まではチュートリアルに言われた通りにやることは可能だったが、次第に「そのコードを書く意味は何?」という疑問が1ステップに1つついてくるようになり、疑問が山積みになったあたりで知識体系が完全崩壊し、学んできたことが記憶に定着しないという事態に陥った。つまり知識が蓄積されず仕舞いに終わったと言うことで、それならば今学習していることの知識が定着しないのであれば、さらにその下層の知識体系から構築する必要があると考えた。よって、Next.jsの前にNode.js、Node.jsの前にWEBアプリのアーキテクチャなどの基礎知識、というように疑問にぶち当たるたびに下層知識に学習をシフトしていった結果、とりあえず用語の意味の理解と体系化が必要だという結論に至った。

参考文献
Node.jsの実行モデルを理解するために必要な前提知識を説明していく

以下は、上記の参考文献を初心者なりに再解釈して書き直した感じの内容となっている。

システムコール

プログラミング言語にはファイルを扱う機能がある。ファイル管理はOSの仕事なので、プログラムでファイルを扱う際にはOSに処理を渡す必要がある。この流れをシステムコールという。システムコールはOSによって異なるが、POSIXに準拠したOSにおいてはファイルディスクリプタによってファイルにアクセスする基本的なシステムコールが用意されている。

-open:ファイルを開く
-read:ファイルから読み込む
-write:ファイルに書き込む
-close:ファイルを閉じる

POSIX

Porable Operationing System Interfaceの略で、UNIXの標準規格のファイル管理システム。

同期・非同期

同期処理では、呼び出し側が処理を呼び出すと処理が終わるまで返ってこない。例えば、ファイル読み込みであればファイルの内容を読み取るまで返ってこない。

非同期処理では、処理を呼び出したら処理が終わる前に返ってくる。通常のファイル読み込みでは読み込み結果を格納するメモリ領域を渡すが、非同期の場合は呼び出し直後に結果を参照しても値が入っている保証はない。

非同期処理のメリットは、スループットの向上にある。スループットは一定時間単位で処理できる量の評価基準。同期処理では一つの処理が完了するまでメモリ要領を占有するため先着順の処理がメモリを埋め尽くして他の処理ができなくなるが、非同期処理ではCPUが処理を呼び出しはするがメモリは開け渡さずDMAを利用するためCPUが他の処理に着手することができる。その結果、CPUは先着順のタスクにメモリを占有されることなく、より多くのタスクに着手することができ、スループットの向上につながる。

用語意味
RAMRamdom Access Memoryの略で、自由なアクセス可能な主記憶装置のこと。CPUが処理を行う際の作業台のようなメモリでなので頻繁にデータが書き換えられ、電源が切れると作業に使用していた一時データも消去される。
ROMRead Only Memoryの略で、書き込み不可・読み出し専用、または単に内蔵ストレージおよび外付けストレージを指す補助記憶装置のこと。
CPUCentral Processing Unitの略で、記憶装置上にあるプログラムと呼ばれる命令列を順に読み込んで解釈・実行することでじょうほうの加工を行う中央処理装置。
I/OCPUや主記憶装置などの機器やシステムに外部からデータや信号を入力したり、外部に出力するための回路、装置、ソフトウェアのこと。入力装置としてはキーボード、マウス、タッチパネルなど、出力装置としてはディスプレイ、スピーカー、モーターなどがある。
DMADirect Memory Accessの略で、CPUを介さないデータ転送を実現する設計思想のこと。本来ならCPUが処理するデータ転送を引き受けることで、CPUは他のタスクに要領を割くことができる。

参考文献
DMAのメリットって何?(2/3)

ブロッキング・ノンブロッキング

Node.jsではノンブロッキングI/Oと呼ばれ、

用語意味
ブロッキング先着のIO処理が完了するまで待ち時間が発生する性質
ノンブロッキングIO処理に待ち時間が発生すると関数から返る性質。

簡単に言えば、処理が止まらない性質。

処理が止まりそうな場合はエラーを返してプログラムが完結しないように回避することで処理し続けることができる。
同期IO処理が終わるまでブロックする性質
非同期IO処理を別スレッドに渡す性質。

ノンブロッキングによって実現できる処理の仕方。

ある関数が呼び出されたとき、戻り値として本来渡したい結果は返さず、関数を終了させて呼び出し元に戻し、後で本来渡したかった値を返せる状態になったときにその値を通知する仕組み。
比較類似性
同期とブロッキングほぼ同じ
非同期とノンブロッキング

参考文献
非同期とノンブロッキングとあと何か
非同期処理ってどういうこと?JavaScriptで一から学ぶ

ソケット

用語意味
socket
bind
listen
accept

Node.jsの非同期処理

非同期処理ではIO処理の待ち時間ができないようにするが、必要としているのはIO処理の結果。別の処理をしつつ、結果が出たらそれを受け取ると言う処理はどうやっているか。正しい順序で処理が行われるようにしなくてはならない。

よそに依頼した処理がいつ終わるかは不明。処理完了は依頼された側しか分からないため、依頼した側に通知する仕組みが必要。

Promise

非同期処理を実現するためのオブジェクト

  • 関数の結果としてreturnできる
  • メソッドを持っている
  • 変数に格納できる

async/await

Promise のシンタックスシュガー

参考文献
Node.js 非同期処理・超入門 -- Promiseとasync/await

UML

UMLとは「Unified Modeling Language」の略で「統一モデリング言語」の意。分析、設計、実装のオブジェクト指向開発に用いられるモデリング手法。

UML図とは、ソフトウェアシステムの成果物を記述、視覚化、構築、文書化するために使用される国際的な業界標準のグラフィカル表記法。

参考文献
初心者が押さえておくべきのUML入門知識


Viewing all articles
Browse latest Browse all 8829

Trending Articles