• ベストアンサー

CGIとJavascriptの違いについて

Javascriptの初心者です、宜しくお願いします。 CGIでは「クライアントがサーバーに処理要求を出してサーバーが処理をし、クライアントにhtmlを返す」。 Javascriptでは「クライアントがサーバーに処理要求を出すが、サーバーは処理をしないで、クライアントにhtmlを返してサーバーが処理をして、ブラウザが表示させる」 と本には書いています。 CGIの場合、(1)サーバーからクライアントに返すhtmlとは、具体的にはどのような内容のものでしょうか。htmlファイルという意味でしょうか。(2)またサーバーがする処理とはどのようなものでしょうか。 また、Javascriptの場合、(1)サーバーの役割とはどのようなものでしょうか、(2)サーバーから返されるhtmlとはどのようなものでしょうか、CGIと同じ内容なのでしょうか。(3)この時のブラウザの役割、作業はCGIとはどのように違うのでしょうか。 以上、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.4

再びNo1です 他の回答者さんの回答も含めて大体分かってきたでしょうか? >>JavaScriptだけで現在のwebシステムを構築することはかなり困難(ほぼ無理)です。 >とは具体的にどのような意味でしょうか、また、ここでの「webシステム」の構築とはどの程度のシステムのことを言われてるのでしょうか たとえば、このQ&Aサイトも一部でJavaScriptを使っていますが、JavaScriptだけでは構築できません 他にも通販サイトや会員ログインが必要なサイトもJavaScriptだけではどうすることもできません JavaScriptだけで構築できるサイトといえば計算系のサイトですかね 例えば、m(メートル)をinch(インチ)に換算するサイトとか 車のエンジン回転数やギヤ比、タイヤ外周などのデータから時速を計算するサイト 等はJavaScriptだけでも構築できます また、サイト内で「現在○時○分」ですという表示がリアルタイムにカチカチと時計が動くような部分はJavaScriptが使われています(最近ではFlashの場合もありますけど) ほかにもマウスの動きに合わせてハートマーク等のアイコンが追いかけてくるような飾りもJavaScriptで作られています。 こういったように、クライアントノード内で動作する必要がある場合はJavaScriptの出番です 例えば、時計などの場合はサーバーサイドスクリプトでは作ることは出来ません。 JavaScriptと他の言語との決定的な違いは、「パソコン内でのみ動作する」 ということです JavaScriptを使ってサーバー側にデータを送りつける ということも可能ではあるのですが、送りつけるだけで終わりです よく使われるテクニックとしては JavaScriptに <form>タグの Submitを肩代わりさせることをよくやります。 他にAjaxという概念を用いる場合も最近は増えてきていますが、これはJavaScriptが何なのかを理解してからでないと理解できない概念です >また、いわゆる「スクリプト言語」の定義とはどのようなもので、どのような言語を指すのでしょうか?HTML、phpのことでしょうか。 HTMLは含まれません。 一般的に言う「プログラム言語」としては ・入力データがある ・処理をする ・出力をする この3工程がない限り「プログラム言語」とは言いがたいものです HTMLの場合、入力も処理も出力もしません ブラウザが理解できるように記述された「マークアップ言語」です ブラウザが理解できる唯一のものです。 ですから、サーバーサイドスクリプトが処理したあとに HTMLの形で出力しないかぎり、ブラウザには何も表示されません(text形式でも文字は表示されますけどね) サーバーサイドスクリプトとして利用されている言語にはいくつかあります 質問にもありました PHPもその一種です 他にも Perl、Java、C系、Rubyなど等 さまざまな言語を サーバーサイドスクリプト言語として利用しています。 (*注意:JavaとJavaScriptは別物だと理解してください)

その他の回答 (3)

  • benelli
  • ベストアンサー率51% (78/152)
回答No.3

