WebアプリとCGIの違いは何でしょうか
解決済
回答 3
投稿
- 評価
- クリップ 4
- VIEW 7,476
現在PythonでWebアプリのようなものを作ろうとしているものです。
質問の件は表際のとおりですが、今までWebプログラミングといえばVBScriptによるCGIプログラミングとWordPressのプラグインの文面を少し書き換えた程度の人間なので、つい最近(この質問を書く時)まで
「CGIはスクリプトにアクセスがあった際に実行され、Webアプリは常に常駐している」
ということを知りませんでした。また、CGIが使われなくなった要因として、何度もスクリプトが立ち上がると、サーバーに負荷がかかってしまうこともはじめて知りました。
しかしまだ腑に落ちないところがあり、もやもやしています。
自分の作っているプログラムはPythonで作っているものの、正直CGIでも事足りそうなので、Apacheにmod_fscgiを入れるなりしてCGIとして動かしてもよい気がします。なのに(というと失礼かもしれませんが)周りを見てみるとしっかりフレームワークを使って製作している事例が多い気がします。
フレームワークを使うと便利なのはわかるのですが、自分はWebやHTTPへの理解が浅いためか、Webフレームワークを使って作ろうとすると逆に混乱してしまいます(ただ単にMVCモデルになれていないだけなのかもしれませんが)
ということで、CGIとWebアプリには何かもっと根本的なところで違いがあるような気がしてならないのですが、私の思い過ごしでしょうか?
取り留めのない駄文で申し訳ありません。失礼します。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+3
Python は全然わからないので、以下のサイトをチラ見しました。
http://docs.python.jp/3.3/howto/webservers.html
CGIはWebサーバから各アプリ(プログラム)に制御を渡す際の
インターフェースであって、CGI/FastCGI/mod_pyhton/mod_php
いずれも「Webアプリ(の構成部品)」の範疇に入ると思います。
一方「フレームワーク」はアプリの書き方の話(デザインパターン)であって、
ちょっとレイヤーが違うのかな、と。
ちなみに私も以前は、ちょっとしたアプリにわざわざフレームワークとか
大げさだと思っていましたが、Webアプリって、ちょっとしたものでも
すぐセキュリティがどうたらとか考慮すべきことが多いので、
それらをパックしてくれている「フレームワーク」、慣れると便利です。
最初の敷居は高いですが(^_^;)、がんばってください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
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などはサービスとして
常に起動しています。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
Webアプリとは、その名の通り、Webを利用したアプリケーションのことです。
大抵の場合、ブラウザ上で動作するHTML、CSS、JavaScriptと、サーバー側で動作するCGIの連携で成り立っています。ただ、サーバーとの連携を必要としないWebアプリの場合、当然CGIが無くても作れます。
2つは別物ではありますが、CGIはWebアプリを作るための1部品である、という認識もできます。
前述のように、Webアプリには必ずしもCGIが必要というわけではありませんが。
フレームワークについては、当然使うか使わないかは自由です。
しかし、フレームワークは多くの便利な機能を提供してくれたり、既存の面倒な処理をラッピングしてくれたりします。
Webアプリの規模が小さいうちは、フレームワークを使わなくても何ら問題ないかもしれませんが、規模が大きくなったり、割と前に作成したものを手直しするときなどに「あの処理、どこに記述したっけ?」ということも増えてきます。
しかし、多くのフレームワークはMVCパターンを採用しており、そのような場合にも記述した場所が見つけやすくて救われたことも多々あります。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 90.34%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2015/08/01 18:53
確かにフレームワークを使ったほうがセキュリティリスクを抑えることはおぼろげに分かっていたのですが、最初の敷居を頑張って乗り越えられるかですね。
がんばります。