Yesod, a Haskell Web Platform


こんにちは。はじめまして。森谷です。

今回は Haskell で書かれた Web Platform である Yesod の紹介です。普段は仕方なく RoR を使っていますが、実はあまり好きではありません(おい)。というわけで Yesod を使ってみるわけですが、その前に、なぜ Yesod なのか?という疑問を持つ人もいるでしょうから、 http://yannesposito.com/Scratch/en/blog/Yesod-tutorial-for-newbies/ からいくつか理由をあげると、

  • 速い
  • 安全
  • 他の Haskell Web Platform に比べて、開発がアクティブである

となります。Yesod については日本で勉強会( http://partake.in/events/48a280c8-c1c3-44e9-9f58-91df54a3d899 )も開かれていて、わかりやすい日本語の概要としては @tanakh さんの このスライド を見たりするといいと思います。 今回は商品リストを作成、参照する簡単な Web アプリケーション を作ります。

環境設定

OS は Ubuntu 12.04.2 LTS です。

http://www.yesodweb.com/page/quickstart と http://www.yesodweb.com/blog/2013/09/yesod-platform-1-2-4 ( Haskell 大好き FP complete 社の Michael Snoyman さんが書いてます) を参考にします。

次にパスを通します。

 プロジェクト作成

https://github.com/pandora2000/yesod-sample にコードが置いてあります。

ターミナルをもう一つ立ち上げ、サーバーを起動します。

このサーバーはソースコードを監視していて、変更があると自動的にリビルドします。この時点では、

というエラーが出ているはずです。これはデータベースにアクセス出来ないと言っているエラー(遅延評価なのにこのエラーが出るのはおかしい!って感じた人は Haskeller っぽいのだろうか… ?それとも Haskell 初心者?)なので

を編集して正しい値を入力し、 mysql にデータベースを作成して下さい。今度はエラーが起こらずに migration が走るはずです。

内容作り

最初に参照した http://yannesposito.com/Scratch/en/blog/Yesod-tutorial-for-newbies/ を参考にします。

すると、以下のファイルが追加 or 変更されます。

sample/Handler/Items.hs
sample/config/routes
sample/Application.hs
sample/sample.cabal

Handler/Items.hs を以下のように変更します。

templates/index.hamlet を以下のように作成します。

config/models を以下のように変更します。

これで出来上がりです。 http://localhost:3000/items にアクセスして結果を確かめましょう。

Screen Shot 2013-11-05 at 1.19.35 PM (2)

 

Name と Stock Number を入力して Post New Item でアイテムを作成します。作成されたアイテムはリストとして表示されていきます。

今回はここまでです。次回はもう少し発展させたいですね。

この記事に対してコメントを書く