最近の開発手法に GG
今開発している Web アプリケーションは、Yesod という Haskell のフレームワークを使用している。これが非常に難しい。嫌な汗が出るぐらいヤバイ。でも、避けて通れない道なので頑張る。
さて、それ以外の部分は:
- CoffeeScript で UI を書く → JavaScript なんて書かない
- テンプレートエンジンで HTML を生成する → HTML なんて書かない
- OR マッパーで DB に問い合わせる → SQL なんて書かない
という感じになっていて非常にモダンな感じ。超今どきっぽい。ヤバイ。
JavaScript は僕の3大得意言語のひとつなんだけど、JavaScript はクソ言語*1なので、今どきは AltJS が普通に使われる。なんか悲しい。
僕は AltJS は使ったことがないんだけど、使ってみたい順に TypeScript、JSX、ghcjs という感じで、CoffeeScript は圏外だったけど、見てみた感じ Ruby っぽく Python っぽく、Haskell っぽくもなくない感じの言語っぽい。ちなみに PureScript をちょっと触ってみた。これは Haskell と見間違うね!
テンプレートから HTML を生成するのは、JSP、ASP、PHP なんかがほぼ HTML の拡張なのに対し、今使用しているテンプレートエンジン Slim は、箇条書きにしか見えない。
以下 速習テンプレートSlim(HTML作成編) - Qiita より引用。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Sample File</title> </head> <body class="sample"> <div id="contents"> <h1>Sample File</h1> <img alt="yterajima" src="http://www.e2esound.com/images/yterajima.jpg" /> <p>テキストテキストテキスト</p> <p>テキストテキストテキスト テキストテキストテキスト</p> </div> </body> </html>
これが Slim だとこうなる。
doctype html html head meta charset="utf-8" title Sample File body.sample #contents h1 Sample File img src="http://www.e2esound.com/images/yterajima.jpg" alt="yterajima" p テキストテキストテキスト p | テキストテキストテキスト テキストテキストテキスト
ただこれ、ソースコードを修正してブラウザで確認するまでが面倒でしょ。
いえいえ、LiveReload という仕組みを使用すればソースコードの修正が監視されて、ブラウザが自動的にリロードします。ブラウザが!自動的にですよ、奥さん!
OR マッパーは仕組みがよくわかっていないけど、多分 Yesod-persistent の機能なんじゃないなぁ、と想像。ぶったまげたのは SQL を書かないことより、データベースにオブジェクトがそっくりそのまま格納できちゃうこと。おそらく 型を Show と Read のインスタンスにしておけば入れられるようになるんだと思う。
*1:異論は認める