ややこしい事柄なので私なりにも補足いたしたいと思います。質問者さまの質問はインターネットの世界においてとても重要なことですので…… >Javascriptでは「クライアントがサーバーに処理要求を出すが、サーバーは処理をしないで、クライアントにhtmlを返してサーバーが処理をして、ブラウザが表示させる」 これについては、#1の方のおしゃるとおりはっきりいってデマです。「サーバーに処理要求を出すが、サーバーは処理をしない」のではなく「サーバーに処理要求を出そうと思えば出せなくもないが、出したってそのデータがどうなろうと知ったことではない」のですし、「クライアントにhtmlを返してサーバーが処理をして」はそもそも何を言っているのか分かりません。。。 本当にそのような記述があるのなら、その本のほかの部分もかなりアヤシイです。その本のCGIの説明も、なんだか雲行きが…… >Javascriptの場合、(1)サーバーの役割とはどのようなものでしょうか、 サーバーに一方的にデータを送ることはひとまず可能ですが、それ以外にサーバーとの関係はないです。クライアント側だけで動くのがJavaScriptですから、基本的にサーバーを気にする必要はありません。 >(2)サーバーから返されるhtmlとはどのようなものでしょうか サーバー側ではJavaScriptを実行できないので、そもそもサーバーはJavaScriptでは何もできません。根本的に本の内容が間違っているので、このことは忘れちゃってください。 >(3)この時のブラウザの役割、作業はCGIとはどのように違うのでしょうか。 CGI処理はサーバーで行われるものですので、ブラウザ側はサーバーから届いたHTMLを表示するだけで、特にこれといったことは何もしません。JavaScriptの処理は逆に、サーバー側は何もせずにブラウザ側がせっせと処理をしてその結果を改めて表示します。 CGIとJavaScriptでそれぞれ「現在の時間を表示する」プログラムを作った場合、CGIではサーバー内部の時間が、JavaScriptではページを開いているパソコン側の時間が表示されます。そのため、例えばアメリカのサーバーにある現在の時間を表示するWebページを日本で開いた場合、CGI処理ならアメリカの現地時間が、JavaScriptでは日本の現地時間が表示されます。 CGIとJavaScriptは一見すると似ていますが、その役割はまったく違います。そのためCGIもJavaScriptも使用していないWebページもあれば、CGIもJavaScriptも同時に使用しているWebページもあります。 JavaScriptがサーバー上で動かない以上、このページの教えて!gooに登録されているサーバー上の情報はJavaScriptでは制御できませんし、同様に銀行のサーバーにある預金データなどもJavaScriptだけでは表示させることはできません。そういう意味で、JavaScriptだけで現在日常的に使われているwebシステムを構築することは不可能という結論になります。 注意※JSP(JavaServerPage)なる技術はサーバー上で動作します。これも名前が似ているだけでJavaScriptとはまったく関係ない別物なので注意してください。また、JSPをJavaScriPtの略だと勘違いしちゃだめですよ。

  • momoOK
  • ベストアンサー率0% (0/1)
回答No.2

JavaScriptの定義が間違えているような気がします。 JavaScript自体でサーバとやり取りするような記述がない限りは、基本「クライアント側だけで処理を行う」のではないかと。 # これだけでは語弊があるので、下記URLも参照されることをおすすめします # http://e-words.jp/w/JavaScript.html # http://ja.wikipedia.org/wiki/JavaScript 次にCGIで「入力画面Aでユーザーから渡された二つの数字を足し算し、結果を表示する」プログラムを考えます。 (1) 結果表示画面Bにて足し算の結果を表示します。この画面BはCGIを作った側がHTMLなどで自由に作れます。 (2) ・ふたつの数字を足し算すること ・結果表示画面Bをクライアントに返すこと

参考URL:
http://e-words.jp/w/JavaScript.html,http://ja.wikipedia.org/wiki/JavaScript
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

