Node.jsとJavaScript

Node.jsとは

まずはwikiと公式のNode.js(以下nodeと呼ぶ)の説明を見てみよう。

Node.js は、イベント化された入出力を扱うUnix系プラットフォーム上のサーバーサイドJavaScript環境である。Webサーバなどのスケーラブルなネットワークプログラムの記述を意図している[3]。ライアン・ダールによって2009年に作成され、ダールを雇用しているJoyentの支援により成長している[4] [5]。

wikiより

Node.js® は、Chrome の V8 JavaScript エンジン で動作する JavaScript 環境です。 Node.js は、軽量で効率的に動作する非同期型のイベント駆動モデルを採用しています。 Node.js のパッケージ管理マネージャである npm は、世界で最も大きなオープンソースのライブラリエコシステムです。

nodejs.orgより

私が思うNode.jsとは

wikiにはサーバーサイドJavaScriptと書かれていますが、これは古い情報でありサーバーサード専用ではありません。nodeはフロントエンドエンジニア(ブラウザ側の処理を担当する人)がサーバーサイドのプログラミングもJavaScript記法で書くことが目的の一つであった記憶があります。フロントエンドではJavaScriptが必須であり、同じJavaScript記法で構築できる事から言語学習コストの削減ができることは大きなメリットです。

Node.js=JavaScriptではない

上記の説明でJavaScript記法と記述しましたが、nodeはJavaScriptではありません。JavaScript記法と同じようにコーディングすることができますが、node専用の記載方法も多くあります。

Node.jsはブラウザ上では動かない

nodeはブラウザ上では動作しません。動作環境としてV8 JavaScript エンジンが必要であり、これはブラウザは持っていません。具体的にはnodeの実行ファイル(node.exe、node.bin)が必要となります。nodeで記載したコードをブラウザ上で動くようにするフレームワークも存在しますが、それはnodeコードをJavaScriptコードに変換しているためです。

多くのJavaScriptはNode.jsで動く

100%互換ではありませんが、多くのJavaScriptコードは、nodeで動かすことができます。コーディング規約(正確にはECMAScript)を無視すればコピペで動作します。(warningが出るでしょうがけどね)

サーバーサイドのNode.js

nodeをサーバー上で動かせばサーバーサイドで動くJavaScriptとなります。バッチ処理もnodeで記載することができます。いくつか有名なフレームワークを出すと。

Express

ExpressはWebサーバーを作成するためにフレームワークです。WebアプリはPHP、Java Servlet、.netあたりで作成するのが有名ですがnodeでも作成することができます。

forever

foreverはプロセスをデーモン化・監視するためのツールです。こちらもサーバーサイドで動作します。

サーバーサイドではないNode.js

node.jsはサーバーサイドJavaScriptではないと明言しましたので具体的な例を出してみましょう。

Angular

AngularはSPA(Single Page Application)を構築するためのフレームワークです。Angularはnodeで構築します(正確にはTypeScriptですけどね。)。Angularプロジェクトをコンパイルした結果はhtmlとJavaScriptとAssets(画像やcssなど)が出力され、これらをWEBサーバーに配置することによりSPAが構築できます。nodeコードからブラウザで動くJavaScriptを生成している訳です。なのでサーバーサイドではありません。

Ionic

ionicはAndroidアプリ、IOSアプリ、WindowsPhoneアプリを作成するフレームワークです。Webサーバーとしても動作させることができるマルチでHENTAI的なフレームワークです。

Electron

Electronはデスクトップアプリケーションを構築するためのフレームワークです。Electronも同じくnodeで構築します。ElectronはChromiumと呼ばれるChromeブラウザのコア部分を使用し、デスクトップ上で専用ブラウザ(Electronアプリ)を立ち上げ動作します。

Node.js沼に溺れてみませんか

nodeは非常にバージョンアップが多く破壊的変更もあります。安定しているとはお世辞にも言えません。初心者にはオススメしにくい言語ですし、バグの修正のためにgithubのissueは必ずといって良いほど見ることになります。当然ながら英語です。しかし、それ以上に変で面白い言語であり、さらにHENTAI的なフレームワークも多くあります。

nodeとHENTAI的なフレームワークを使う事により、「Webアプリ」「Windowsデスクトップアプリ」「Macデスクトップアプリ」「Linuxデスクトップアプリ」「Androidアプリ」「iPhoneアプリ」「Windows Phoneアプリ」を作成することができます。つまり、現状すべてのプラットフォームのアプリをnodeで作成することができます。node.jsの学習コストはあまり高くありませんが、メンテナンスのようにバージョンアップのための学習コストは高い方です。しかし、そのコストを考えてもHENTAI的なフレームワークが充実しているのでnode沼に入って(溺れて)みませんか?

スポンサーリンク
レタリング(大)広告
レタリング(大)広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レタリング(大)広告