Node.jsのお話

Node.jsのお話

Node.jsってなんだ?

Q.nodejsとはなんぞや

A.web制作からwebアプリケーション開発まで様々な事が出来るソフトウェア
JavaScriptを使って開発するのでCやRuby javaなどよりは習得が用意
(JavaScriptが多言語より劣っているわけではない)

ホームページを作ったことがある人なら理解できると思いますが、
クロームなどのブラウザで閲覧できるwebサイトは、htmlなどをサーバーに置くことで初めてwebページとして表示できるんですよね。
セットアップしていないサーバーにhtmlファイルを置いたとしても、設定しなければただのファイル置き場にしかなりません。
ファイル置き場はそれなりに優秀ですけどね。

  • ちなみに、サーバーのことをサーバー
  • ブラウザなどそれを使用する消費者のことをクライアントと呼ぶ

ネットサーフィンはサーバーとクライアントのやりとりで成り立っているんですね。
ブラウザとサーバーのやりとりイメージ

それはわかったけど結局node.jsってなんなの?

Node.jsは
・JavaScriptのランタイム環境(ランタイムシステム)
ランタイム環境とは、プログラムを実行する環境

ランタイムシステム (英語: runtime systemまたはrun-time system) とは、主に実行モデル(英語版)の一部を実装するものである。これは、ランタイムシステムが動作中となる期間である、プログラムのランタイムライフサイクルフェーズとは異なる。大多数の言語には何らかの形のランタイムシステムがあり、その言語の観点で規定された作用を実行する順序に対する制御はランタイムシステムによって実装される。年月とともに「ランタイムシステム」という用語の意味は拡大し、実行時に動的に決定されるほぼすべての振る舞いを指すようになった。

nodejsの公式にはこう書いてあります。

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

V8エンジンの画像探したけど無かったorz

Node.jsで何ができるの?

では、Node.jsではどんなことができるか軽く紹介していきましょう。

1.ブラウザに依存しないJavaScriptの実行

JavaScriptのプログラムをブラウザを介さずに動かすことができます。
今までのJavaScriptは基本的にブラウザの中だけで動作してました。
だってブラウザのための言語だったんだもの。

javascriptに関しては後日別ページを作ります。

ウェブブラウザ上で動作し動的なウェブサイト構築やリッチインターネットアプリケーションの開発に用いられる。また、2010年以降はnode.jsなどのサーバサイドJavaScript実行環境や各種ライブラリの充実により、MEANに代表されるように、Web開発の全ての領域で活用されるようになってきている。

それが、node.jsを使うことでブラウザを使用せずに動作させることができる。
極端な事を言えば冷蔵庫からJavaScriptが使えるようになるかもしれないですね。
それはjavaの領分でしょうが。。

冷蔵庫の話は極端ですが、
クライアントしか使えず、サーバー側はブラウザではない為実行できなかったものが
サーバー側でもJavaScriptを動かせるということになります。

じゃあ、1つの言語で開発できるんじゃない?

(厳密には1つの言語で開発するのはあまり現実的ではないですが、必要な部分だけ別言語で開発すれば良いので手間は省けます)

2.フレームワークが使える

先に述べておくと、Node.jsはフレームワークではありません。
Node.jsはあくまでもJavascriptプログラムを実行する環境です。
ただ、Node.js上で動作するフレームワークを管理する機能を持っています。
なのでNode.jsを使えばフレームワークや拡張モジュールを簡単に導入、削除を行うことができます。

もちろん、Node.jsでフレームワークを使わないっていう選択肢もありますが、基本的にはフレームワークを使って開発します。
有名どころでいえばExpress、Meteorでしょうか。
Expressがあれば大体のことが出来ると思って問題ないかと思います。

フレームワークを使わないで開発することも可能ですが、じゃあ無理にNode.js使わなくても良いんじゃない?

3.サーバー環境の構築

Node.jsはJavaScriptでサーバーが開発できる。
Node.jsはそれ単体でweb、アプリサーバーの機能を果たしてくれます。

通常であれば作ったプログラムはapacheやnginxなどwebを表示する為のソフトをインストール、
セットアップしたサーバーにアップロードして動かすのですがNode.js自体がwebサーバーの機能を持っている為、
開発しているPCでテストして、修正、再度テストがすべて自分のPCで行えます。
私が仕事する時はサーバーに繋いでvimでゴリゴリ書いていくことが多いです。

もちろん本番環境もNodeで運用することも可能です。

おわりに

Node.jsでフレームワークを管理しながら、フレームワークの仕様に沿って開発、Node.jsでテスト確認
基本はこのルーチンだと思います。
Node.jsは絶対使った方が良いよ!

ざっくりと調べながら書きましたが、こんな感じでしょうか。
また付け焼刃な知識が増えましたら追記していきます。

hoge