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

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

ただいまの
回答率

90.61%

  • PHP

    19882questions

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

  • Python

    7515questions

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

  • Ruby

    7357questions

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

  • Perl

    451questions

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

  • Webサーバー

    426questions

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

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

解決済

回答 3

投稿

  • 評価
  • クリップ 3
  • VIEW 6,077

manzyun

score 1864

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

現在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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+3

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

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

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/01 18:53

    レイヤーの違いを分別していなくて混乱していた節があるかもしれません。

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

    キャンセル

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/08/01 18:44

    > Webアプリの定義について
    私の中ではサーバー側を定義しておりました。言葉足らずで申し訳ないです。

    > PHPなどはサービスとして常に起動している。
    そうだったのですね。てっきりPHPで書かれた言語もCGIとして逐次呼び出されるものかと思っておりました。

    調べたのですが、サーバーサイドのスクリプトはモジュールモードとCGIモードがあるのですね。知らずに今までサーバーサイドの言語は常にCGIで動いているものだと思っておりました。

    キャンセル

0

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

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

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


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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/01 18:50

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

    MVCフレームワーク、もっと積極的に使ってみようと思います。

    キャンセル

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

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    19882questions

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

  • Python

    7515questions

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

  • Ruby

    7357questions

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

  • Perl

    451questions

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

  • Webサーバー

    426questions

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