Node.js | Node.jsを使う準備

まずNode.jsをインストールし、実際にスクリプトを実行する。あわせてHerokuアカウントを作成し、作成したアプリケーションをデプロイして公開する。

Node.jsとは

Node.jsはJavaScriptで処理を実行できるサーバー環境である。「サーバー環境」と聞くと、多くの人はWebサーバーがあり、そこにHTMLファイルなどを公開するものを想像するだろう。「サーバーサイド開発」と聞くと、PerlやPHPなどのプログラミング言語で書かれたスクリプトを置き、公開されたアドレスへアクセスするとスクリプトが実行されると考える人も多い。

Node.jsはその開発スタイルとは異なる。Node.jsでは、まず「サーバーを作る」ことから始まる。PerlやPHPではApache HTTP ServerやXAMPPのような別のサーバー環境があり、その中で動作する部品としてWebプログラムを作っていた。Node.jsでは、サーバープログラムとして実行されるスクリプト自体を作る。そのスクリプトの中で、どのアドレスにアクセスされたら何を行うかという基本部分まで作る。この点が従来のサーバー開発と大きく異なる。

サーバー自体を作ると聞くと難しそうだが、Node.jsにはサーバーオブジェクトが用意されているため、それを準備すればよい。Node.jsが注目される理由は、サーバーサイドとクライアントサイドをJavaScriptだけで開発できること、そしてイベントループ方式によってアクセス増加時のスケーリングに優れていることにある。

以前のNode.jsはLinuxが必要だったり、運用環境が少なかったりして手を出しにくかった。しかし現在はWindows版やMac版もあり、クラウドサービスを利用すれば誰でもNode.jsでサイトを構築できる。

Node.js開発環境

Node.jsは次のアドレスで配布されている。

http://nodejs.org/

韓国語ドキュメントも用意されている。

https://nodejs.org/ko/

ダウンロードページは次のとおりである。

https://nodejs.org/ko/download/

自分のプラットフォームに合ったインストーラーをダウンロードしてインストールする。Node.jsはコマンドプロンプトまたはターミナルからコマンドを実行して使う。インストール後、nodenpmのバージョンを確認する。

$ node -v
v20.0.0
$ npm -v
9.6.4

どちらもバージョンが表示されれば、インストールは完了している。

エディター

使いやすいテキストエディターを用意しよう。MacとWindowsではVisual Studio Codeを推奨する。

https://code.visualstudio.com/

Windows専用ならNotepad++も便利である。

https://notepad-plus-plus.org/

MacとWindowsではSublime Textも選択肢になる。

https://www.sublimetext.com/

Node.jsスクリプトの作成

Node.jsの使い方は単純である。スクリプトを書き、コマンドを実行するだけだ。Node.jsのスクリプトはJavaScriptを使うが、Webページで使うスクリプトとはかなり異なる。まずは書いて動かすところまで試してみよう。

var http = require('http');
 
var server = http.createServer();
server.on('request', doRequest);
server.listen(1234);
console.log('Server running!');
 
// リクエスト処理
function doRequest(req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write('Hello World\n');
    res.end();
}

これをsampleapp.jsとして保存する。たとえばデスクトップにnode.js-sampleというフォルダを作り、その中に置く。コマンドプロンプトまたはターミナルを開き、作成した場所へ移動して実行する。

$ cd Desktop/node.js-sample/
$ node sampleapp.js
Server running!

ブラウザーで次のアドレスにアクセスする。

http://127.0.0.1:1234/

Hello Worldが表示されれば、Node.jsは問題なく動作している。実行中のNode.jsを終了するには、コマンドプロンプトまたはターミナルでCtrl+Cを押す。

Heroku運用環境

ローカル環境でNode.jsを実行する方法がわかったら、次はサーバーへデプロイして公開してみよう。Node.jsプログラムを運用する場合、一般的なレンタルサーバーでは使えないことが多い。サーバー側でNode.jsプログラムを実行できなければならないためである。

そのため、クラウドサービスを利用する。代表的なサービスにはHeroku、OpenShift、Cloud Foundryなどがある。ここではHerokuを利用する。

Herokuへの登録

Herokuのサイトにアクセスしてアカウントを作成する。

https://www.heroku.com/

Sign Upから登録情報を入力し、無料アカウントを作成する。確認メールのリンクをクリックしてパスワードを設定すれば登録は完了である。Heroku Dashboardは公開しているWebアプリケーションの管理画面である。

Heroku Toolbeltのインストール

Herokuを利用するために必要なRubyやGitなどをまとめてインストールするHeroku Toolbeltを導入する。

https://toolbelt.heroku.com/

各プラットフォーム用のインストーラーを使ってインストールする。これでHerokuを利用する準備ができる。

Herokuデプロイに必要なファイル

Node.jsアプリケーションをHerokuで実行するには、package.jsonProcfileが必要である。また、Node.jsスクリプトの一部も修正する。

package.jsonはアプリケーションのルートに置き、JSON形式でアプリ情報を書く。

{
  "name": "... アプリ名 ...",
  "version": "バージョン名"
}

Procfileは拡張子なしでアプリケーションのルートに置く。

web : node sampleapp.js

これにより指定したスクリプトが実行される。最後に、スクリプト内のlisten呼び出しを変更する。

変更前:

server.listen(1234);

変更後:

server.listen(process.env.PORT, process.env.IP);

これでファイルの準備は完了である。デプロイはHeroku ToolbeltとGitを使ってコマンドラインで行う。必要に応じてSSH公開鍵を生成し、Herokuへ登録する。

$ ssh-keygen
$ heroku keys:add

その後、アプリケーションのディレクトリへ移動し、Herokuアプリを作成し、GitでファイルをコミットしてHerokuへpushする。デプロイが完了したら、生成されたHerokuのURLを開き、Node.jsアプリケーションが動作していることを確認する。