CGIに限らず、サーバーサイドスクリプト方式の場合はこれに属します。 CGIとはサーバー上でプログラムを呼び出す原理や方法の「概念」を指す言葉で言語の種類ではありません ここでは サーバーサイドスクリプト ということで回答いたします。 サーバーサイドスクリプトは、そのなの通り、サーバー上でのみ動きます 「HTMLを返す」とは、普段ブラウザ(IEやFireFox等)で閲覧できる形のHTMLをブラウザに送るという意味です。 HTMLファイルと思っても概念は間違いではありませんが微妙に異なります。 処理 といってもそのサイトがどのようなサイトなのか、 今どのような操作を受けたのかで「処理」の具体的な内容が異なります 例えば、この質問サイトの場合。 あなたが質問を投稿した時点で、サーバーサイドスクリプトがデータベースに保存しに行く という大まかな処理が行われています。(私の推測です、関係者ではないので本当の処理がどのように行われているかは分かりません) また、質問を入力欄に入力後に「回答する」などのボタンが押された後に、入力されている文字がサーバーへ送信されます 入力された文字を受け取ったサーバーサイドスクリプトは、不具合のない文字かどうかを判別したり、データベースに保存したりします ですから、どのページ(プログラム)に対してどのような操作をしたかを元に、あらかじめプログラミングされていた通りに動いて処理をします。 これら「処理」はプログラムが勝手にやってくれるのではなく、どのような処理を行えばよいのかを人が手動でコツコツと書いてゆくのです これがプログラマーのお仕事です 最終的には皆さんのパソコンのブラウザに理解できるようなHTMLという形で返ってきます ただし、これも人がコツコツと手動で作っています。例えば、「質問内容はこの位置で」、「タイトルはこの位置で」、と配置してあるHTMLをあらかじめ用意しておくのです これはデザイナーさんのお仕事になります。 webデザイナーとも言いますね。 どのようなHTMLを返すかは、ブラウザの空白を右クリックするかメニューから「ソースを表示」等を選択すればHTMLが表示されます それらのHTMLを返しています。 ただし、プログラムであらゆる処理を行った後にHTMLとして出力させているのはプログラマーさんやデザイナーさんが「最終的にはHTMLとして出力する」と決めているからにすぎません HTML以外のものだって出力させる事が出来ますよ HTMLじゃないとブラウザが理解できない ってだけです。 どのようなHTMLかはプログラマやデザイナー次第です。 >Javascriptでは「クライアントがサーバーに処理要求を出すが、サーバーは処理をしないで、クライアントにhtmlを返してサーバーが処理をして、ブラウザが表示させる」と本には書いています。 どんな本読んだんでしょ?かなり分かりにくく一般的なJavaScriptからかけ離れている説明ですね その本は捨ててよいでしょう。 JavaScriptの場合、サーバーはまったく関係ありません HTML内にJavaScriptのプログラムが書いてあったり、HTML内に「このJavaScriptを読み込みなさい」という一文が書いてあり、このプログラムをブラウザが理解して動作しますので、クライアント側でしか動作しません。 ですからサーバーサイドスクリプトと同じ感覚でJavaScriptがHTMLを返すというわけではありません (HTMLを書き換えたり、HTMLを作ったりするJavaScriptもプログラム次第では作ることは可能ですけどね) JavaScriptの一般的な利用方法として、すでに表示済みのHTMLの一部を変化させたり、ユーザーの入力支援を行ったりするのによく使われますがJavaScriptだけで現在のwebシステムを構築することはかなり困難(ほぼ無理)です。

htgo
質問者

お礼

inu2さん、レスを有難う御座います。 成る程、よく理解できました。 >JavaScriptだけで現在のwebシステムを構築することはかなり困難(ほぼ無理)です。 とは具体的にどのような意味でしょうか、また、ここでの「webシステム」の構築とはどの程度のシステムのことを言われてるのでしょうか。 また、いわゆる「スクリプト言語」の定義とはどのようなもので、どのような言語を指すのでしょうか? HTML、phpのことでしょうか。