LoginSignup
1

More than 5 years have passed since last update.

Node.jsのインストール 〜 ハローワールド

Last updated at Posted at 2018-12-20

目的

業務でNode.jsを触らなくなって3ヶ月ほど放置していたら、
PC再セットアップ時に思ったよりいろいろ忘れてるなぁと感じたので、
星の数ほどある導入記事を備忘のために書く。

まずはインストール、の前に登場人物紹介

Node.js
今回の主役。
サーバサイドで動作するJavaScript。

npm
Node.js用のパッケージ(ライブラリ)管理ツール。インストールすると一緒についてくる。
nodeコマンドよりnpmコマンドを使うことが多くて、正直主役より目立ってる。

nodebrew:
Node.jsのバージョン管理ツール。Javaでいうjenv、rubyでいうrbenv。
Node.jsはアップデートが頻繁なので、一緒にいれちゃうのがおすすめ。
同じバージョン管理ツールのnvmというライバルがいる。

気を取り直してインストール

※ 対象はmacユーザです

  1. nodebrew をインストール

    インストールして
      $ curl -L git.io/nodebrew | perl - setup
    
    .bashrc へ以下を追記
     $ export PATH=$HOME/.nodebrew/current/bin:$PATH
    
    反映(もしくはターミナル再起動)
      $ source ~/.bashrc
    
  2. Node.js をインストール

    $ nodebrew install-binary stable 
    

    バリ早いです。5秒位で終わります。
    stableは安定版という意味で、コマンド実行時点での安定版がインストールされます。
    stableの代わりにv10.14.2みたいに直接バージョン指定ももちろんできます。

  3. 使うNodeのバージョンの指定、確認

    使うバージョン指定して
    $ nodebrew use stable 
    
    Nodeのバージョン確認
    $ node -v
    v10.14.2
    

    これでNode.jsのインストールは完了です。

ハローワールド

適当なディレクトリで index.js を作成
  $ vi index.js

以下を記述
  console.log('Hello World!');

実行
  $ node index.js
  Hello World!

流石にちょっと寂しいので、サーバ起動してハローワールド

  1. index.js を編集

    index.js
    // httpという名前のネイティブライブラリをインポートして、httpという変数につめる
    const http = require('http'); 
    
    // サーバセットアップ
    http.createServer((req, res) => {
      res.writeHead(200, {'Content-Type': 'text/plain'}); // Content-Type指定
      res.end('Hello World!');
    })
    .listen(3000, () => console.log('Server http://localhost:3000')); // ポート3000で起動
    
  2. 実行
    $ node index.js

  3. http://localhost:3000 へアクセス
    image.png

ね、簡単でしょ?

フレームワークをつかう

expressというフレームワークを使ってルーティング処理。
フレームワークを導入したり、外部のライブラリを使用するには、package.jsonというファイルを作成する必要があります。
pom.xmlとかbuild.gradleみたいな感じのやつ。

  1. プロジェクト初期設定

    $ npm init
    対話形式で色々聞かれるが、とりあえずエンター連打でOK
    package name: (hello)
    version: (1.0.0)
    description:
    entry point: (index.js)
    test command:
    git repository:
    keywords:
    author:
    license: (ISC)
    
    Is this OK? (yes) yes
    

    これでpackage.jsonが生成される。
    中身はこんな感じ。

    {
      "name": "hello",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC"
    }
    
  2. express をインストール
    $ npm install express --save

    なんかビャビャーってコンソールに出て、package.jsonを再確認すると、

    {
      "name": "hello",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC",
      "dependencies": { 
         "express": "^4.16.4"
      }
    }
    

    dependenciesが増えてますね。
    package.jsonを見れば、このプロジェクトでどんなライブラリ使ってるかわかります。
    依存性とか言われても、最初「は?」ってなりますよね。未だになります。

  3. express用にコード修正

    const express = require('express')
    const app = express()
    
    app.get('/', (req, res) => res.send('Hello World!'))
    app.get('/bye', (req, res) => res.send('Goodbye World!'));
    
    app.listen(3000, () => console.log('Server http://localhost:3000'))
    
  4. アクセス
    ルートへアクセスするとHello、/byeへアクセスするとGoodbyeが表示されます。
    これでRESTfulなAPIが作れますね。
    ちなみに、package.jsonは依存性を書いておくだけではなく、scriptsにスクリプトを書けます。
    試しに、以下のように修正して$ npm run startすると今まで同様index.jsを実行できます。

      "scripts": {
        "start": "node ./index.js",
        "test": "echo \"Error: no test specified\" && exit 1"
      },
    

    gradleでいうTaskみたいなもんですね。最初は恩恵感じられないですが、そのうち欲しいと思うときがきます。

おわり

ターミナル、nodeの純正ライブラリ、expressフレームワークでそれぞれHello Worldしてみましたが、
どれもこれもあっさり出来ました。
今回はスクラッチでやりましたが、expressならそもそもテンプレートを作成する機能もあるのでここまで0からやる必要はないかも?

つぎは

GAE(Google App Engine)がいつの間にかnodeに正式対応していたので、トライしてみます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1