ホーム > Haskell > Yesodで動的サイトを作成する >

YesodでHello World

Haskell Platformと依存パッケージのインストール

Mac OS X の場合

brew install haskell-platform

Ubuntuの場合

sudo apt-get -y install libedit-dev libbsd-dev libgmp3-dev zlib1g-dev freeglut3-dev haskell-platform

cabalのアップグレード

yesodをインストールする際に、cabalのサンドボックス機能を使用するため、cabalのバージョンが古い場合は、cabalをアップグレードする。

cabal update
cabal install cabal-install

Yesodのインストール

yesodは複雑な依存関係を持つため、cabal-hellを避けるために、必ずサンドボックス内にインストールするようにする。 一方、yesodと関連するライブラリのインストールにはかなり時間がかかるので、プロジェクトを新規作成する度に毎回サンドボックスを作ってライブラリをインストールしなおしていると効率が悪い。 そこで、yesod用のサンドボックスを作成し、そのサンドボックスを使いまわすようにする。

# Yesod用のディレクトリを作成する
mkdir YesodWork && pushd YesodWork

# Yesodをインストールするためのサンドボックスを作成する
mkdir .cabal-shared-sandbox && pushd .cabal-shared-sandbox
cabal sandbox init --sandbox .

# サンドボックスにYesodをインストールする
# -j オプションをつけると、インストール作業が並列化される
cabal install -j yesod-platform yesod-bin

# データベースとしてsqliteを使う場合、
# sqlite用の永続化ライブラリもインストールする
cabal install -j persistent-sqlite

popd

# Hello World用のディレクトリを作成し、
# サンドボックスに先ほど作成したディレクトリを指定する
mkdir HelloYesod && pushd HelloYesod
cabal sandbox init --sandbox ../.cabal-shared-sandbox

Hello Worldを表示するyesodプログラム

とりあえず、以下の内容をファイルに保存し、runhaskellコマンドでサーバを起動する。 ウェブブラウザでlocalhost:3000にアクセスすると、「Hello World!」と表示されるはずである。

ファイルの内容

{-# LANGUAGE TypeFamilies, QuasiQuotes, MultiParamTypeClasses, TemplateHaskell, OverloadedStrings #-}

import Yesod

data HelloWorld = HelloWorld

mkYesod "HelloWorld" [parseRoutes|
/ HomeR GET
|]

instance Yesod HelloWorld

getHomeR :: Handler Html
getHomeR = defaultLayout [whamlet|Hello World!|]

main :: IO ()
main = warp 3000 HelloWorld

サーバの起動

cabal exec runhaskell hello-yesod.hs