Framework(WAF)ではMVCという設計及び実装における概念が取り入れられています。WAFを使うと共に、一度はMVCを用いたWebアプリの開発経験はしておいた方がよいと思います。この3つで概念が成り立っています。クライアントがWebに対してリクエストをした時に、これら3つがそれぞれ連動して結果を返します。一般的には以下のような処理経路をたどります。クライアントがWebサイトにリクエストコントローラがリクエストの処理を行い、モデルとビューを動かす必要に応じてモデルを呼び出す結果のデータをビューに渡すビューがHTML化などをしたものをクライアントに表示するMVCという概念を学ぶにはこうした一連の流れを網羅する小さなサンプルをつくるのが一番取っ付きやすい気がします。zenrizeというテキスト処理を行うだけのWebサービスをつくってみたいと思います。zenrizezenrizeという聞き慣れない言葉が出てきましたが、これは単に僕がつくった言葉です。非常にくだらないTwitterボットの内部で行われている処理を指します。Twitterのつぶやきを丸裸にします。これから歯磨きをするよという文章はおそらく以下のようにzenrize処理されます。今回はzenrizeを単純に「文章内の動詞の前に【全裸で】を必ずつける」と定義してみます。形態素解析APIを使う日本語の文章内の品詞を特定するには形態素解析と呼ばれる処理をします。APIで提供されている形態素解析APIを利用したいところです。CPANモジュールから「WebService::YahooJapan::WebMA」を使ってみたいと思います。簡単なスクリプトでzenrizeがされるかを試してみましょう。"\n";結果は以下のようになりました。全裸で起きたのでご飯を全裸で食べますいい感じです。APIはデータリソースとし、それを扱うこうしたプログラム部分が以降モデルとなります。Sinatraライクに実装するMVCを理解するためにSinatraライクなPerlのWAF、Mojolicious::Liteを使います。これだと1ファイルにMVCの全ての要素を詰め込めて俯瞰することができるのではないでしょうか。zenrizeメソッドを上記のスクリプトと同じように実装した簡単なモジュールです。$result_text;}次にコントローラ部分を実装します。その前にアプリケーションの設定でモデルを登録しているコードも含まれています。リクエストを処理、ビューを用いてHTMLをレンダリングしています。$self->render('result');};app->start;最後にビューの実装です。これはMojo::Templateと呼ばれるMojoliciousで使われているテンプレートの記述です。href="/">戻る</a>Mojolicious:Liteではこうしたビューをデータセクションに書くことができます。繋ぎ合わせた全てのコードをお見せいたします。%></body></html>これを「zenra.pl」などと保存し実行したりplackupで指定したりするとWebブラウザからzenrizeを試すことができます。こちらがトップの入力画面です。見事にzenrizeされたテキストがWebに表示されているではないですか!まとめMVCを理解するために駆け足でzenrizeという題材の小さなWebアプリをつくってみました。公開するにはちょっと不安な要素がいくつかありますが手元で確認するにはよい例だと思います。暖かくなる季節なので、「全裸で」Webアプリをつくるのもいいと思います!お知らせメルマガ「ゆーすけべーラジオ」でもWebサービスにまつわるエピソードを連載中です。