最近の開発手法に 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 を生成するのは、JSPASPPHP なんかがほぼ 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:異論は認める