LogoMark.png

Node.js の変更点


#author("2021-06-17T09:48:00+09:00;2021-06-17T09:47:40+09:00","default:inoue.ko","inoue.ko")
*Node.js
https://nodejs.org/ja/
~

Node.js は 2009年にリリースされた、サーバーサイド JavaScript アプリケーションのプラットフォームです。Web開発をサポートする多くのツールが Node.js で実装されてきたことから、今日ではフロントエンド開発にも Node.js を使うことが多くなりました。クライアント・サーバーともにプログラムを JavaScript で組めるということから、JavaScript の需要の高まりにも影響しています。
 .js と表記することから JSライブラリのひとつ・・のような印象を与えますが、「JavaScript 環境」というまったくの別物です。
 
~

***CONTENTS
#contents2_1

~


**概要
***これは何?
Node.js は、端的に言うと ''JavaScript の環境''です。一般にJavaScript は、ブラウザがそれを解釈して実行するものでしたが、Node.js という環境があれば、クライアントマシンやサーバーマシンに限らず、様々なプログラムを動かすことが可能になります。

サーバーサイドの JavaScript という説明もできますが、Apacheサーバーの存在を前提に動く PHP とは様子が異なります。Node.js の環境があれば、例えば、ローカルPCの任意のディレクトリをパッケージの置き場として、そこに JavaScript で書いたサーバープログラムを設置して、Webアプリケーションの開発をすることができます。

JavaScript のプログラマにとっては画期的なアイデアであり、現に多くのWebアプリケーションが Node.js の存在を前提に制作されています。

