PerlでWebAppの開発に必要なN個のこと
あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずPerlについて知っていることを書いた。
パッケージマネージャ
まずライブラリの管理。モジュールをインストールし、可能であればバージョンを固定し、適切にロードする機能が必要だ。Perlの場合は cpanm というCPANクライアントでライブラリをインストールする。バージョンの固定とライブラリパスの設定は carton で行う。
アプリケーションサーバ
Webサーバへのインターフェイスとしては、PSGIという仕様がある。PSGIに準拠したツールキットとしてPlackがあり、開発はPlack付属のサーバで行う。本番環境ではprefork serverのStarletを使っておけば間違いはない。PSGIベースで開発していると多彩なミドルウェアも使えるので、たとえCGIで運用するとしてもPSGIベースにしておくと開発が捗るだろう。
ルーティング
サーバにきたリクエストを適切なコントローラに振り分ける機能だ。これはRouter::Simpleを使えばいい。ルーティング機能はWAFに組み込みのこともある。
データベース
Perlでは昔からDBIというRDBMSへのインターフェイスが使われる。DBIはある程度抽象化されているのでそのまま使うこともあるし、ORM経由で使うこともある。ORMはTengやDBIx::Classが使われる。前者は軽量で後者は重厚だ。日本ではTengが好まれているようである。具体的なDBに接続するためにはDBD::mysqlやDBD::SQLiteなどのデータベースドライバを別途インストールする。
ビューのレンダリング
HTTPクライアント
多機能なLWPか、高速なFurlか。WebAppで使うならFurlで事足りる。SSLを使いたければLWPにせよFurlにせよオプショナルである。前者であればLWP::Protocol::https、後者はIO::Socket::SSLを別途インストールすること。