Node.jsの使い方をマスターしよう!
Node.jsとは「ノード、ジャバスクリプト」の略称で、パソコンの高等プログラミング言語の一つです。動作が非常に軽快で、覚えやすい言語としても今後のWebサービス開発環境における主力と目されている高等プログラム言語です。
そんなNode.jsをこれから始めようと思っている入門者に向けて、プログラミングの基本的なことからNode.jsのプログラミングを入門するにあたって必要なこと、およびその知識についてご紹介しています。
もっとも基本的なことを中心に解説していきますので、一通りの知識を備えたうえで、作りたいものになにが必要なのかも踏まえて入門編を学んで行きましょう。
Node.js入門編!プログラミング用語をおさらい
Node.jsのプログラミング入門について話を始める前に、プログラミングに関わる基本的なことについて解説しておきます。これからさまざまな専門用語が出てきますが、まずはつまずき兼ねない点の用語について解説を行っています。
入門用ですので分かっている内容については飛ばしてもらっても構いませんので、入門用の中で分からない事があればあらかじめ確認して、理解をした上で先に進めてください。
変数
Node.js入門にあたっての基礎用語「変数(へんすう)」です。あらゆるプログラミングで登場するこの言葉(概念)は、数学用語でいうと代入変数として知られています。XならXの中に何が入っているか?という考え方です。
プログラミングにおける変数はより多くの情報を代入出来ます。それはテキストであったり数字であったりさまざまですが、考え方としては「データを入れられる箱」のような物です。あらかじめ「これを変数にする」と宣言が必要ですが、宣言すればすぐ使える便利な概念です。
Node.jsの入門だけではなく、古今東西あらゆるプログラミングにおいての入門用の知識でもっとも大切な概念と言えます。
サーバー
Node.js入門編「サーバー」についてですが、携帯電話が子機なら、携帯会社が親機のような考え方で例えるならば、子機である携帯電話が「ユーザー」であり、親機である携帯会社は「サーバー」の役割を果たしています。
つまり、子機側での入力処理をサーバーである親機が受け取って処理し、結果を子機に渡す動きが行われる中で、サーバーが「処理」を担当し、子機が「入力」を担当している状態となります。子機のことはコンピューター用語で「クライアント」と呼びます。
データベース
蓄積された情報の集合体のことを指します。例えば、お店の商品の情報には「品名」「価格」「個数」「状態」「期限」などさまざまな情報が付帯しています。それらの情報を総合的に一括で収集している場所を「データベース」と呼んでいます。
ただし、ただ集められただけのものはデータベースとは呼べません。あつめられた情報を規則的に分類し、区分けしたものをデータベースとして呼称しますので入門用の知識として間違えないようにしましょう。
フレームワーク
骨格や骨組みの事を言いますが、プログラミング用語におけるフレームワークというのは、プログラムの骨子のことを指します。別名として「開発環境」とよばれることもありましたが、いまではこうした開発に際してあらかじめ用意された基礎的なプログラム群を指します。
あらゆるプログラム群にそれぞれのフレームワークが開発されており、Node.jsにもいくつかのフレームワークが存在します。このフレームワークの充実もNode.jsが開発しやすい言語として入門者にとって優しい言語として知られている理由の一つです。
テキストエディタ
文書アプリケーションです。「メモ帳」や「Wordpad」などもテキストエディタと呼ばれる存在になります。こなれたプログラマーほどこだわりのテキストエディタを使用する傾向があり、特定のテキストエディタごとの宗派が存在します。
あまりにもこだわりが強いために、きのこたけのこ戦争のような激しい論争に発展する場面も多々見受けられます。近年になってより新しい高機能なテキストエディタの開発も進んでいますが、そうした新興エディタは第三勢力として台頭しています。
Node.jsのプログラミングを入門するにあたってどのテキストエディタが最適なのかについては後述しますが、入門者ですから好きなエディタを選ぶというのが一番です。どれを使用しても問題はありません。
クライアント
サーバーの項目でも説明しましたが、終端末のことを指します。外来語では「エンドユーザー」という呼び方もあります。サーバーが「管理者」であればクライアントは「利用者」であり、サーバーが「お店」であればクライアントは「顧客」のような関係性となります。
Node.jsに入門する上では絶対に把握しておくべき関係性の話ですので、しっかりとあらためて関係性を把握することに努めてください。入門には必須の知識となっています。
ブラウザ
Webデータを効率的に閲覧するためのアプリケーションです。古くは「インターネットエクスプローラー」から「Chrome」「edge」「safari」「Brave」など数多に存在するオンライン情報の閲覧用アプリケーションのことを「ブラウザ」と呼びます。
インターネットが革命とされる根本的な条件となったソフトウェアで、HTMLなどのオンライン専用テキストルールなどが一般化するためのもっとも基本的なアプリケーションと言えます。
Node.jsの入門においてもしっかりと動作やバージョンごとの問題点などについてや、実働しているブラウザの割合など知っておくべき内容の多い項目です。
SQL
SQL(シーケル)とは、さきほど説明したデータベースを管理、編集、制御するためのデータベース言語です。言語とは言ってもプログラミングのために使われる言語ではなく、制御用の言語ですので、命令と制御、実行までがワンセットになって常時動き続けるための言語です。
標準化されておりさまざまなSQL言語の派生がありますが、どれも基本的には動作内容が同じなので、一度覚えてしまえば権限さえあれば同じように使うことが出来るというメリットがあります。
サーバーサイドプログラムとの連携でWebサービスを動作させることを目的としているので、Node.jsの入門には必須の知識の一つと言えます。
Node.jsとはいったい何?
Node.js入門の門戸を叩くにあたって始めに知っておきたいのは、そもそもNode.jsとはどういったプログラミング言語なのか?ということです。Node.jsというのはサーバーサイドプログラムと呼ばれるプログラミング言語のひとつです。
サーバーサイドプログラムには有名な物として他にもPHPやPerlなどさまざまな言語が稼働していますが、その中でも比較的新しい言語として注目を集めているのがNode.jsというプログラミング言語です。大量のアクセスを高速処理する非常に優秀なプログラミング言語です。
しかし、このNode.jsで用いられている言語体系は、じつはそれまではエンドユーザー向けのごくごく簡単なプログラミング言語としてもあまり認知されていない言語の一つがベースとなって開発されています。
サーバーサイドのJavaScript
Node.jsのベースとなった言語、それは「JavaScript(ジャバスクリプト)」です。「JavaScript(ジャバスクリプト)」は、もともとはエンドユーザーを対象としたフロントエンジニア向けのWeb言語でした。プログラミング言語というよりはHTMLに近い言語だったのです。
JAVAに似つつもまったく別の言語だった「JavaScript(ジャバスクリプト)」をベースとして、より高度なサーバーサイドのプログラミングを可能とした機能を与えられることによって、比較的簡単に理解でき、あらゆる環境で快適に動作するプログラミング言語として誕生しました。
ですから、Node.jsを入門するにあたってJavaScriptの知識があれば、より効率的にNode.jsの入門をスムーズに行うことができます。いずれにしても入門したばかりであれば、このままNode.jsの学習を進めてしまった方が良いです。
多くのアクセスを捌くことができる
非同期処理と呼ばれるCPUの処理効率を高める方式を採用した処理形式を採用していることによって、大量のアクセスを同時に高速で捌くことを可能にした処理系統をもったプログラミング言語が、Node.jsという言語です。
また、「モジュール」と呼ばれるオブジェクトに限りなく近い機能を備えているため、さまざまなパッケージを利用することも可能となっていることも高速化や開発速度の円滑化を可能にしている言語と言えます。
入門者の方々にとってはこの考え方の方が分かりにくい人もいるでしょう。特に非同期にについては実際にプログラムを走らせるほうが理解が早まります。If処理などを組み合わせた簡単なルーチンで関数の処理の順番を確認してみましょう。
IoTやスマホアプリにも活用可能
近年の開発環境の発展によって、ハイブリッド型と呼ばれるHTML+CSS+JavaScriptのWeb言語をベースにしたアプリ開発がスマートフォンで行えるようになった事にもよって、Googleが提供しているV8エンジンによって高速処理を可能にしているNode.jsもアプリ開発が可能になっています。
また、Node.jsを小型コンピューターで実行環境を肩代わりさせることで、IoT機器の環境をNode.jsによって開発することも可能になっています。それもこれもJavaScriptの多様なライブラリがそのまま使えるNode.jsならではの強みと言えます。
Node.jsを入門するにあたっていずれにしても考えておかなければならないのは、こうしたさまざまな実行可能な環境が広がっているNode.jsにおいて、入門してなにをしたいか?ということをハッキリと目標に掲げておくことでしょう。
Node.js入門編!初心者がすべきこと
Node.jsの入門において入門者が最初にやるべきことや、やっておかなくてはならない事について解説します。それぞれの事項環境ごとに必要になるインストール手順や、インストールするための環境づくりなど、入門者の入口をくぐります。
その手順や方法について詳しく解説しますので、まずはNode.js入門最初の手順からはじめて行きましょう。Node.jsの入門には、まずはNode.jsそのものを手に入れる所から始めなくてはなりません。
まずはインストールするところから
Node.js入門にまず入門者がすべきことは、Node.jsのインストールです。インストールにはNode.jsのインストールパッケージをダウンロードして、それぞれのパソコンにインストールする必要があります。
完全なNode.jsはおろかパソコンの入門者の方にインストールとはなにか?を説明するならば、「ソフトウェアの実装」と言えます。必要なソフトウェアを使えるようにあなたのパソコンに組み込み作業をおこなうことを「インストール」といいます。
インストールの方法
Node.jsのインストールには、Node.js公式サイトで配布されているNode.jsのインストーラ―を使用してインストールを行う方法がもっとも簡単です。入門者の方は、各OSごとに下記の方法で、あなたのパソコンにNode.jsをインストールしてください。
OSごとにインストールの方法は違いますので、あなたのパソコンのOSが何かをちゃんと確認してからNode.jsのダウンロードとインストールを行います。
Windows編
どのOSのバージョンにおいても「LTS(推奨版)」と呼ばれるインストーラ―と「最新版」のインストーラ―が公開されています。最新版は玄人向けのインストーラ―で、最新のコマンドも含めたレビューによる改善を前提としたインストーラ―となっています。
そのため、入門ホヤホヤの方々はLTS版を選択してインストールを行ってください。それぞれ「32/64bit」のいずれかのモードを選択してダウンロード&インストールします。
Ubuntu編
UbuntuでNode.jsをインストールして使うのであれば、簡単な方法はコマンドターミナルからCUIで「apt-get」コマンドを使用してインストールする方法が簡単でおすすめです。まずはお約束のアップデートを行ってから、Node.jsをインストールしましょう。
コマンドは「sudo apt-get install node.js」で管理者権限で実行します。ついでにnpmもインストールしておくと後が楽になります。
Mac編
Macではターミナルもインストーラ―もどちらも使用できますので、お好きな方法でインストールを行ってください。入門ほやほやの方であればインストーラ―を使ってインストールする方法をおすすめしますが、CUIの方が慣れているのであればその限りではありません。
その他OS編
上記以外のOSにインストールする方法としては、CentOSの場合はEPELリポジトリを有効化する必要があります。「$ sudo yum install epel-release」から「$ sudo yum install nodejs npm」を実行すれば、Node.jsとnpmの両方をインストールできます。
また、Arch系OSの場合は、「$ sudo pacman -S nodejs npm」のコマンドでNode.jsとnpmをまとめてインストールすることが出来ます。またほかにはバージョン管理などNode.jsそのものをモジュールのような管理ができる「NVM」というツールもあります。
Node.js専用のドッカーに近い物ではありますが、NVMをインストールしておけば簡単にNode.jsのバージョンごとのインストールを行うことが出来るようになっています。
インストール後の設定等
無事インストールが完了したら、続いてはインストールされているNode.jsの「バージョンの確認」を行っておきましょう。Windows系であればコマンドプロンプトかパワーシェルを使って「node --version」のコマンドでバージョンの確認を行いましょう。
これによって正しくバージョンの表示が行われていれば、正しくインストールが完了していることが分かります。なにも表示がない、「そんなプログラムはない」などの返答表が表示されるのであれば正しくインストールができていません。
改めてインストールをし直す必要があります。Windows以外でのCUIインストールでは、インスト―ルが正しく行えていればCUI表示画面にログで確認できるので、エラー等が無いか確認しておきましょう。
Node.js入門編!パッケージ管理を理解しよう
Node.js入門にあたって知っておくべきこととして、パッケージ(モジュール)の管理方法にも十分な配慮が必要です。とくに開発環境の再現性はとても重要で、入門したてのうちはそこまで理解が追いつかないかもしれません。
しかし、何のパッケージ(モジュール)を使っているのか?というのは開発環境に何が必要なのか?ということと同じ意味を持ちます。そのためパッケージ(モジュール)管理がしっかりと行えてないと、作業環境を再現する時に非常に困ったことになりかねません。
そんなパッケージ(モジュール)管理について、まずは基本的な構築方法や操作コマンドなどについて学びましょう。その上でどのように管理すべきかを知ると良いでしょう。
パッケージ管理はnpmで
Node.jsで使える開発支援用のプログラムたちのことを「パッケージ(モジュール)」と呼んでいますが、これらのパッケージ(モジュール)をいちいち手動で管理していくのはきわめて困難です。
そこでNode.jsではこれらのパッケージングされたデータたちを管理する便利なツールが用意されています。
npm(Node Package Manager)は、その名の通りNode.jsで公開したり配布されているパッケージ(モジュール)を管理することに秀でたツールプログラムです。
Node.jsの入門にあたってまずはこのパッケージ(モジュール)管理ソフトウェアであるnpmの使い方に慣れる必要があります。
パッケージ管理に使うコマンド
npm(Node Package Manager)の使い方は、Node.js上もしくはCUI上で実行します。以下に基本的によく使い、かつ必要性の高いコマンドについての解説と紹介をしています。それ以外のコマンドを使用したい場合はオンライン検索などでも十分に間に合います。
「install」コマンド
任意のパッケージ(モジュール)をインストールしたい場合は、installコマンドを使用してインストールを実行します。インストールコマンドの書式は「$ npm install 【パッケージ(モジュール)】」として入力します。
パッケージ(モジュール)名に間違いが無ければ、オンライン上で管理されているデータ群のなかから指定したパッケージ(モジュール)をインストールします。コマンドラインを実行するだけで即時インストールが実行されます。
「search」コマンド
うろ覚えでどんなパッケージ(モジュール)の名前だったか忘れてしまって、インストールなどを名指しで実行できない!という場合に活用したいのが「search」コマンドです。searchコマンドは検索するコマンドとなっています。
類似のパッケージ(モジュール)を検索したいときのコマンドは「$ npm search 【検索用語】」として実行します。検索の文字列に関係したパッケージ(モジュール)が一覧表示されますので、目的のパッケージ(モジュール)があるかどうかを確認しましょう。
「outdated」コマンド
npm上で各種パッケージのバージョンを確認する事ができます。とくに最新のバージョンで管理し続けたい場合は、「outdated」コマンドを使用することで簡単にアップデート候補を調べることが出来ます。
Node.jsに使うパッケージ(モジュール)のアップデート情報の確認をしたいときのコマンドは「$ npm outdated」として実行します。
すると、最新版のパッケージ(モジュール)バージョンがリリースされている場合はバージョン情報とパッケージ(モジュール)の情報がリストされます。
「un」コマンド
Node.js上で使わなくなったパッケージ(モジュール)は削除してしまいましょう。余計なリソースをいつまでも依存関係に置いておくのはリソースの肥大化に繋がるので「un」コマンドで削除しましょう。コマンドは「$ npm un 【パッケージ(モジュール)】」で実行できます。
ファイル「package.json」も知っておこう
パッケージをJSON(JavaScript Object Notation)形式で記録し依存関係をまとめておける便利ファイルが「package.json」です。開発環境を正確に記録しておくためには絶対に覚えておきたいコマンドとして「$ npm init」でファイルの作成を行えることを知っておきましょう。
作成した「package.json」があれば、ハードウェアが変わっても即座に開発環境を再現したり、メンバーで共有できるのでとても便利です。再現したい場合は、「npm install」をpackage.jsonのファイルが置かれているディレクトリで実行するだけです。
Node.js入門編!バージョンを管理しよう
Node.jsの入門者が知っておかなければならないことはまだまだあります。Node.jsは開発環境が整えばそこからは簡単ですが、環境を整えるまでに覚えなければならないことが結構あります。
続いて入門者が知っておくべきNode.jsの基礎知識は「バージョン管理」です。配布されているNode.jsには常にバージョンが存在します。OSやいろいろなアプリのように、Node.jsも人の手で作られている物ですから、バージョンがあります。
一度作られた言葉ではあるものの、普段私たちが日常的に使っている日本語ですら新しい表現や造語が生まれるくらいですから、Node.jsにも言語や単語の栄枯盛衰があります。そのほとんどが脆弱性の改善なのも定期的なバージョン管理を必要としている理由でもあります。
「使えるはずのコマンドが使えない?」「バージョンを間違えて開発していた!」なんてことがないように、しっかりとバージョン管理の方法を身に着けましょう。
バージョンの更新が多いので注意
Node.jsはサーバーサイドプログラムという性質と非常に活発な開発が進められていることもあり、頻繁なアップデートが行われている言語です。Node.jsそのもののアップデートも含めて、頻繁な確認も必要になってきます。
また、そのような頻繁なマイナーチェンジも含めて繰り返されるバージョンチェンジの影響で、使用できる関数やそうでないコマンドなどがバージョンによって違うので、多くの場合は切り替えを必要とします。
そんなサーバーサイドプログラムであるNode.jsのバージョンを手軽に切るかえることのできるツールが存在しますが、その説明を以下に解説します。
NVMを使えば楽に管理できる
サーバーサイドプログラムであるNode.jsのバージョン管理をスムーズに行う手段として知っておきたいツールが「NVM」です。「NVM」はNode.jsのバージョンごとにフォルダ分けして管理し、必要に応じてコマンド一発で簡単に切り替えることができるツールなのです。
各種コマンドを活用しよう
それでは、実際にサーバーサイドプログラムであるNode.jsのバージョンをスムーズに切り替えるためのコマンドについて知っておきましょう。まず、インストールが可能なNode.jsをリストアップするには「$ nvm ls-remote」で表示させます。
続いて、任意のバージョンをインストールしたいのであれば、「$ nvm install v1.x.x」のように実行することで、あなたのPCに任意のNode.jsバージョンがインストールされた状態となり、その中から選んでいつでも使えるようになります。
「use」コマンド
インストールしてあるサーバーサイドプログラムであるNode.jsの各バージョンのなかから、使いたいNode.jsのバージョンを選ぶときは「use」コマンドで指定して実行します。コマンドラインは「$ nvm use v1.x.x」のように指定し、実行すれば使えるようになります。
Node.js入門編!モジュールの使い方を知ろう
多数インストールしたモジュールをどのようにしてサーバーサイドプログラムであるNode.jsで使用するのか?その具体的な方法について入門者用に紹介します。パッケージでのインストールはおこなわれたものの、どのようにすれば効率的につかえるのでしょうか。
モジュール管理はrequireで
モジュールをサーバーサイドプログラムであるNode.jsの構文に組み込む方法はとても簡単です、例えば、「example」というモジュールを使用したい場合は「npm install example」でインストールをおこなってからプログラム内で「require(‘モジュール’)」を使った書式で実行します。
var 変数 = require
モジュールは変数として定義することで使えるようになります。「example」というモジュールを変数として定義するのであれば、var構文での一般定な定義と同じように、変数宣言とrequireでモジュールを代入することで実行可能にします。
モジュールの読み込み方
具体的に構文した場合、exampleという変数にモジュールである「example」を代入する構文は、「var example = require(‘example’);」のようになります。モジュールとはいわば関数群なので、オブジェクトのような扱いとも言えます。
ファイルのモジュール化
関数のような「読み込み」が可能なら、他のJSファイルをモジュールとして読み込む事もまた可能です。その場合は、読み込みたいJSファイルのパスをrequireで読み込みます。構文例として「var example = require(‘./example.js’);」のように記述します。
Node.js入門編!データベースとフレームワーク
サーバーサイドプログラムであるNode.jsにとって、データベースとの依存関係は必要不可欠です。データを保管し操作出来なければユーザーのデータを管理できませんし、データが無ければ何もなかったことになってしまうからです。
そんな入門者に必須の知識であるデータベースとNode.jsの関連性についてと、Node.jsで人気のフレームワークについてすこしだけご紹介します。
利用可能なデータベースについて
Node.jsにとってデータベースは絶対的に必要な要素なのですが、連結可能なデータベースには限りがあります。どのようなデータベースがNode.jsでは使用できるのか?またそれぞれどんなデータ特性があるのかについて知っておきましょう。
MySQL
データベースとしてもっとも多くの使用例を抱え、PHPとの連携の兼ね合いでブログなどにも用いられているMySQL(マイスキール)です。モジュールとして簡単に連結できますので、Node.jsの入門者に人気のデータベースです。
MongoDB
クラウド系のデータベースとして高い人気と実力をもったデータベースモジュールが「MongoDB」です。インストール後に「var MongoClient = require('mongodb').MongoClient;」のように関数設定を行ったら使用出来るようになります。
PostgreSQL
非常に多機能かつ高性能のデータベースとして、プロフェッショナルなサービスを展開しているのが「PostgreSQL」です。「pg」としてパッケージングされていますので、インストール後に「var { Client } = require('pg');」のようにして使える状態にします。
フレームワークはExpressが主流
入門者もそうでなくても、Node.jsのフレームワークでとても人気のフレームワークとしてExpressは非常によく使われています。シンプルで単純な構造ながら、抜群の機能性がExpressの人気を支えています。「npm -g install express」でインストールし、モジュール同様関数化しましょう。
Node.js入門でつまづかないためにしっかりと覚えよう!
Node.jsの入門としてごくごく基本的なことを解説してきましたが、開発環境の構築についての入門用基礎知識は以上となります。あくまでも入門編ですので、実際の構文での入門、動作確認やデバッグなどプログラミングがはじまってしまえばやることは一つです。
この入門編は本当に基礎ですが、入門編でありながらもっとも大切な事を解説しています。この基礎さえ把握しておけば、Node.jsでの開発をすすめて行くにあたって必要なことは全て詰まっているといっても過言ではありません。