Clojure

CollBox

2017年4月6日

Cameron Desautels氏と、CollBoxにおけるClojureとClojureScriptの利用について話を聞きました。

CollBox

ClojureとClojureScriptをどれくらい使っていますか?

Clojureは約5年間、ClojureScriptは約1年間使用しています。プログラミングキャリアの初期にLispに出会い(おそらくEmacs経由)、約15年間Lispファンでしたので、Clojureはまさに故郷に帰ってきたような感じでした。

どのような製品やサービスを開発していますか?

次世代の債権回収サービスをClojureとClojureScriptを使って構築しています。クラウド会計ソフトウェアと連携して債権を簡単に取り込み検証し、裏で信頼できる債権回収ネットワークを管理し、債権と回収業者をインテリジェントにマッチングすることで、最適なレートと回収の可能性を高めます。同時に、これまでこの業界では知られていなかった説明責任と透明性を高める取り組みをしています。

チームの規模は?

私一人です!小さなスタートアップで、今のところ私がエンジニアリングチームです。しかし、単独の開発者でも本番Webアプリケーションを構築・維持できるのは、Clojureの賜物だと思います。実際、私たちの会社は2015年のQuickBooks Connectハッカソンでグランプリを受賞したことが始まりで、毎日一緒に働く5人のプロのエンジニアからなるチームを打ち負かしました。これもClojureとエンジニア一人のおかげです。良いツールは戦力倍増効果があります。

ClojureとClojureScriptを使うことで、最も価値を感じるのはどんな点ですか?

私にとってClojureを使う上で最も価値のある点は、言語が可読性の高い不変のデータ構造を少数しか使わないことにコミットしていることです。基本的なデータ構造でアプリケーションを設定し、基本的なデータ構造でアプリケーションの依存関係を結びつけ、データベースクエリもそれらで書き、メトリクスもそれらでログに記録します。そして、午前2時にWeb例外を診断しなければならない場合、そのリクエストが長年使い慣れた同じツールで出力、ログ記録、検査、更新できるなじみ深いデータ構造として届いたことは非常に幸運です。

不透明なFooオブジェクトへの参照があり、「このオブジェクトは何ができるのか?中身は?シリアライズできるか?どうやって作るのか?私の知らない間に変化するのか?」と疑問に思うことと比較して、どれほど優れているかを強調しても強調しすぎることはありません。

スタックは?

フロントエンドはすべてre-frameを使ったClojureScriptです。バックエンドはAWS上で動作するClojureで、Datomic(DynamoDB上)をバックエンドとしています。Webフレームワークはカスタムビルドですが、alephbidicomponenttransitを多用しています。

Clojureの事例を共有したい場合は、このフォームに記入してください