Node.js 版 JavaScript を CGI として実行する


Node.js は「サーバーサイド JavaScript 環境」である。
node コマンドにより、CommonJS 仕様に則って書かれた JavaScript を UNIX サーバのシェル上で実行したりできる。
CommonJS 仕様に拡張された JavaScript なので、標準入出力も扱うことができる。
つまり、CGI としても実行できる。

CGI というのは、どんな言語でも I/O インタフェースが合っていれば(例えば標準入出力を使って I/O していれば)実行できるものだから当然だけど。

例えば、Node.jp には console という「標準出力と標準エラー出力に対するブラウザライクなオブジェクト」というのが用意されているので、

$ cat > cgi-bin/node_test.cgi
#!/usr/bin/node

console.log('Content-type: text/plain');
console.log('');
console.log('Hello World');
^D
$ chmod 755 cgi-bin/node_test.cgi

という具合に CGI としてファイルを作成し、ブラウザから http://127.0.0.1/cgi-bin/node_test.cgi へアクセスすれば、ブラウザ画面に Hello World と表示される。console.log というのは、改行付きで標準出力(STDOUT)に文字列を出力するメソッドである。

ただ、Node.js を CGI として使うのはナンセンスというのが識者の方々の共通認識のようだ。

Node.js 日本ユーザグループのサイト上の「NodeをApache上でCGIとして動かすというのはナンセンスなんでしょうか?」という質問に対してのやり取りがそのあたりの参考になるかな。

たしかに Node.js の機能であるとか、作成動機となった思想であるとか、そういう面から見れば「わざわざ CGI で実行する意味は?」とか「だったら Node.js でなくてもいい」とか、そういう話になるのはわかる。

でも、もっと泥臭い部分で「Node.js で CGI を組ませる」という判断は有り得ると思う。

新人プログラマに、「とりあえず JavaScript と Node.js を覚えてくれ。あとはそれでサーバサイドで実行するプログラムも、クライアントサイドで実行するプログラムも作れるから、Web アプリの開発はそれだけでいけるから。他に Perl や PHP や、Ruby や Java を覚えてもらう必要はないから」と指示する・・・みたいなケースのニーズはあると思うけどねえ。

まあ、CGI で組まなくても、Apache の Proxy 機能を使って、Node.js をアプリケーションサーバ的に使ったりというのもあるだろうけど、既存の CGI 実行形式のアプリケーションに機能追加をしていくというケースもうちの仕事じゃ多々あるので、その際に JavaScript しか知らないプログラマに Node.js を取得してもらって CGI として開発させる・・・というのはありそうなんだよなあ。

まあ、Node.js がそういう用途でまったくパフォーマンスを出せないのであれば仕方ないんだけど。

ということで、少しこのあたりを掘り下げて調べてみようてぇ。
Clip to Evernote

トラックバック(0)

このブログ記事を参照しているブログ一覧: Node.js 版 JavaScript を CGI として実行する

このブログ記事に対するトラックバックURL: http://blog.netandfield.com/mt/mt-tb.cgi/4354

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、shinodaが2017年3月30日 16:18に書いたブログ記事です。

ひとつ前のブログ記事は「Node.js のインストールをしてみた」です。

次のブログ記事は「WBC 負けましたね・・・」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら