HaskellでWeb

アバター
コスモ
記事: 3
登録日時: 14年前
連絡を取る:

HaskellでWeb

投稿記事 by コスモ » 12年前

前回の日記からかなり間が空いてしまいました。

関数型とWeb

Ruby on RailsでWebを書くのもいいけど、静的型付け言語でWebを書けないか
…と探していたらHaskellのWebフレームワークのYesodというものを見つけました。

Yesodの日本語記事も増えてきましたね。ちょくちょくSlideshareなんかで見かけるようになってきました。

なぜHaskell?

とのことですが、Haskellは型ではなく型クラスと言われるように、振る舞いの情報が型に集約されています。
例えば、プロダクションレベルのコードを書く時は、
RoRだとと期待する振る舞いを規定するテストコードを書いて今書いているコードが正しいかどうか判定してやる必要がありますよね。

Haskellでは型に振るまいの情報が詰め込まれているため、そこまでテストコードを書く必要がありません。
ほとんど必要ない場合もあります。

RoRと比べて幸せになれそうな点を幾つか:
  • コンパイル時にかなりのエラーが検出でき、コンパイルが通る≒期待したどおりの動きをする
  • typoが発見しやすい ←これ重要
  • テストコードを書く分量を減らせる、一人の開発だとほぼ要らないかも?
  • 動きがもっさりしない!
  • YesodのGoogle Groupで質問するとYesodの作者、又はYesodのプラグインの作者からの反応を直接受け取れる(著名なライブラリだとそうも行かないかも…)
逆に欠点もあります。

型がかなり厳密なため、最初は全くコンパイルが通らないことが頻発します。
うっ、つらい…

どのWebフレームワークを使うにしろ、依存関係は問題になります。RoRも依存関係がかなり有りますからね。

Yesodは…と言うと、やはりかなり有ります。120程度のHaskellのライブラリに依存しています。
Yesodにはプラグインという概念があり、プラグインを入れると更に30程度は引き連れてきます。
インストールに上手くいけば数時間、上手くいかなかった場合は…聞かないでください。

と、まとまりのない文章を書いていても説得力がないので実際に書いてみました。

自宅ネットワークの内部だけで動かすちょっとしたメモを書き留めるブログアプリの予定だったのでこんなにゴリゴリかく予定はありませんでしたが、
認証やら、Markdown→HTMLやら、全文検索やら、管理画面やら色々つけてしまったのでした。


Webの知識が全くない状態から、JavaScript(+jQuery-1.10)、bootstrap2.3(+CSS3)、yesod-1.1.9.2を勉強して書いたので結構ひどいコードがあるやもしれません。

bootstrapを使っているのでまぁ見た目は予想も付くでしょう。下の画像のような感じです。

画像

記事を書くために書いたコードはGithubで公開しています。

ちょっとしたものを書くのにバグで悩みたくない!という奇異な方は是非触れてみるといいかも知れません。
最後に編集したユーザー コスモ on 2013年7月09日(火) 08:09 [ 編集 3 回目 ]

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前

Re: HaskellでWeb

投稿記事 by softya(ソフト屋) » 12年前

私の知っている人に、GMC-4マイコン用にHaskellで書いたC風言語をWEB公開している方がいます。
「gmc4cc (C Compiler for GMC-4)」
http://terus.jp/engineering/gmc4cc/

アバター
コスモ
記事: 3
登録日時: 14年前
連絡を取る:

Re: HaskellでWeb

投稿記事 by コスモ » 12年前

> softya(ソフト屋)さん

Haskellは元々コンパイラ等のパーサーを書くのに強い言語だったのでghc 7系以前のHaskellのソースはコンパイラやインタプリタが多いようですね。

Glasgow Haskell Compilerは6.12.3から7.4.1への変化が激しいので、コンパイルできなくなっているものもちょくちょく見かけます。
gmc4ccも残念ながら…。

ghc7.4以上への対応はモジュールの名前空間を少しいじるだけで大抵は対応可能ですし、gmc4ccもそれで上手くいくようです。

gmc4ccのソースはGPLとのことですが、連絡先が書かれていないので修正してもパッチを投げられなくて困ってしまいました。。。
最後に編集したユーザー コスモ on 2013年7月09日(火) 21:25 [ 編集 1 回目 ]

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前

Re: HaskellでWeb

投稿記事 by softya(ソフト屋) » 12年前

私も知らないんですよね。困りました。
こちらに動画投稿されているので、これで連絡するぐらいしか手が思いつきません。
「 terusEngineering 」
http://www.youtube.com/user/terusEngineering

アバター
コスモ
記事: 3
登録日時: 14年前
連絡を取る:

Re: HaskellでWeb

投稿記事 by コスモ » 12年前

なるほど、そうですか…。
連絡手段がないOSS(≒Githubで管理されていないOSS)はメンテナンスができないので扱いに困りますね