2012Webアプリでユーザーからの入力がある部分を作る際、ユーザーフレンドリーでかつ実装も簡単な方法を模索するのにkazeburoさんのブログ記事をよく参考にしていました。CGIとは〜〜だというのはたくさん答えがあるだろうけど、自分的には「ユーザからの入力をチェックして画面にだす」ものだというのがしっくりくる。当たり前のことを書いているようだがMVCモデルでいうコントローラーの作成がCGIだと。blog.nomadscafe.jpkazeburoさんはほんとにCGIで実装してたけど、フレームワークを使ったり、ライブラリを使ったりしたら、つまり、今風に、実用的に書いてみるとどうなるのかやってみています。kazeburoさんのとちょっとだけ仕様が違うがなんとなくこんなかなーという具合。あ、もちろん僕のことなんでPerlを使ってます。コードは非常に簡単です。ちなみにサンプルの仕様はこんな具合。妥当なら入力された値を表示、特に保存などはしないさての今回の実装の特徴は以下です。Mojoliciousというフレームワークを使っている。今回はとりわけMojolicious::Liteというsinatra風の書き方をしています妥当性チェックにFormValidator::Liteを使っている(kazeburoさんはあえてライブラリを使ってないと思われます)。以下のソースコードではエラーメッセージをコード内に記述しているけど、外だしもできますHTML::FillInForm::Liteを使っている(HTML::FillInFormより速いらしい!)。このFillInFormの機能により、エラーが起こった時にフォームに値が残ったりってのが簡単にできるなんか、Mojolicious::LiteとかFormValidator::LiteとかHTML::FillInForm::Liteとか最近はLiteが流行りですね!で、いよいよコードです。郵便番号を7桁の数字で入力してください。正常に入力されました。ありがとうございます。%></body></html>Mojolicious::Liteのアプリなんで一つのファイルで済みます。アプリが大きくなったらファイルを切り離しますがこのくらいのサンプルを示すには楽ですね。daemonとかで起動できますよ。POSTで受け取ったパラメータをFormValidator::Liteでチェックをして、エラーが無ければthankyou.html.epをレンダリング、そうでなければエラーメッセージを表示しつつindex.html.epをレンダリングしています。kazeburoさんの言う通り、ユーザーの情報を入力してもらう=待ち構えるような機能ってWebアプリの大きな役割なのでシンプルなアプリから考察すると面白いかもしれませんね。