この間teratailで非常にぼやっとした質問をしたのに解答が来たので、それを無下にしないようにポエムっぽくなるだろうけどまとめておく。
ご指摘などどしどしお願いします。このまま勘違いしたまま生きてたらお婿に行けない。
質問したこと
WebアプリとCGIの違いは何でしょうか(13759)|teratail
つまるところ、僕の頭の中で色々なものの定義があやふやだった。
質問前の僕の頭の中
- Webアプリ:最近のサーバークライアント型のWebサービス的なの
- CGI : サーバーサイドのスクリプトを動かすための仕組み
そして(質問前の定義の)Webアプリは「CGIの集合体でサーバーサイドで処理して、それをHTMLで出力して更にCSSやJavascriptでかっこ良くしている」と思っていた。
質問後にまた調べての僕の認識
- CGIはほぼオワコン
- 今は常にスクリプトが起動しているのが主流
- ホットスタンバイ? (今までのCGIがコールドスタンバイだとして)
- ホットスタンバイなCGIを提供するプロトコル
- FastCGI
- SCGI
- 今は常にスクリプトが起動しているのが主流
- 最近のWebサービスはプログラムを常駐させて、APIを利用してHTTPプロトコルを受けたり返したりする
- APIs
- WSGI(Python)
- Rack(Ruby)
- JSGI(Javascript)
- PSGI(Perl)
- PHPはmod_phpが担ってる……のか? ルーティングまで?
- PHPが自分の中では謎い。
- APIs
- でもAPIを直接触ってコードを書くのもしんどいし、セキュリティとかも色々面倒なところがあるのでフレームワークを使う。
- HTTPリクエストによってどのメソッドなりモジュールを呼び出すか定義してるのがルーティング?
質問に至るまでの過程。
2011年に専門学校卒業。
- その当時「CGI」という科目でWebプログラミングを学ぶ
- 使っていた言語はVBScript
- CGIなので「へー、Webプログラミングはサーバーのスクリプトを逐次呼び出して動くんだ」とばかり思った
「学校の教育が悪かった」という訳ではない
プログラマとして一応働き始める
- Ajaxとかのワードを調べ始める
- 正直今もよくわからない
- 今までの僕のWebプログラミングの概念だと、裏で何らかのスクリプトを呼び出していると思ってるからか?
- 正直今もよくわからない
2012年から2014年くらい:Wordpressを触ったりする
- 「WordpressもPHPを使ったCGIの集合体なんだなあ」と勘違いしたまま2015年を迎える。
2015年夏:PythonでWebアプリ(というよりサービス)を作ろうとする
- マイクロフレームワークBottleを使おう
- 壁にぶち当たる「俺のしってるWebプログラミングと違う」
- WSGI、なんかHTTPのやり取りを簡素にしたやつなのね
- ルーティング? スクリプトファイルに直接アクセスさせたらよかったんじゃないの?
- このプログラム、CGIでよくね? → WSGIを使ったほうがいいのか……ふむ、で、ルーティングの問題が出てくるなあ……。
- 壁にぶち当たる「俺のしってるWebプログラミングと違う」
- Werkzeugに切り替える
- 壁にぶち当たる
- 結局ルーティング問題は脱出できない。
- 壁にぶち当たる
- あれ、じゃあPHPはどうしてXAMPP環境構築したらアドレス直打ちで動くんだ?
- Apache?
- mod_php? これがルーティングやってるの?
- Apache?
そして僕の頭が悲鳴を上げた。そしてあんな質問をした。
今でも謎なこと
- PHPのルーティングとかはmod_phpがやってるのか?
- そういえばAjaxとWebSocketの違いが未だによくわかってない(別議題)