TL;DR
- バックエンドを Clojure、Web のフロントエンドを ClojureScript、アプリを ClojureDart で構築した。
- 共通処理を共有でき、言語との摩擦が少なく、AI との相性も良い。一方、採用の母集団は広くない。
内容
良かったところ
re-frame では副作用を Effects として返せる。処理から Effects を返すまでの範囲をテストできる。共通の処理は .cljc ファイルに書けるので、フロントエンドとバックエンドで同じバリデーションのルールを使える。マクロも書きやすい。
AI との相性も良い。理由として、テスト、Malli、トークン効率、REPL が挙げられた。UI や外部 I/O を動かさずに検証できる範囲が広く、Malli ではスキーマをデータで定義して実行時に検証できる。少ないトークンで文脈を渡しやすい。
Clojure には縛るものがなく、言語との摩擦が少ないので自由に書ける。一方で、必要な制約を必要な場所に足すこともできる。
採用とチーム
採用の母集団は広くない。ただ、仕事で Clojure を書けることが転職の理由になる。発表者自身もその一人だった。
キーワード
- Clojure
- ClojureScript
- ClojureDart
- re-frame