削除された内容 追加された内容
2行目:
 
==動機および概要==
[[Perl]]スクリプトは、実行ファイル形式またはモジュール形式を用いて[[ウェブアプリケーション]]として実行できる。そのための枠組みの例として、[[Common Gateway Interface|CGI]], [[FastCGI]], [[SpeedyCGI]], mod_perl, [[ISAPI]]などが従来から存在する。これらのうちCGIが最も古典的でシンプルな実行方法として知られているが、クライアントからのリクエストのたびにプロセスの起動・破棄を行うため、サーバへの負担が大きく、ユーザへのレスポンスにも時間がかかる。また、このような起動形態ではデータベースとの接続といった必要な初期化も毎回行わなければならない。これらの問題を解決するために、FastCGI, SpeedyCGI, mod_perlなどが考案された。これらの環境では、Webアプリケーションプロセスを起動したままにして、リクエスト毎にこのプロセスがWebサーバと何らかのインタフェースで通信することで、プロセス起動や各種の初期化にかかるオーバーヘッドを排除している。しかしながら、これらの実行環境 (FastCGI, mod_perl, etc.) はそれぞれインタフェイスが異なるため、[[ウェブアプリケーションフレームワーク]]ごとに、それらの差異を吸収するためのコードが繰り返し再発明されていた。
 
この問題を解決すべく、[[宮川達彦]]氏を主導として、[[Python]]の[[WSGI]]や[[Ruby]]の[[Rack]]から着想を得た、[[PSGI]]というウェブアプリケーション用の規格が打ち出された<ref name="psgi1">http://gihyo.jp/news/report/01/yapcasia2009/0001 YAPC::Asia Tokyo 2009 スペシャルレポート</ref>。また、同時にPSGIのリファレンス実装である[[Plack]]も発表された。Plackは[[CPAN]]からダウンロードできる。[[PSGI]]の登場と普及により、具体的な実行環境を意識することなくウェブアプリケーションを作成できるようになった。2010年現在では、ほとんどのPerl製[[Webアプリケーションフレームワーク]]がPSGIに対応している。