-[[GoogleTrends Node.js>https://trends.google.com/trends/explore?date=all&geo=US&q=%2Fm%2F0bbxf89]]
-Node.js でできること
--Webサイト(Webサーバーをセットで)の制作
--Webアプリケーションの開発
--スマホアプリ、ゲームアプリの開発
--WebAPIの開発

~

***Node.jsの特徴
-シングルスレッド
Node.jsは「同時に一つのことしかできない」シングルスレッドです。Apacheなどのウェブサーバはマルチスレッドなので同時処理が可能。そのメリットは大きいのですが、逆に大量のアクセスがあるとリソースがなくなってしまう問題があり、この臨界点が約10,000件です(C10K問題)。Node.js はこの問題を回避できる点が強みです。
-ノンブロッキングI/O
一般的なシングルスレッドでは、ひとつの処理が終わらなければ次の処理に入ることができず、「待ち時間」が長いと処理効率が下がってしまうのですが、ノンブロッキングI/O というのは、待ち時間の間に次の処理を進める仕組みなので、マルチでなくとも大量のデータ処理が可能になります。
-イベントループ処理
Node.jsはイベントループを採用しています。そのため、複数のリクエストやレスポンスなどの処理は順番にイベントループで処理されていきます。
-Google V8 JavaScript Engine
Node.js は Googleが開発した Google V8 JavaScript Engine を使用して、高速処理を実現しています。
-フロントエンド / バックエンド とも JavaScriptで書ける
これまで JavaScript をバッックエンド(サーバーサイド)で使用することはできませんでしたが、Node.js の登場でそれが可能になりました。もちろん、簡単なWebアプリケーションをローカルで動かすのあれば、すべて Node.js で解決できます。
~
~


**インストール

***Mac へのインストール
有名な存在となり、インストールも簡単にできるようになりました。

-以下からインストールパッケージをDLしてインストール。
https://nodejs.org/ja/

-Node.js のバージョン確認
インストール後は、[[ターミナル>Terminal]]から以下のコマンドでバージョンが確認できればOKです。
 $ node -v
 v11.6.0

-npm のバージョン確認
パッケージマネージャーである npm のバージョンも、以下で確認できます。
 $ npm -v
 6.10.3

~


***MEMO|運用サーバー CentOSへのインストール
完全に個人的なメモです。
-バージョン確認
 # cat /etc/redhat-release
 CentOS Linux release 7.2.1511 (Core) 
-Node.jsをインストールするのに必要なパッケージをインストール
 # sudo yum install -y gcc-c++ make
-Node.jsをインストール
 # sudo yum install -y nodejs
-動作確認
 # node -v
 v6.14.3
~
~

**使ってみる

***前提|Terminal を使う
Node.js は、[[Terminal]] から CUI インターフェイスで作業します。 それ何?という方は、まずは [[Terminal]] のページをご確認下さい。

Node.js には、[[Python]]と同様に2つの利用方法があります。
-スクリプト環境を起動してインタラクティブ(対話的)に使う
-.js ファイルを作成して、これを node コマンドで実行する

以下、それぞれ概説します。
~

***インタラクティブな環境で試す
はじめに、対話的に使う方法から紹介します(Terminal の利用です)。

-node.js を起動します。
 $ node
 >

-コンソールに "Hello Node!" と表示してみます。console.log は JavaScript でおなじみのもので、ターミナルの画面に引数部分を表示します。
 >console.log("Hello Node.js!");
 Hello Node!
 undefined
 >
undefined というメッセージは「関数に戻り値がありません」という意味で、ここでは気にしなくて大丈夫です。

-同様に、以下のような基本的な動作もご確認ください。
 > a=10;
 10
 > b=15;
 15
 > console.log(a+b);
 25
 undefined
 > var f = (x) => x * x;
 [Function]
 > f(10);
 100

-対話を終了するには .exit です。
 > .exit
 $
~

***.js ファイルを作って動かす
カレントディレクトリに sample.js というファイルを作成します。

-エディタ(Atom等)で、以下の1行を入力して sample.js という名前でカレントディレクトリに保存して下さい。
 console.log("Hello Node.js!");

-ターミナルから以下のように入力すると、sample.js が動きます。
 $ node sample.js
 Hello Node.js! ← これがプログラムの動作の結果です。
~

''付記:私はどこ?''
Terminal で作業していると、今どこ?がわからなくなることがあります。
以下、カレントディレクトリの確認方法です。
 $ pwd
 /Users/XXXX
これは、Usersディレクトリの中の XXXX という場所がカレントディレクトリであることを意味します。普通にターミナルを起動した状態であれば、XXXX の部分はおそらく、あなたのログイン名になっているかと思います。これはFinder(GUI) で見ると、あなたの ホームディレクトリを意味していて、おそらく他にドキュメントやダウンロード、ピクチャ、ミュージックといったフォルダが見えると思います。 
 pwd の返答が /Users/XXXX/Desktop/NodeSample という場合は、デスクトップ上の NodeSample というフォルダがカレントディレクトリです。

~
~

**APPENDIX
***関連ページ
-[[Node.js/npm]]
-[[Node.js/Sample]]
-[[Node.js/TemplateEngine]]
-[[Node.js/Framework]]

~
~

**旧記事:Node.js のインストール|Mac
&color(red){記事のアーカイブです。時代が進んで話が簡単になったので、以下は読まない方がいいです。};

Node.js をインストールするには、パッケージ管理ツールの nodebrew が必要で、そのためには、Homebrew のインストールが必要です。
以下、順にインストールします。

***Homebrew のインストール
Homebrew は、macOS用のパッケージマネージャですが、標準では入っていませんので、まずはこれをインストールします。

-以下のサイトの先頭にあるスクリプトをターミナルから入力
https://brew.sh/index_ja.html
 $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

-以下のコマンドで、バージョンが表示されればOK
 $ brew -v
 Homebrew 1.8.6
~

***nodebrew のインストール
-以下のコマンドでインストール
 $ brew install nodebrew

-以下のコマンドで、バージョンが表示されればOK
 $ nodebrew -v
~

***node.js のインストール

-バージョン候補を確認
 $ nodebrew ls-remote
 > ずらりと表示されます。

-最新を選んでインストール
 $ nodebrew install-binary v11.6.0
注)ファイルが作れない・・的なエラーが出た場合は、以下のようにディレクトリを作成してから再度お試しください。
 $ mkdir -p ~/.nodebrew/src

-状況確認
以下のコマンドで、インストールされたバージョンと、実際に動いているバージョンが表示されます。
 $ nodebrew list
 v10.0.0
 v11.6.0
 current: v11.6.0

-パスを通す
インストールしただけでは、ホームからコマンドが通りません。node.js のある場所にパスを通します。
 $ echo 'export PATH=$PATH:/Users/xxxxx/.nodebrew/current/bin' >> ~/.bashrc
 xxxxx の部分は User の ホームディレクトリ名
''環境変数を書き換えたので、Macの再起動が必要です''

-動作確認
以下のコマンドでバージョンが表示されればOKです。
 $ node -v
 v11.6.0

-参考:Node.js の動作バージョンを選択
以下のようにすると、別バージョンをカレントにすることができます。
 $ nodebrew use v10.0.0
 $ nodebrew list
 v10.0.0
 v11.6.0
 current: v10.0.0

~

~