Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

アプリエンジニアがNode.jsに入門してみる(概念理解、導入、HelloWorldまで)

More than 1 year has passed since last update.

背景と目的

エラー監視にNode.jsが使用されていたからです。私の所属するチームではアプリで発生したエラーをslackに通知する形でエラー監視を行なっているんですが、その実現にNode.jsを使用していました。今後通知するエラーの条件変更などを行う際にNode.jsとサーバサイドの知識が必要になるので、Node.jsの基本的な使い方と導入方法について理解しようと思いました。
じゃあ早速中身に入っていきましょう!!

1.Node.jsとは?

Node.js公式サイト
公式では以下のように説明されています。

Node.js® は、Chrome の V8 JavaScript エンジン で動作する JavaScript 環境です。

わけがわかりませんでした。
Node.jsとは何かを理解するより先に、Node.jsで何ができるのかを調べてみます。
こちらのサイトが分かりやすかったです。
フロントエンドエンジニアにおけるNode.jsのススメ

1-1.Node.jsでできること

一言で言えばサーバサイドプログラムの作成でした。
サーバサイドとはサーバーの内部で動く処理のことで、フロントからの指示を受けてDB依存の処理やフロントで行うのに適していない複雑な処理を行うプログラムのことを指します。JavaScriptはフロントエンドの言語として長く使用されてきましたが、これをサーバサイドでも使用できるようにした実行環境がNode.jsであるとわかりました。

1-2.つまりNode.jsって何?

一言で言うとJavaScriptを使用したサーバーサイド実行環境である。
ということが分かりました。

1-3.Node.jsの特徴

Node.jsは以下の特徴を持っています。

  • サーバサイドとフロントエンドを同じ言語で書ける。
    • つまりフロントエンドができる人であれば学習コストが低め。
    • つまりフロントとサーバサイドで同じ言語やライブラリが使えるため、開発効率が上がる。
  • 非同期処理を簡単に書ける
    • 一つのスレッドで大量の接続を処理できる。

こちらの記事から引用して挙げています。
https://paiza.hatenablog.com/entry/2018/06/08/paizacloud_nodejs
https://ameblo.jp/ca-1pixel/entry-11476850674.html

2.Node.jsの導入方法

最新版をインストールする場合は公式サイトのトップページからインストーラを取ってきて開くだけです。
Node.js公式サイト

しかしその方法ではDL時のバージョン以外の利用することができませんし、今後特的のバージョンによって動作しない機能があった時バージョンを切り替える必要が出てくるので、nvm(node version manager)を使います。

2-1.nvmとは

Node.jsのバージョン管理ツールです。
nvを使用することでNode.jsを指定したバージョンに切り替えることができます。
nvm公式Githubレポジトリ

<補足>
Node.jsのバージョン管理ツールとしてnodebrewも挙げられますが、2019年10月現在ではnvmを使用しているのが主流みたいです。
参考:nvm(Node Version Manager)を使ってNode.jsをインストールする手順

2-2.nvmの導入

nvmをインストールする方法は三つあります。
* 手動インストール
* Gitによるインストール
* Homeblewによるインストール

参考にしたサイトではほとんどがGitによるインスールを推奨していました。
理由はnvmのバージョン管理自体がGitだと楽になるからだそうです。
と言うわけでGitでnvmをインストールしてみます。

Gitによるnvmのインストール手順

ユーザープロファイルのルートにnvmのリポジトリを複製します。

$ git clone https://github.com/nvm-sh/nvm.git .nvm

nvmのリポジトリに移動し、最新バージョンにチェックアウトします。

$ cd ~/.nvm
$ git checkout v0.35.0

nvmをアクティブ化します。
これをしないとnvmは使えないのかな?
試さないまま進んでしまったので分かりませんが、公式の手順にもあるので必要な手順なのでしょう。

$ source ~/.nvm/nvm.sh

ここまでできたらnvmのインストールが完了しているはずです!
以下のコマンドでインストールされたかどうか確認できます。

$ command -v nvm

nvmと出力されたらインストールできています。

nvmによるNode.jsのインストール

