arists.net

なぜClojureなのか

得意な言語はExcelです。VBAはできません。

得意な言語はExcelです。

「得意な言語はなんですか?」と言う想定質問への回答はこれに決めています。プログラマーじゃないのでそんなこと聞かれるわけないのですが、準備だけはしています。

そして、世の中のサラリーマンは間違いなく全員Excelを使っています。なぜなら、Excelは最強だからです。

予算の管理をしたり、タスクの管理をしたり、工程表を作ったり、技術計算をしたり、方眼紙にしてワープロにしたり、セルの中に添付ファイルを貼り付けてExcelをフォルダがわりにしてしまう人もいます。

仕事で自部署の業務向けのITシステムの導入(買い物)をやったことがあるのですが、初めてのことだったので、やったことある人に色々聞いてみようと相談に行ったときに言われたのが、「結局Excelに勝てないんだよね。」

めっちゃ納得しました。

なんの話?

YourRecipeを思いついたときに、iphoneのアプリの作り方を勉強してみよう、とswiftの本を買ってやってみたことがあったのですが、途中で挫折しました。

それでもClojureだったらえっちらおっちらと形になるまでたどり着くことができました。

なぜClojureならできたのか。割と似てると思うんです、Clojure(LISP全般)とExcel。雰囲気が。

Excelには変数が無くて(セルの中身は自分で書き換えないと変わらないという意味で)、Clojureも変数は極力使わない方が良いとされています。どちらも関数を組み合わせてデータを思った形に変形してほしいものを手に入れます。Excelでは自分で関数を作れない、という違いはあったのですが、最近ExcelにもLAMBDA関数ができたらしく、ユーザーで関数が定義できるようになったそうです。もはや逆にLISPと何が違うのか?関数の名前をカッコに入れるか入れないかくらいしか違わないのでは。

それはさすがに言いすぎですが、長年Excelを使い、使われてきた経験が、まさかのClojureを使う上で活きていると思います。swiftをやってみたときには当然ながらそんなことは全く思いませんでした。

よって、プログラミング初心者が初めてトライするのにClojure!というのは案外悪くないのでは、と実体験的に思いました。という話でした。(普通はPythonとかが勧められると思われますが。)

ただ、とっつきやすさだけなら同じLISP方言のschemeの方が仕様がシンプルなので、こちらもよい気もします。私も実際はClojureの前にRacketでschemeを使ってみていました。Racketも楽しいです。実用性は・・・ですが、趣味に実用性なんかいらないので。

他にClojureが良いと思うところ

文法が簡単で覚えることが少ない。

基本、()か[]か{}で関数名かデータを囲うだけなので、割と簡単です。~とか~@とかもありますが、必要になったら勝手に覚えました。^はまだ使ったこと無いですが、とりあえず困っていないので後回しです。

一方で、関数がむちゃくちゃ多くてとても覚えられないのですが、「こんなことやりたいなー」⇒「"Clojure こんなことやりたい"でググる」⇒「関数見つける」で、だいたい解決できます。

覚えることが少ないと、ちょっとかじったらとりあえずなんか作ってみよ、である程度行けてしまうので(後から見るとすごい回り道しているんですが)、飽きる前になんか形にできたことが挫折せずに続けられている一因かなと思います。

REPL駆動開発!

関数をひとつ書いては、REPLでちゃんと動くか確かめる、ということができるので、スモールステップで進められて、これも飽きが来ない理由の一つのような気がします。スモールステップでやれば、だんだんぐちゃぐちゃになって破綻して諦める・・・というリスクも下がります。

コード量が少なくてすむ。

他の言語よりコードの量が少なくて済むみたいです。確かに組み込みの関数をうまく使って、普通はforループみたいなものでやりそうなことを1行で済ませたりできたら、すごい頭良くなった気がします。

楽しい

個人の見解です。趣味でやっているのでこれが一番大事。

まとめ

趣味はカッコの数を数える頭の体操です。