私は、サーバーサイドで動くJavaScriptで、非同期の処理が得意というくらいの認識しかなかったので、さすがにまずいと思い、どんなものなのか調べてみました。今回は同じくサーバーサイドで動くプログラミング言語であるPHPと比較する形でまとめてみました。Node.jsのJavaScriptとPHPは基本的に役割が異なる正直私はNode.jsはPHPを動かすためのApacheのようにJSファイルをサーバー上に置くことで、それを実行してくれるようにするものだと思っていました。実際はそうではなく、Node.jsはサーバーサイドでJavaScriptを実行できるようにしてくれるものです。これは、JSファイルをサーバー上の特定のディレクトリに配置すると自動的に実行できるようにするという意味ではありません。実際には、以下のようにコマンドでNode.jsにJSファイルを実行するように指示することで、JavaScriptは実行されます。example.jsさらに、これを実行するとPHPのようにWebページにテキストが表示されるというものでもなく、Webページにテキストを表示は、以下のようにJSファイル内でHTTPモジュールを呼び出すことで可能になります。World」と書かれたテキストファイルが8000番ポートに出力されます。ここまで見ていただいて分かる通り、Node.jsにおけるJavaScriptはPHPとは根本的な役割が違います。PHPはApacheなどのHTTPサーバ上でHTMLを表示したりデータベースを操作したりするWebアプリを作成することが役割となりますが、Node.jsでのJavaScriptでは、HTTPサーバやファイルサーバなどを作成したりするなど、サーバのより根幹的なアプリを作成することも役割となります。PHP(Apache)は同期処理×マルチスレッド、Node.jsは非同期処理×シングルスレッドPHPでは何かプログラムを実行する場合、その処理が終わるまでは他の処理が始まらない同期処理という方法でプログラムを実行しています。処理する場所を複数作ることで、平行して処理を行っています。この複数に分けて処理する方法をマルチスレッドといいますが、この方法は処理が増えるたびに処理する場所を確保する必要があるので、メモリの消費が大きいという欠点があります。Node.jsでは、プログラムを実行するときに、ある処理が終わる前に別の処理を実行する非同期処理という方法でプログラムを実行しています。処理する場所を複数に分ける必要がありません。そのこともあり、Node.jsでは処理を一つの場所で行うシングルスレッドという方法で処理を行っています。このあたりは↓こちらのサイトでの説明がわかりやすいです。“クライアントからリクエストがあった”などのイベントが起こったときに実行を行う「イベント駆動型」という実行形式をとっています。イベント駆動型のプログラムでは、イベントが起こった時だけ実行するので、特定の処理が終わるのを待たずに別の処理を行うことができたり、処理の流れがわかりやすくなるなどのメリットがあります。他にも様々な違いや特徴がありますが、今回はこのあたりまでで。利用は更に広がっていくのではないかと思います。ProfileninomiyaWebデザイナー兼コーダーです。イラストを描くのも好きです。SVGとCanvasを使ったWEBアプリにも興味があります。