この記事はClojure Advent Calendar 2019 - Qiitaの20日目の記事。 僕はClojure使いではなく、Javaメインのプログラマーですが、一昨年からclojure勉強し始めた。最近さぼってる。。。文系出身で、CSのバックグラウンドは皆無。比較的敷居が高いと思われる言語に、初心者から見た雑感を書いてみます。
興味を持ったきっかけ
- 一人でとあるアプリをLispで書いた人のことを聞いて。個人的感覚だと一人で書ききれる代物じゃなかったので、Lispってすげえんじゃないか、という気がしてた。
- 川島さんとか、アンクルボブとか、自分がすごい、と思う人がやってた。
- 関数型言語をやってみたかった。
勉強してみたこと
とりあえず、何冊か目を通した
Programming Clojure (The Pragmatic Programmers)
- 作者:Alex Miller,Stuart Halloway,Aaron Bedra
- 出版社/メーカー: Pragmatic Bookshelf
- 発売日: 2018/03/05
- メディア: ペーパーバック
Living Clojure: An Introduction and Training Plan for Developers (English Edition)
- 作者:Carin Meier
- 出版社/メーカー: O'Reilly Media
- 発売日: 2015/04/14
- メディア: Kindle版
- 作者:Michael Fogus,Chris Houser
- 出版社/メーカー: Manning Publications
- 発売日: 2014/06/13
- メディア: ペーパーバック
フレームワークもいくつか触ってみた。
GitHub - duct-framework/duct: Server-side application framework for Clojure
開発ツールは色々試そうとしたけど、やはり、これになった。。。Emacsは何度か試したことあったけど、やはり挫折する。
いまだと、Vs codeでもよさそう。
よかったこと
- 関数型っぽい考え方が分かった気がする。あと、抽象として扱うことを突き詰めること。
- Repl駆動を知れた。
- Rich Hickeyという天才の存在をしったこと。彼のスピーチが(多分)分かりやすくなった。
- 本やドキュメントも全体的に鋭い洞察にあふれているのでプログラマーとしてのレベルアップにつながると感じる。
- 触ってて気持ちいい。
現時点でつらいこと
- 設計の考え方があまりパターン化されていない気がする。というより、Javaのようなレイヤみたいな考えがなくても抽象度高く書けるのでそこらへんはどう書いていけばいいのか戸惑う。Javaっぽくやるのは違うと思っているので。
- 特にJavaとの接続部分で似たような機能があって、ちょっと戸惑う。DataTypeとRecordとか。先にどっち使うか決めなきゃいけない?
- 社内のツールをClojureで書いたが、やっぱメンテ辛いらしい。S式は見た目が違うので、勉強する気を失わせる可能性がある。
今後
やっぱ、不思議な魅力があるので今後も頑張って、勉強したい。多分、身に着けると、相当品質、生産性ともに高く開発できるポテンシャルがあると思う。 使わなきゃ身につかないのでツール作るとか、色々考え中。