nvmを使用してNode.jsをインストールしていきます。
Node.jsは偶数のバージョンがLTS版(安定版)、奇数のバージョンが最新版となっているようです。
LTS版は長期間に渡って安定的にメンテナンスされているバージョンのことです。
最新の機能を使うためにどうしても最新版のnodeを使用する必要が場合を除けば、LTS版を使用するのがベターだと思います。

インストール可能なNode.jsのLTS版は以下のコマンドから確認できます。

$ nvm ls-remote

今回はLTS版の中で最新のバージョンであるv12.13.0をインストールしてみます。(2019/10/25現在)
LTS版のうち最新のバージョンのNode.jsをインストールする。

$ nvm install --lts

このように表示されたらインストールできた証拠です。

Now using node v12.13.0 (npm v6.12.0)

バージョンを指定してインストールする場合はnvm installの後にバージョンを直打ちします。
今後Node.jsのバージョンを切り替えたい場合は同様nvm installコマンドで切り替えたいバージョンを指定すればOKです。

$ nvm install {インストールするバージョン名}

以下のコマンドで現在使用中のnodeのバージョンを確認できます。

$ node -v

デフォルトのNode.jsバージョンを設定する。

nvmによるNode.jsのインストールはできました。
しかし今のままではターミナルの再起動の際にまた同じことをやる必要があります。
そうならないために設定する必要があるのが、デフォルトのNode.jsバージョンの指定です。

以下のコマンドでデフォルトのNode.jsバージョンを設定します。

$ nvm alias default {Node.jsのバージョン}
# default -> v12.13.0と表示される

続けて.bash_profileを編集し、ターミナル起動の際にnvmコマンドが読み込まれるようにします。

$ vi ~/.bash_profile

# 以下を追加する
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_com

これでターミナルを再起動してみます。

$ node -v
# v12.13.0

無事デフォルトのNode.jsバージョンを設定できました。

3.Node.jsでHelloWorld

nvmを使ったNode.jsのインストールができたので早速Node.jsを触っていきましょう。
とりあえずHelloWorldします。
いつだって最初の一歩はHelloWorldです。

まずはterminalでjsを実行してみます。

$ node
>

nodeと打って実行すると何やら>マークが出てきます。
この状態をREPLと言い、javascriptの文法やNode.jsのモジュール確認に使用することができます。

3-1.REPLでHelloWorld

# 計算する
> 22 * 3
66

# Hello Worldを出力する
> var test = "Hello World";
undefined
> console.log(test);
Hello World
undefined

REPLは終了するときはcontrol + dを叩きます。

3-2 httpモジュールからブラウザでHelloWorldしてみる

今度はローカルにサーバーを立ててブラウザ上にHelloWorldを出力してみます。
terminalから実行するためのjsファイルを作成します。

作成したjsファイルに以下のコードを記述します。

// httpモジュールの作成
var http = require('http');

// Hello Worldを返すサーバーを立てる
var server = http.createServer(function(req, res) {
  res.end("Hello World");
});

// ポート8000で接続可能なサーバーを起動する
server.listen(8000);

このjsファイルを保存し、terminalからnodeで実行します。

$ node HelloWorld.js

実行しても何も表示されませんが、サーバーは起動しています。
http://localhost:8000/
↑このurlをブラウザで開いてみましょう。
以下のように表示されたら成功です。
スクリーンショット 2019-10-27 23.05.37.png

まとめ

  • Node.jsとはJavaScriptを使用したサーバーサイド実行環境である。
  • Node.jsには以下の特徴がある
    • サーバサイドとフロントエンドを同じ言語で書ける。
    • 非同期処理を簡単に書ける
  • Node.jsの導入、管理にはnvmを使用すると良い。

参考

公式
Node.js公式サイト
nvm公式Githubレポジトリ

Node.js自体について
フロントエンドエンジニアにおけるNode.jsのススメ

導入
nvm(Node Version Manager)を使ってNode.jsをインストールする手順
いまアツいJavaScript!ゼロから始めるNode.js入門〜5分で環境構築編〜

HelloWorld
Node.jsで動くものを作ってみる、Helloworld

kawano108
へっぽこiOSエンジニア 金融系SIer→アプリ開発系ベンチャー
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away