bitterharvest’s diary

A Bitter Harvestは小説の題名。作者は豪州のPeter Yeldham。苦闘の末に勝ちえた偏見からの解放は命との引換になったという悲しい物語

Haskellでウェブ・アプリケーション(1)

1.ウェブ・アプリケーション・システムの構造

ウェブ・アプリケーションには毎日のごとくお世話になっている。このブログもウェブ・アプリケーションに一つであるし、困った時の検索エンジンや乗換案内などもウェブ・アプリケーションである。ウェブ・アプリケーションにはとてつもなく大きいものもあるし、きわめて小さな個人用のものまで幅広い。
今回は、小規模から中規模のウェブ・アプリケーションを開発するのに適していると思われるyesodを用いて、ウェブ・アプリケーションを開発してみる。
一般に、ウェブ・アプリケーション・システムはMVC (Model View Controller)モデルと呼ばれる3階層構造から成り立っている。モデルはデータを記憶する部分であり、ビューはウェブでの画面であり、コントローラは制御をつかさどる。
道具が完備していなかった時代は、ウェブ・アプリケーション・システムを実現することはなかなか大変な作業であったが、scaffold(足場)がRuby on Railsに導入されてからは、その作業は著しく低減された。
ウェブ・フレームワークとしてMichael Snoyman氏によって開発されたyesodもscaffoldを提供してくれるので、システム開発者は、面倒くさい些末な作業から解放され、アプリケーションの核となる部分だけを作成すればよい。
yesodでウェブ・アプリケーションの開発のための初期作業をすると、scaffoldを作成してくれるので、ウェブ・アプリケーションの最も原始的な形態のシステムが提供される。この原始的なシステムに、アプリケーション固有のモデル・ビュー・コントローラを埋め込んで目的とするシステムを実現する。
モデルを記述する場所は、config/modelsである。ここではデータベースを形成するためのテーブルの名前とそのフィールドを指定する。
ビューを記述する場所は、templatesである。ここでの記述を基にHTMLによるホームページが作成される。
コントローラは、Handlerの下に、処理単位(モジュール)ごとのファイルの集まりとして、構築される。
一般に、ウェブ・アプリケーションは状態遷移マシンであるが、config/routesが遷移すべき場所とその時の入力あるいは出力を示す。
その他に、アプリケーションがどのように構成されているかを示すファイルApplication.hsであるが、ここには、モジュールの追加があった場合、それらをロードするための指示を与える。
また、コンパイルの仕方を決めたcabalファイルには、開発したモジュールが含まれるようにする。

2.足場の組み立て

最初に、yesodを利用できるようにするため、必要なモジュールをインストールする(diagramsなどのモジュールが入っているときは、干渉しあうので、yesodに必要なモジュールだけをインストールしておいた方が、慣れるまでは、本質でない問題に煩わされなくて済む。これには、~user名\AppData\Roaming下にあるcabalとghcのディレクトリを削除しておいたほうが良い)。
Yesodのインストールは次の通り。

cabal update
cabal install yesod-platform yesod-bin

次にプロジェクトの作成を行う。

yesod init

プロジェクト名と使用するデータベースが問われる。ここでは、それぞれyosog,sqliteと答えておく。
次に、足場をコンパイルして実行する。これはプロジェクトのディレクトリに移って行う。

cd yosog (プロジェクトのディレクトリに移動)
cabal insall

問題がなければサーバーを起動する。

yesod devel

ブラウザを立ち上げ、http://localhost/3000にアクセスする。
これで準備は完了である。