次の13日の金曜日というサービスをリリースしました
最近、なかなかプログラミングする機会がないので*1、作って放置していたプログラムを編集して、Webサービスにしてみました。
サイト
作ってみて
ClojureでWebサービス作りたいなーとは思ってはいたものの、なかなかそんな時間もモチベーションもなく、今に至ります。
作った背景とかサイトの使い方は、リポジトリのREADME.mdに書いてあります。
Clojureの基本は、4Clojureで概ね学んだので、新たに学んだのは、noirの使い方です。
noirのテンプレートは標準だとviewが別ファイルになっていますが、これくらい小規模であれば1ファイルで書く方が楽でした。
noirは、シンプルで、Mojolicious::Liteみたいに気軽に使えて良いのと、標準のテンプレートエンジンのhiccupがかなり良いです。zen-codingのような感覚で記述できます。zen-codingみたいに、手動でHTMLに展開する手間ないし、プログラムも埋め込めるし、勝手にminifyするし。
noirを使ってて困ったのは、JSONに出力する時に、charsetがISO-8859-1になってしまう点です。ただ、バージョンアップで改善されるっぽいので安心しました。(Google Groups)
Clojureらしく、無限シーケンスで処理したり、小さな関数を組み合わせて処理を組み立てるってところは意識しながら作りましたが、そもそも関数脳になりかかってるので、他の言語使うより、Lisp系統である、Clojure使った方がストレスなく記述できるようになってきました。ただ、Javaの主要のクラスとメソッドはなんとなくでも覚えておいた方がいいなぁとは思います。副作用はdotoの中に押し込んでしまえば、そんなに抵抗なく使えます。
なんというか、関数型言語は、小さな関数作って、拡張してみて、挙動変えてみて、入れ替えてみて、最後に欲しいのはこれ、って感じでルーズにプログラミングできる感じがして、自分の性格的に合ってるような気がするんですよね。
Clojure + noirでモノ作って、herokuに上げる流れは、ひと通り把握したので、また機会を見つけて、Clojureで何か作りたいですね。