質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

2回答

1297閲覧

Node.jsはCGIになれますか?

xjjojo

総合スコア29

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

1クリップ

投稿2019/04/29 10:12

前提・実現したいこと

Node.jsがやりたいと思い調べているとCGIというワードをはっけんしました

発生している問題

Node.jsをCGIとして動作させるにはNode,jsとはべつにプログラムを用意して、それを動かさないといけない、ということでしょうか?
それとも、Node.js自体がサーバーと外部プログラムの役割をいんぺいしていて、CGIとしての機能をもつのでしょうか?

試したこと

WikipediaによるとCGIはこう説明されているます
https://ja.wikipedia.org/wiki/Common_Gateway_Interface

ウェブサーバ上でユーザプログラムを動作させるための仕組み

そこでサーバプログラムから他のプログラムを呼び出し、その処理結果をクライアントに送信する方法が考案された。それを実現するためのサーバプログラムと外部プログラムとの連携法の取り決めが CGI である。

Node.jsはそれ自体がサーバーになると理解しています
https://ja.wikipedia.org/wiki/Node.js

Node.js は、イベント化された入出力を扱うUnix系プラットフォーム上のサーバーサイドJavaScript環境である。Webサーバなどのスケーラブルなネットワークプログラムの記述を意図している[4]。

つまり、Node.jsをCGIとして動作させるにはNode,jsとはべつにプログラムを用意して、それを動かさないといけない、ということでしょうか?
それとも、Node.js自体がサーバーと外部プログラムの役割をもっていて、CGIとしての機能をもつのでしょうか?

もしくは、CGIはサーバーと外部プログラムが別々になっていないといけないのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

CGIとして稼働するためには、
・標準入力から読み込める(POSTの場合)
・標準出力に書き出せる
・環境変数が取得できる
が必要ですが、Node.jsプログラムはこれが可能ですので、Apache等、他のウェブサーバーからCGIとして呼び出すことは可能です。

すでに、Node以外でウェブサーバーが稼働していて、それにCGIで機能を追加したいが、追加するCGIをどうしてもJavaScriptで書きたいというケースがもしあれば、意味があるでしょう。

投稿2019/04/29 10:45

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xjjojo

2019/04/29 10:59

・Node.jsをプログラムとして利用すると他サーバーとのCGIとして使える ・Node.jsをサーバーとして利用して、かつプログラムをJavaScript(Node.js)で書けばNode.jsをCGIとしてもウェブサーバーとしても利用できる ということですね! つまり、CGIにすることもできるしサーバーとしても動作する、そしてそのどちらも両立できるのですね
otn

2019/04/29 11:03

> ・Node.jsをサーバーとして利用して、かつプログラムをJavaScript(Node.js)で書けばNode.jsをCGIとしてもウェブサーバーとしても利用できる そんなことは書いてませんが。どこから出てきた話ですか?
xjjojo

2019/04/29 11:10

すみません、「Node以外でウェブサーバーが稼働していて、」の部分を「Node.jsでウェブサーバーが稼動している」と読み違えていました ・Node.jsをプログラムとして利用すると他サーバーとのCGIとして使える ・Node.js以外をサーバーとして利用して、かつプログラムをJavaScript(Node.js)で書けばNode.jsをCGIとしても利用できる ということですね!教えていただきありがとうございます
guest

0

Node.jsをCGIとして動作させるには

なぜそのようなことが必要なのでしょうか。

Node.jsをサーバサイドで使う場合、通常はNode.jsをHTTPサーバとして動作させて、その上でコードを実行する形を取ります。わざわざ別プロセスを介するCGIの形態を取ることは、ほぼありません。

投稿2019/04/29 10:34

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xjjojo

2019/04/29 10:37

Node.jsはCGIとしての機能を持っているか、という興味があったので・・・ 回答から察するに、 > Node.js自体がサーバーと外部プログラムの役割をもっていて、CGIとしての機能をもつ というわけではないということででししょうか?
maisumakun

2019/04/29 11:06

otnさんの回答にありますが、CGIはあくまで「サーバとプログラムを結ぶやり取りの方法」なので、標準入出力や環境変数を使えるNode.jsでCGI用のプログラムを作ることも、できないわけではありません(ただし、それをやってなにか有意義なのかは、また別問題です)。 現実問題として、毎回プロセスを作成するCGIでは実用性能に劣るので、他言語でもCGIを使わない方法が主流となっています。
xjjojo

2019/04/29 11:13

>Node.jsでCGI用のプログラムを作ることも、できないわけではありません なるほど、質問に挙げたことは可能でも、実際はCGI自体を使わないのがベター、ということですね 色々な回答を頂けたので、少し考えてみます
maisumakun

2019/04/29 11:15

Node.jsは、多数のクライアントからのアクセスに対応できる(C10K問題)ことを主眼に作られていますので、アクセスのたびにプロセスを立てるCGIとして使うのでは、その良さを無にしてしまうことになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問