リアルタイム通信で活用!注目の技術「Node.js」とは【初心者向け】
初心者向けにNode.jsについて解説しています。Node.jsとはどんな技術で何ができるのか気になる人も多いでしょう。JavaScript環境でサーバーサイドも開発できるNode.jsのメリット・デメリットも知っておくと良いでしょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
今回は、Node.jsについて解説します。
Node.jsとは一体何ができて、使う上でどんなメリット・デメリットがあるのか気になる方もいるでしょう。比較的新しい技術ですが、Netflixなど有名なサービスでも採用されています。
エンジニアでなくてもどんな技術が理解しておくことをおすすめします。
なお本記事は、TechAcademyのNode.jsオンライン講座の内容をもとに作成しています。
ここではNode.jsについて解説していくよ。
田島メンター!Node.jsとはどういうものなんですか~?
Node.jsは、サーバサイドでJavaScriptを使う環境のひとつなんだ。もう少し詳しく見ていくよ。
お願いします!
目次
- Node.jsとは
- Node.jsのバージョン
- Node.jsの使用用途
- Node.jsの代表的なモジュール
- Node.jsのメリット
- Node.jsのデメリット
- Node.jsを学習できるサービス
- Node.jsを学習できる本
Node.jsとは
Node.jsとは、サーバーサイドのJavaScript実行環境です。
Node.jsはJavaScriptを使用して処理しています。したがって、Node.jsを操作する上で使用する言語はJavaScriptです。
ただし、フロントエンドのJavaScriptではなく、サーバーサイドのJavaScriptです。
フロントエンドとは、HTMLやCSSと組み合わせて、ブラウザ上にグラフィカルに表示する部分を操作するためのJavaScriptです。一方、サーバーサイドとは、インターネット上のデータが保存されているコンピューター上で動作する処理系の事です。
最近で言うとクラウドと呼ばれるような、データセンター内のコンピューターをサーバーと呼びます。
Node.jsは、PHPやRubyやPythonやJava等のプログラム言語と同様に、サーバー側で動作するJavaScriptです。
また、Google Chromeに搭載されているV8というエンジンをコマンドラインから使用することができます。
Node.jsのバージョン
Node.jsの最新バージョンは、推奨版が8.9.3で、最新版が9.3.0です。
ただし、通常使用する場合は推奨版の8.9.3のように先頭の数字が偶数の物を使用します。
最新版のように先頭の数字が奇数の場合は、新しい機能を追加して、問題がないかを確認しているバージョンになりますので、Node.jsでの先進的な開発を行う上級者向けのバージョンになります。
Node.jsのインストール方法もぜひチェックしておきましょう。
また、Node.jsをコマンドラインから使用する場合は、次のように記載します
node 対象ファイル名.js
Node.jsの基本的な説明はこんな感じかな。
JavaScriptというと、Webサイトでダイアログとかを入れたいときに使っていたものですよね。
そうだね。それらのフロントエンドで使っていたJavaScriptをサーバサイドで使えるようにしたものがNode.jsだよ。他にどういう特徴があるか見てみよう。
Node.jsの使用用途
メモリ消費量が少ないため、小さな規模の開発・運用時に、他の環境と比べるとよりパフォーマンスを出すことが可能です。同時に大量のトラフィックを捌くことができ、動画配信やチャットアプリ、ゲームの開発で使われることが増えてきています。
Webアプリ
これまでのプログラミング言語同様にWebアプリケーション開発時に使用されます。
ピグライフ
ピグライフ構成
Node.jsを利用することで、ゲーム上で多数のユーザーが同時接続を行う状況で、パフォーマンスを落とさず処理をすることが可能です。
Webサーバー
これまでのでのプログラム言語とは異なり、Webサーバーとしても使用されます。
チャットサーバー事例(IBM)
Node.jsでWebサーバーを構築することは、CPU利用率の低い処理をリアルタイムで頻繁に返す用途に向いています。
Node.jsでは、Socket.ioというリアルタイム通信を行うライブラリを使用することができます。
スマホアプリ
ネイティブアプリやハイブリッドアプリの開発に使用できます。
グランブルーファンタジー
グランブルーファンタジーのNode.js活用環境
Node.jsを使用することで複数ユーザーのモバイル通信速度が異なる状態でも、スムーズなバトル処理を行うことができます。
Node.jsの代表的なモジュール
async
Node.jsで非同期処理を実装する場合、JavaScriptのコールバック関数を使用することになります。
しかし、コールバック関数だけで実装すると処理が複数になると非常に複雑で、保守しづらいソースコードになります。
asyncを使用すれば、簡潔にに非同期処理を実装可能です。
ただし、全てのブラウザのバージョンに対応しているわけではありません。
Express
Node.jsでゼロからアプリケーション開発を開発することは非常に手間がかかります。
これは、他の言語でも同様ですが、Node.jsはフロントエンド開発を主とするJavaScriptから発展してきているため、サーバーサイドに関する便利な機能を最初から揃えているわけではありません。
その為、npmを利用して必要なモジュールをインストールして使用します。そうは言っても、使用するモジュールをアプリケーション開発の度に考えるのも大変です。
そこで、よく使う機能をあらかじめまとめてくれたのが、Node.jsのフレームワークであるExpressです。
実務上でも、Expressを使用することで、同じ設計を共有して開発効率を格段に高めることが可能です。
Node.jsのメリット
C10K問題の解決につながる高速性能
C10K問題とは、従来のサーバーで発生していた問題で、サーバーへの接続台数が10,000台を超えると、表示が遅くなるという問題です。
もちろん、技術的に解決することが可能ですが、Node.jsのノンブロッキングI/Oという処理により、Node.jsを使用するだけでC10K問題を解決することができます。
Node.jsの大きな特徴である「非同期処理」を行うことである処理が完了する前に次の処理を行います。そうすることで1つのプロセスで多くの処理を捌くことができます。
Node.jsのデメリット
Node.jsは当初、フロントエンドとサーバーサイドを同じJavaScriptを使用して、連動して処理させることも目標の1つでした。
しかし、最終的に、サーバーサイド(Node.js)のJavaScriptとフロントエンドのJavaScriptとの処理上の互換性はありません。
そうは言っても、JavaScriptで有ることは変わりないため、フロントエンドで習得したJavaScriptに関する基本知識は非常に役立ちます。
Node.jsを学習できるサービス
ドットインストール
動画を見ながら学習する形式のサービスです。
1つの動画が3分くらいで見終わることができるので、スキマ時間にサクサク進めることができるはずです。
基本的な文法を理解し、使い方を学習できます。
Udemy
こちらもドットインストール同様、動画の学習サービスとなっています。
英語の内容のものが多いですが、非常に実践的な内容が多いので、Node.jsを使ってアプリケーションを開発したい人におすすめです。有料の動画はキャンペーンなどで格安で手に入る時期などもあるので、ぜひチェックしておきましょう。
SMART Node.js入門
インストールする手順やNode.jsを理解する上で知っておきたい知識を学べます。
Expressというフレームワークも学べるので、アプリを開発するイメージがつかめるはずです。数時間・数日で終わる内容なので、これからNode.jsを学びたい方は最初に目を通しておくと良いでしょう。
もっと多くのサービスを比較したい人は、Node.jsの学習サービスまとめを参考にしてみてください。
Node.jsを学習できる本
いまどきのJSプログラマーのためのNode.jsとReactアプリケーション開発テクニック
React.jsとNode.jsを使用して実際にWebアプリケーションを開発する流れを学べます。
どちらもモダンな技術で多くの企業で使い始めているので、これからエンジニアを目指す方であれば就職や転職で有利に働くはずです。
Node.js超入門
HTML/CSSをある程度理解し、初めてプログラミングの技術に触れる方は基礎から学べます。
後半ではExpressというフレームワークを使って実際にWebアプリケーションの開発を学べます。入門から実践的な内容まで学習できる本になっています。
JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック
クローリングやスクレイピング、APIの使い方などいろんなサイトの情報を集めて1つのサービスを作りたい方におすすめです。
ある程度JavaScriptの知識がある方は、手を動かしながら自分の作りたいものを形にすることができるでしょう。
もっと多くの本を比較したい人は、Node.jsを学習できる本まとめを参考にしてみてください。
今回はNode.jsについて解説しました。
有名なサービスやゲームにも使われていて、今後ますます需要が増す技術になるでしょう。Node.jsの習得を目指したい方はぜひ全体像を理解しておきましょう。
また、現役エンジニアから学べる無料のプログラミング体験会もオンラインで実施しているので、ぜひ参加してみてください。
Node.jsの実装例と、最後に学習方法もいくつか紹介したよ。
JavaScriptを理解していると、フロントエンドとサーバサイド両方で知識が役に立つんですね。
最初の環境構築などは特に新しい情報が大事になるので、これらの学習サイトに加えて公式サイトの方もチェックしながら挑戦してみよう。
そうですね、頑張ってみます。ありがとうございました!
また、オンラインのプログラミングスクールTechAcademyでは、Node.jsオンライン講座を開催しています。
Node.jsを使ってWebアプリケーションを開発することができます。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、習得することが可能です。
独学に限界を感じている方はぜひご覧ください。
この記事を監修してくれた方
中本賢吾(なかもとけんご) 開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。 その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。 |