I’ve talked about “Web development in Clojure” at JJUG CCC 2016 FALL

JJUG CCC 2016 FALL という Java のイベントで登壇させてもらった。

Clojureを用いたWebアプリケーション開発 / Speaker Deck

Clojure を使って開発したという事例は国内でも幾つかあるものの、あまり僕らのような Web サービスを作ったという事例は聞いたことがなかったので、 具体的にどういうサービスを開発していて、その中で Clojure のどういう部分を良いと感じたのかという話をしてきた。

幾つか質問を受けたので書いておく

  • Q. 可用性が高いサービスというとサーバーが複数台あったりすると思うんですが、セッションの管理は何か難しかったりしますか( Clojure 的に)?
  • A. 弊社ではセッションを Redis を使って管理しているので、特に難しいことはなかったですが、その Ring Middleware をちょっと自分で作ったりしないといけなかったです。
  • Q. ネームスペースの依存関係の図が凄いことになってましたけど、それで苦労したりとかはしてませんか?
  • A. この図はあくまでも規模感として出したので、苦労したという意味ではないです。実際にネームスペースの運用は Java でパッケージしているイメージとそう違わないです。
  • Q. Interop まわりで Java のコレクションが渡ってきて苦労するということはありませんか?
  • A. 特に苦労した記憶はないです。そもそも Clojure を書いてて、 Java 自身のコレクションが返ってくるという経験があまりないですが、普通の List とか Map であれば Clojure 自身のそれと同等に扱えたと思います。

最後の質問だけ微妙に自信がなかったので試したけど、やっぱりそうですね(普段、使わない知識は脳味噌の片隅に追いやられてる…)。

(let [l (doto (java.util.ArrayList.)
          (.add 1)
          (.add 2)
          (.add 3))]
  (nth l 2))
;; 3

(let [m (doto (java.util.HashMap.)
          (.put :a 1)
          (.put :b 2)
          (.put :c 3))]
  (:a m))
;; 1

その他

僕の発表を聴きにきてくれた人が 40 人前後いたみたい?なので、それは素直に嬉しかったです。また、裏番組と被ったから聴きにいけなかったという話もちらほらと聴こえたので、嬉しかったです。

JJUG はなんというか相変らず内輪感が凄くて外部の人間から見てると内輪だけで楽しそうだなと思ったり。 LT 大会とかは参加者がいないならいないで良いと思うんですけど、あんな風に強要したりとか煽ったりしているのを見ていると、 会社の飲み会でオッサンが若者に余興を強要しているのと何も違わないじゃんって思ったりしてしまいます。まあ、端的に言ってそこまで気分の良いものではなかったです。 懇親会なんだから素直に皆でそれぞれ話し合って楽しむだけじゃダメなんですかね?

そういえば、きょんさんに見つけられて声をかけられたのはちょっと嬉しかったです。てっきり、もう僕のことなんか覚えていないかなと思っていたんですが、そんなことなかったので嬉しかったですね。 僕がまだ Java を触ってたときの知人も結構いたと思うんですけど、全く会話出来なかったのは少しばかり残念でした。

今回、僕自身色々と課題を見つけることが出来た場でもあったし、また同世代のエンジニア仲間が増えたりしたのでそれはそれで参加して良かったなとは思いました。 あとは僕のことを尊敬してます、みたいな方に出会ったりして、恐縮ですという気持ちになったりしました。来年も前を向いてしっかり前進していかないといけないなと思うイベントでした。