Clojure体験
(tryclojure.org)- Try Clojureは、ブラウザで Clojure式 をすぐに評価してみるための5分間の体験ページ
- 画面右側の REPL では、入力した内容が read-eval-print loop として実行される
(+ 1 2)のようなサンプル式を直接入力したり、コード断片をクリックして自動挿入したりできる(help)でコマンドを確認し、準備ができたら(start)を入力して体験を始める- このページは Clojurescript で作られており、Elia Scotto、Michiel Borkent、Clojureコミュニティが制作情報に含まれている
ブラウザですぐに実行するClojure
- Try Clojureは、「Got 5 minutes?」という案内とともに、短時間で Clojure を体験できるよう構成されている
- 右側の REPL では、ユーザーが入力したClojureの symbolic expression が評価される
- 体験の流れはシンプル
(+ 1 2)のような式を直接入力する- コード断片をクリックして自動挿入する
(help)でコマンドを確認する(start)で開始する
制作情報
- ページには、Rich Hickeyの引用が含まれている: “If you want everything to be familiar, you'll never learn anything new.”
- Try Clojureは Clojurescript で作られており、Elia Scotto が制作者として表示されている
- Michiel Borkent と Clojureの community への感謝も記されている
1件のコメント
Hacker Newsの意見
これが戻ってきてうれしい。かなり前にあったバージョンのおかげで Clojure を試すことになり、その選択がキャリアで最も大きな影響を与えた決断になった
今でも職場でも家でもほぼ毎日 Clojure を使っていて、標準の Clojure を使うこともあれば、Make のようなタスクランナーや Zsh スクリプトの代替として優秀な Babashka を使うこともある
Go も単一バイナリにコンパイルしなければならないときは強力な第2候補だが、Clojure は一般的な書く-コンパイル-実行ループよりも、プログラムと対話している感覚のある REPL ベースの開発フロー のおかげで最も気楽に感じられる
さらに JVM 上で動くという点も合わさって、楽しく仕事を終えられるツールセットになっている。Lisp や関数型プログラミングに少しでも興味があるならぜひ試してほしいし、VSCode を使っているなら Calva プラグインが大いに役立つ
表現力の低い言語に移るのは苦痛でいら立たしく、Python から Java 5 に移ったときは、同じ内容を表現するコードが 3〜5 倍長くなった記憶がある
おそらく核心は、表現力の低い言語ではシェルスクリプトや、性能や外部関数インターフェース向けの小さな C 関数、小さな Go ユーティリティのように 小さなものだけを書く ことにあるのだと思う
Clojure に初めて触れて、すぐに実用的に試してみたいなら、スクリプティング用の Babashka ランタイム を強く勧める: https://babashka.org
楽しくて取りつきやすく、Clojure エコシステムの中でもより洗練された部分の一つだ
フル JVM の Clojure と違って起動時間が非常に速いので良い入り口になるし、初心者なら、たとえば nodemon のような、すでに慣れ親しんだファイル監視/リロードツールを使って対話的な感覚で作業できる
その後はエディタから REPL 接続を使う完全な対話型構成へ移るのがよいが、初心者にはなじみのない流れで、設定も面倒に感じるかもしれない
業務アプリの統計を表示する小さな UI を作る必要があって HTMX と一緒に使ってみたが、とても良い体験だった
Babashka には基本的な Web アプリに必要なものがほぼ組み込まれており、HTMX を使えば JavaScript フロントエンドを扱わずにページ内で動的ロードができる
また
bb --nrepl-serverで nREPL を立ち上げたあと、Calva のようなエディタを接続してスクリプトを対話的に開発できるので、簡単な Web UI が必要なら試してみる価値がある似た方向性のサイトとして https://www.maria.cloud/ もある
完全な初心者にプログラミングを教えることにより向いているが、基本的な paredit 的な操作 とフォーム単位の評価方式は、実際に使われる REPL 主導開発にはるかに近いと思う
REPL のターミナルウィンドウに直接入力するのは ergonomics が非常に悪く、普通は VSCode の Calva や Emacs の CIDER のようなものを使って、カーソル下のフォームをどこかの REPL プロセスへ送るやり方のほうが現実的だ
Clojureを学ぶ最大の理由は Reagent で、Reactを使う方法の中でも断然最高だと思う: https://reagent-project.github.io/
shadow-cljs は npm ライブラリを簡単に使えるようにしてくれる: https://github.com/thheller/shadow-cljs
基本構成としては Go バックエンドと Reagent フロントエンドに落ち着いた: https://github.com/nathants/aws-gocljs
内部で何が起きているかをもっと明確に把握し、ネイティブなReactコンポーネントとより単純に相互運用したかった
React 18 の実験的サポートには追いついているようだが、Reagentは最新のReactの流れから遅れており、性能最適化の恩恵をすべて得られない可能性がある
いまだに class component を使っていて hook を使っておらず、Hiccup のランタイム変換が性能を下げるのではという懸念もある
ただし多くの場合は体感できる問題にはならないだろうし、派手なことをしなければ問題ないはず。Hiccup の UI-as-data モデルは恋しくなるので、いつか Reagent に戻るかもしれない
状態管理には re-frame を強く勧める: https://day8.github.io/re-frame/
最初はとっつきにくく見えるかもしれないが、ドキュメントが素晴らしく、理解するとモデルはとても明快
Helix(https://github.com/lilactown/helix) や UIx(https://github.com/pitch-io/uix) のような代替もあり、Reagent 依存をほぼ取り除いた refx(https://github.com/ferdinand-beyer/refx) もある
あるいは UIx/Helix に相互運用コードを追加して re-frame を組み込むこともできる: https://github.com/pitch-io/uix/blob/master/docs/interop-wit...
2024年に空のHTMLファイルを返すわけにはいかないし、検索最適化を台無しにするので、そうでないなら試してみたい
Clojureを使っていた期間は本当に素晴らしく、強く勧めたい: https://eli.thegreenplace.net/2017/clojure-the-perfect-langu...
Daniel Higginbotham の Clojure for the Brave and True は Clojure を学ぶための本当に優れた資料なので強く勧める
オンラインで無料で読める: https://www.braveclojure.com/clojure-for-the-brave-and-true
この本の本当の問題は、Clojureではなく Emacsから教え始める ことだ
今は VSCode から来る初心者も多いだろうし、彼らには大きな気の散る要素になる
数年前、同僚に Clojure を試さなくても History of Clojure は読んでみるよう勧められたが、先延ばしにしていた: https://dl.acm.org/doi/pdf/10.1145/3386321
その後 Rich Hickey - Greatest Hits を見てから https://changelog.com/posts/rich-hickeys-greatest-hits、History of Clojure を読み、すぐに学び始めた
Clojure は、何かを作るのが最も楽しい言語のひとつであり、最も美しい言語のひとつでもある
文法そのものというより、優れた設計と組み合わせを通して考えを表現させてくれるやり方が、心地よく頭を刺激してくれる
まだ自分にぴったり合う輝く道具を探していて、何もしっくり来ていないなら、Clojure を試してみる価値はある。これまで見てきた言語の中でも、最も簡潔でありながら強力な部類に入る
Clojure を学ぶことでそれに加えて得られるものがあるのか、それとも大体は似たようなものなのか気になる
LLVM のようなものでコンパイルされる Clojure のバージョンがあるのか気になる。
Scala Native がもともとそうなろうとしていたものに近い印象だが、実際にはそこまで定着しなかった。
関数型プログラミングは好きだが、2024年の Java エコシステム は古すぎるように感じられて耐えがたい。
https://jank-lang.org/ で見られる。
まだ完全な JVM Clojure との機能同等性には達していないが、開発を注意深く追っている。
実際のところ、それはそれほど大きな問題ではないはず。
関連リンク:
Try Clojure – An interactive tutorial in the browser - https://news.ycombinator.com/item?id=30423856 - 2022年2月、コメント93件
Try Clojure in your browser - https://news.ycombinator.com/item?id=3366526 - 2011年12月、コメント26件
Try Clojure - https://news.ycombinator.com/item?id=1359682 - 2010年5月、コメント60件
メキシコで Clojure が人気を集めていて、ブラジルでも Nubank の影響で似た流れがあるように思う。
コンピューターサイエンティストが働きたがる場所で、主に Clojure で仕事をしているようだ。
言語のコアメンバーの一部を雇っていた気がするし、ある時点では Elixir の創始者 José Valim の会社も買収していたと記憶している。
それでも、今なお主に Clojure を使う会社に見える。
後者は Platformatec のプロジェクト管理の専門性を得るためのもので(https://building.nubank.com.br/tech-perspectives-behind-nuba...)、知る限り Nubank で動いている Elixir のコードはない。
ETL パイプラインの「別側」には Python もあるが、ユーザー向けの領域では、知る限りバックエンドは Clojure、Android と iOS アプリは TypeScript。
中国でも Clojure が意味のある流れになっているのか気になる。