初心者がNode.jsを使う(´･ω･`)

#この記事について
`対象`
対象：IT初心者「しょぼん君」![image.png](https://qiita-image-store.s3.amazonaws.com/0/147613/4f05d4db-a3f1-26b2-811d-a1fd459a9067.png)
`説明`
▶︎ 初心者向け、イメージを掴むキッカケになることが目的の記事
▶︎ 砕いた理解で、一部正確ではない場合があります。

`しょぼん君のぼやき`
<font color="DeepSkyBlue">しょぼん君：</font>![image.png](https://qiita-image-store.s3.amazonaws.com/0/147613/4f05d4db-a3f1-26b2-811d-a1fd459a9067.png)『サーバーどーん！ウェブページばーん！ってしたい。』

#Node.jsとは
Node.jsはサーバーサイドのJavaScript実行環境です。


![image.png](https://qiita-image-store.s3.amazonaws.com/0/147613/25dd1ddb-3b03-02c1-2a63-5e503cab3898.png)

<font color="DeepSkyBlue">しょぼん君：</font>![image.png](https://qiita-image-store.s3.amazonaws.com/0/147613/4f05d4db-a3f1-26b2-811d-a1fd459a9067.png)『JavaScriptで書いたコードでサーバー側の処理が動いちゃうんだね。』


#Node.jsのインストール と バージョン管理

導入方法は色々あるかと思いますが、今回は以下3ステップです。

1.Homebrewのインストール（Mac用のパッケージマネージャ）
2.Homebrew で nodebrewのインストール（Node.jsのバージョン管理ツール）
3.nodebrew で Node.jsのインストール


####1.Homebrewのインストール（Mac用のパッケージマネージャー）

```インストール.
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```


```バージョン確認.
$ brew -v
```

####2.nodebrewのインストール（Node.jsのバージョン管理ツール）

```インストール.
$ brew install nodebrew
```

```バージョン確認.
$ nodebrew -v
```

バージョン確認が出来ない。そんな時は、.bash_profile等にパスを追加してみて下さい。

    
```パスの追加.
$ export PATH=$HOME/.nodebrew/current/bin:$PATH
$ source ~/.bash_profile
```

今回の本質ではありませんが、パスの追加について気になる方は以下で記事を書いているので、よければ参照して下さい。
[▶︎ 初心者がパスを通す(´･ω･`)](https://qiita.com/Pana/items/7a30f29091a6f8198f43)



####3.Node.jsのインストール

```最新版インストール.
$ nodebrew install-binary latest
```

※任意のバージョンをインストールすることも可能です。

```ダンロード可能なバージョン一覧を表示.
$ nodebrew ls-remote
```
```バージョンを指定してインストール.
$ nodebrew install-binary {version}
```
```使いたいバージョンを有効化する.
$ nodebrew use {version}
```

<font color="DeepSkyBlue">しょぼん君：</font>![image.png](https://qiita-image-store.s3.amazonaws.com/0/147613/4f05d4db-a3f1-26b2-811d-a1fd459a9067.png)『Node.jsはバージョンが違うと動かないこともあるらしいな。人のコードで実行することもあるだろうし管理できると便利そうだね』


#Node.jsでJavaScriptファイルを実行してみよう

hello.js（JavaScriptのファイル）を作成
※console.log は標準出力に文字列を出力するJavaScriptのコマンドです。

```hello.js
console.log("hello");
```

```実行コマンド.
$ node hello.js
```


<font color="DeepSkyBlue">しょぼん君：</font>![image.png](https://qiita-image-store.s3.amazonaws.com/0/147613/4f05d4db-a3f1-26b2-811d-a1fd459a9067.png)『Node.js で JavaScriptファイルを実行できることを確認できたね。』


#Node.jsのモジュール
Node.js はインストールした時点で使える基本モジュールが用意されています。

モジュールは便利道具箱を沢山持ってるすごいヤツです。モジュール内の便利道具箱（オブジェクト）の便利道具（メソッド）を利用するには、require関数を使用して読み込む必要があります。

<font color="DeepSkyBlue">しょぼん君：</font>![image.png](https://qiita-image-store.s3.amazonaws.com/0/147613/4f05d4db-a3f1-26b2-811d-a1fd459a9067.png)『ドラ○えもんがモジュールで、ポケットがオブジェクト、秘密道具はメソッド。ん、でもドラ○えもんとポケットって...(ry』

よしたまえ、ドラ○えもんの悪口はそこまでだ。


#Node.jsでWebサーバーを立ててみよう

今回は、以下のモジュールを使ってみます。
・httpモジュール（通信系の便利ツールをまとめたもの）

コード内でやることは以下３ステップ。
①. httpモジュールを読み込む
②. httpから、サーバーのオブジェクトを作る
③. サーバーオブジェクトを待ち受け状態にする

```server.js

//①
/* requireでhttpオブジェクトを読み込む*/
var http = require('http');

//②
/* httpオブジェクトのcreateServerメソッドを使って、変数「server」を「http.server」オブジェクトとする。*/
var server = http.createServer(
  function (request, response) {
    response.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
    response.write('<h1>ウェブページばーん！</h1>');
    response.end();
  });

//③
/* http.serverオブジェクトのlistenメソッドを呼び出して、ポートを指定し待ち受け状態にしている。 */
server.listen(3000);

console.log('サーバーどーん！');
```


<font color="DeepSkyBlue">しょぼん君：</font>![image.png](https://qiita-image-store.s3.amazonaws.com/0/147613/4f05d4db-a3f1-26b2-811d-a1fd459a9067.png)『秘密道具 http.createServer によって変数はserverは「http.serverオブジェクト」となったのだった・・・』


```実行コマンド.
$ node server.js
```

以下URLにアクセスをして確認してみましょう。
http://127.0.0.1:3000

<font color="DeepSkyBlue">しょぼん君：</font>![image.png](https://qiita-image-store.s3.amazonaws.com/0/147613/4f05d4db-a3f1-26b2-811d-a1fd459a9067.png)『サーバーどーん！ウェブページばーん！』