上記の「Clojure/conj 2017 上映会#1」に参加した。
次の Rich Hickey の Clojure/Conj 2017 のキーノートを日本語で説明するというもの。
Clojure/Conj 2017 の動画は他のものも Youtube で見ることができるのだが、見よう見ようと思いつつ見れてなかったから、今回参加して Rich の発表を理解できてよかった。 英語の発表は自力だと 1/2 か 1/3 くらいしか理解できてなくて悔しいのだが、発表者のナカムラさんが背景を含めて説明してくれたのでとてもわかりやすかった。 あと Clojure 関係のイベントは初参加なので、意外と人が多くて驚いた。発表中 gitter で他の参加者とコミュニケーションできたのも面白かった。
↓発表資料
発表を聞いていて面白かった点をざっくり:
- プログラムは外界(データベースとかHTTPリソースとか)とやり取りすることが多いけど、プログラミング言語はそこに主眼を置いていないことがほとんどで、外界から受け取ったデータを自分の中で扱いやすくすることにリソースを裂きすぎている。例えば、Javaで1500個以上のクラスがあるプログラムはざらにあるけど、それはそのシステムの中でしか通じないルールを作っているに過ぎない。クラスは抽象ではなく具象。
- Clojure は単に Map でデータを名前に紐付けるだけだからクラスのような考え方をしない。単にMapの中属性に意味付けをするだけ
- Clojure は汎用的な言語ではなく、外界に適応するプログラムを書きやすくなるように設計している
- 静的な型はシステムが複雑になってくると助けにならない (この辺の話は僕としては腑に落ちないところもあったけど、静的型付けを強く嫌ってるのは面白かった)
- effective programming
- 他人が書いたライブラリも使いながら、変化していく要件や外界のプロトコルにうまく対応すること
Clojure は Rich が C++ や common lisp で開発を行なってきた知見が詰まった言語だと感じた。 今まで軽く触ってきた感じ、なるべく楽に書けるように出来ている感じはしていたけど、かなり根本的にソフトウェア設計に着眼点のある言語とまでは思ってなかった。 まだ EDN や Duct (Integrant) についてあまり勉強できてないけど、 Rich のこの辺の考えが根本に有るとしたらちょっと理解しやすいかもしれないと思った。EDNは結構不思議だったし。
やっぱり強い主張が有るプログラムは面白い。