RubyとPerlの画面に表示されるまでの違い
DMMWEBCAMPではRubyを学習しています!また、現職ではPerlしています!
この2つの言語がどうやって画面に表示されるか、違いをまとめていきます。
Ruby
Rubyは、フレームワーク(Rails)などを使用することが多い。
フレームワークの裏でアプリケーションサーバー(Pumaなど)が動いてリクエストを処理する。
-
ユーザーがリクエストを送る
- 例:
http://example.com/posts
にアクセス
- 例:
-
ウェブサーバー(Nginxなど)がリクエストを受け取る
- 静的ファイル(HTMLや画像など)はそのまま返す
- 動的なリクエストはアプリケーションサーバーに送る
-
アプリケーションサーバーが処理を実行
- ルーティングを確認し、適切なコントローラーのアクションを呼び出す
- 例:
PostsController#index
が実行される
-
必要ならデータベースとやり取り
- ActiveRecordを使ってデータを取得・保存
-
テンプレートエンジンを使ってHTMLを生成
-
index.html.erb
などのビューをレンダリング
-
-
アプリケーションサーバーがHTMLをウェブサーバーに返す
-
ウェブサーバーがHTMLをブラウザに送信し、ユーザーに表示される
デーモン化することで、アプリケーションサーバーを常に起動できるため、処理が高速。
フレームワークを活用すれば開発が効率的になる。
Perl
Rubyと違いPerlでは、CGI(Common Gateway Interface)を使ってWebアプリを動かすことが多い。
-
ユーザーがリクエストを送る
- 例:
http://example.com/script.pl
にアクセス
- 例:
-
ウェブサーバー(Apacheなど)がリクエストを受け取る
- CGIスクリプトのあるディレクトリ(
/cgi-bin/
など)にリクエストを転送
- CGIスクリプトのあるディレクトリ(
-
CGIスクリプト(Perlプログラム)が実行される
- ウェブサーバーがPerlスクリプトを実行し、HTMLを標準出力(STDOUT)に書き出す
-
CGIスクリプトの出力をウェブサーバーが受け取る
- スクリプトの実行結果(HTML)をブラウザに送信
-
ユーザーのブラウザにHTMLが表示される
CGIはリクエストごとにスクリプトが起動されるため、処理が遅くなる。
しかし、Perlはテキスト処理や正規表現に強い。
CGIとは
CGIはウェブサーバーがプログラムを実行して、その結果をブラウザに返すための仕組み。
Perlでは、アプリケーションサーバーの代わりにCGIを使用している。
HTMLファイルならウェブサーバーはそのまま返すだけでいいけど、動的なページを作る場合は、プログラムを実行してレスポンスを作らないといけない。そのときに使われるのがCGI。
CGIはウェブサーバーが外部プログラムを実行し、その結果をブラウザに返す仕組み。
Perlなどプログラミング言語で書かれていて、CGIスクリプトをウェブサーバーが実行して、その出力をブラウザに送る。
参考文献
3/20追記
こちらの記事を読んでも思ったが、違う言語同士をつなぐには、サーバーだったりインターフェイスだったり何かしら繋ぎ止めてくれる通訳者の役割が必要なのだとわかった。
Discussion