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

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

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

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

32746閲覧

WebアプリとCGIの違いは何でしょうか

manzyun

総合スコア2244

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

4クリップ

投稿2015/07/31 06:48

タグをいくつもつけて申し訳ありません。

現在PythonでWebアプリのようなものを作ろうとしているものです。

質問の件は表際のとおりですが、今までWebプログラミングといえばVBScriptによるCGIプログラミングとWordPressのプラグインの文面を少し書き換えた程度の人間なので、つい最近(この質問を書く時)まで
「CGIはスクリプトにアクセスがあった際に実行され、Webアプリは常に常駐している」
ということを知りませんでした。また、CGIが使われなくなった要因として、何度もスクリプトが立ち上がると、サーバーに負荷がかかってしまうこともはじめて知りました。

しかしまだ腑に落ちないところがあり、もやもやしています。
自分の作っているプログラムはPythonで作っているものの、正直CGIでも事足りそうなので、Apacheにmod_fscgiを入れるなりしてCGIとして動かしてもよい気がします。なのに(というと失礼かもしれませんが)周りを見てみるとしっかりフレームワークを使って製作している事例が多い気がします。

フレームワークを使うと便利なのはわかるのですが、自分はWebやHTTPへの理解が浅いためか、Webフレームワークを使って作ろうとすると逆に混乱してしまいます(ただ単にMVCモデルになれていないだけなのかもしれませんが)

ということで、CGIとWebアプリには何かもっと根本的なところで違いがあるような気がしてならないのですが、私の思い過ごしでしょうか?

取り留めのない駄文で申し訳ありません。失礼します。

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

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

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

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

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

guest

回答3

0

ベストアンサー

「Webアプリ」は、ブラウザベースで動かせるアプリの総称だと思っています。

Python は全然わからないので、以下のサイトをチラ見しました。
http://docs.python.jp/3.3/howto/webservers.html

CGIはWebサーバから各アプリ(プログラム)に制御を渡す際の
インターフェースであって、CGI/FastCGI/mod_pyhton/mod_php
いずれも「Webアプリ(の構成部品)」の範疇に入ると思います。

一方「フレームワーク」はアプリの書き方の話(デザインパターン)であって、
ちょっとレイヤーが違うのかな、と。

ちなみに私も以前は、ちょっとしたアプリにわざわざフレームワークとか
大げさだと思っていましたが、Webアプリって、ちょっとしたものでも
すぐセキュリティがどうたらとか考慮すべきことが多いので、
それらをパックしてくれている「フレームワーク」、慣れると便利です。
最初の敷居は高いですが(^_^;)、がんばってください。

投稿2015/07/31 07:24

編集2015/07/31 07:27
hotta

総合スコア1613

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

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

manzyun

2015/08/01 09:53

レイヤーの違いを分別していなくて混乱していた節があるかもしれません。 確かにフレームワークを使ったほうがセキュリティリスクを抑えることはおぼろげに分かっていたのですが、最初の敷居を頑張って乗り越えられるかですね。 がんばります。
guest

0

CGIとは、サーバーへのリクエストに際してプログラムを実行する仕組み、或いは実行するプログラムそのものを指します。

Webアプリとは、その名の通り、Webを利用したアプリケーションのことです。
大抵の場合、ブラウザ上で動作するHTML、CSS、JavaScriptと、サーバー側で動作するCGIの連携で成り立っています。ただ、サーバーとの連携を必要としないWebアプリの場合、当然CGIが無くても作れます。

2つは別物ではありますが、CGIはWebアプリを作るための1部品である、という認識もできます。
前述のように、Webアプリには必ずしもCGIが必要というわけではありませんが。


フレームワークについては、当然使うか使わないかは自由です。
しかし、フレームワークは多くの便利な機能を提供してくれたり、既存の面倒な処理をラッピングしてくれたりします。

Webアプリの規模が小さいうちは、フレームワークを使わなくても何ら問題ないかもしれませんが、規模が大きくなったり、割と前に作成したものを手直しするときなどに「あの処理、どこに記述したっけ?」ということも増えてきます。
しかし、多くのフレームワークはMVCパターンを採用しており、そのような場合にも記述した場所が見つけやすくて救われたことも多々あります。

投稿2015/07/31 07:50

shiolier

総合スコア1156

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

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

manzyun

2015/08/01 09:50

MVCパターンを利用することで大規模なサービスを作るときには恩恵を受けるというのはおぼろげに分かっていたのですが、小規模でも時間が経つと処理の記述場所を見つけるのに時間がかかりがちなものを、MVCフレームワークを利用することでそういったリスクを回避できる事がわかりました。 MVCフレームワーク、もっと積極的に使ってみようと思います。
guest

0

そもそもいろいろ誤解されているような…

CGIはwebの仕組みの一つです。
https://ja.wikipedia.org/wiki/Common_Gateway_Interface

で、CGIはサーバにアクセス(enterなりclick)したときにサーバで実行されているのですが、
質問に記載されているwebアプリとはjavascriptのようなクライアントで実行している
言語のことですか?
まずwebアプリの定義から決めないと回答が違う方向に行く気がします。
https://www.grapecity.com/tools/support/powernews/column/web_app/004/page03.htm

ちなみに、一般的にCGIはperl言語を使い、質問に書いてあるWordPressはPHP言語で作られています。
CGIは仕組み上、CGIが実行されるたびに新しいプロセスを起動しますが、PHPなどはサービスとして
常に起動しています。

投稿2015/07/31 07:14

tenroku

総合スコア105

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

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

manzyun

2015/08/01 09:44

> Webアプリの定義について 私の中ではサーバー側を定義しておりました。言葉足らずで申し訳ないです。 > PHPなどはサービスとして常に起動している。 そうだったのですね。てっきりPHPで書かれた言語もCGIとして逐次呼び出されるものかと思っておりました。 調べたのですが、サーバーサイドのスクリプトはモジュールモードとCGIモードがあるのですね。知らずに今までサーバーサイドの言語は常にCGIで動いているものだと思っておりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問