Light Table

タイムマシーンに乗って、50年前の過去に遡ってきた。そう、小学校の同級会が有ったんだ。 何でも、8年ぶりの開催だったとか。おいらはその頃は、同級に対して住所不定だったから 案内がこなかったんだけど、生まれ故郷に帰ってきたおかげで、連絡網が確立したって訳。

恩師はご健在だった。天皇陛下から、何とか褒章を頂いた、ダイヤモンド婚を迎えられた。 ひ孫が何人も出来た。そして、昔の洟垂れ小僧達に会えたって事で、事の他ご満悦でした。 いいもんだねぇ。同じ机を並べてた人達に再会出来るって!

出席率が52%、残念ながら鬼籍に入られた方が2名、住所不明者が9名って事からすると、 驚異的な出席率だったと思うけど、どうだろう。恩師もずっと恩師自身の同級会を行って きたそうだけど、90歳の時にとうとう、2人しか集まらず、これを最後にしましょうって事に なったらしい。 我々の同級会は、2年後に行うって事になったので、何人集まるか今から楽しみ。

50年たっても、昔の面影を残している人が半分ぐらいいたかな。名前を思いだした人は ちょっと少なかったけど、、それでも、話をしてるうちに思い出してきたぞ。

一番の出世頭は、山に登って社長になった人かな。ああ、おいらの同業者が一人だけいた。 出張先が、ほぼ一緒だったのに、何故出会わなかったんだろう? 顔が違っていたから 分からなかったのかな? ああ、オイラーは、みんなが一発で思い出してくれたよ。 という事は、昔から進歩が無かったって事ですかね?

まあ、人によっては、りっぱなあご髭を蓄え、ロマンスグレーな髪って人も居て、まるで 変装して来たんかいって人もいたな。話出したら、すぐに50年前にトリップ出来たけど。

女の子は大変身してて、さっぱりだったよ。でも、元気印をずっとひきずっている人が いて、よくいじめられた事を思い出したぞ。大体、あのクラスは女の子の方が男子に比べて ずっと強かったものなあ。

いやー、久しぶりの再会が至宝の時間でしたよ。

5冊 / 1840頁 / 9200円

Windowsでもclojure

以前、racketをWindowsっつう事で、emacs24を入れた。racketの為だけにemacsを使うんじゃ 宝の持ち腐れになるんで、emacsの別用途を考えてみた。(我ながら、可笑しな考えだ。 そんなの、今日に始まった訳ではないのだけど。。。)

で、思い付いたのは、ひっそりと鎮座してるJavaとの合わせ技。だったら、以前やったABCL とか入れればいいじゃんとなるわけだけど、諸般の事情によりclojureにも手を出してみる。

何と言ってもclojureは時代の寵児。2年前のclojure人の動向調査によれば、

clojureに移ってきた人は前に何使ってたって質問で、 Java33%, Ruby 16%, Python 15%, C# 6%って事らしい。perlとかphpを使ってましたってのは、 恥ずかしくて言えないんだろうね。Lisp屋が浮気しましたって事ではなさそう。

そして、もしclojureが無くなったら代わりに何使うって質問には、 Scala 35%, Haskell 33%, Python 27%, Ruby 22%, CL 24%, Scheme 19%, Java 19%, Erlang 16% (複数選択) と答えている。

注目はCLとかSchemeかな。括弧まぎれもいとわない人が養成されたって訳だな。なかなか 興味深い調査でしたよ。

まずはleinだな。バッチファイルを取ってきて起動したけど、なんたらjarが無いから駄目とか 言われた。そんな事言われても、無いから入れるんだろうに。こいつ頭おかしいな。 頭おかしいのはお互い様と思って、何度かやってるうちに、裏でwget(こやつは、どこからか 落としてきておいた奴)が動き出して、無事にインストール出来たよ。やれやれ。

次はいよいよemacsの出番。えと、サイダーをパッケージから入れればいいんだな。 M-x package-list-packages して、次の物の冒頭でiを押して、インストールマークを 付けた。 ac-cider-compliment、ac-nrepl、cider、clojure-mode、paredit。それからxを押して インストールを実行。これで、無事に入った。後は、init.elに万次郎Linuxと同じ 設定をコピペしたよ。これで、emacsから動くようになった。

(require 'package)
(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives
             '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)

;; clojure jack-in C-c M-j  connect C-c M-c
(require 'cider)
(add-hook 'cider-mode-hook 'remove-dos-eol)
(add-hook 'cider-mode-hook 'cider-turn-on-eldoc-mode)
(add-hook 'cider-repl-mode-hook 'ac-nrepl-setup)
(add-hook 'cider-repl-mode-hook 'paredit-mode)
(setq nrepl-hide-special-buffers t)
(setq cider-repl-print-length 100)
(setq cider-repl-result-prefix ";;=> ")

;; auto complete
(require 'auto-complete-config)
(ac-config-default)
(setq ac-use-menu-map t)
(define-key ac-completing-map "\M-/" 'ac-stop) ; use M-/ to stop completion

;; ac-nrepl
(require 'ac-nrepl)
(add-hook 'cider-mode-hook 'ac-nrepl-setup)
(add-hook 'cider-repl-mode-hook 'ac-nrepl-setup)
(eval-after-load "auto-complete"
'(add-to-list 'ac-modes 'cider-repl-mode))

で、emacsを有効に使うには、カーソルを自由自在に飛び回らせる事が肝要。S式という 構造が有るんだから、それにそってカーソルを移動出来たら便利。 S式が書かれているファイル中のカーソル移動は、以下の通り

; M-C-x は、ESCを押してから C-x を押す事です
;; M-C-SPC      カーソルの次のS式をマーク
;; M-C-a        カーソルを含むトップレベルのS式の先頭へ移動
;; M-C-e        カーソルを含むトップレベルのS式の末尾へ移動
;; M-C-f        次のS式へ移動
;; M-C-b        前のS式へ移動
;; M-C-t        カーソルの前後のS式を交換
;; M-C-k        (上にカーソルを置き、そのS式を削除
;; M-C-d        1レベル内側のS式へ移動
;; M-C-u        1レベル外側のS式へ移動
;; M-C-q        整形

なんだけど、メタキーが左ALTしか効かない。右ALTは無視される。指が攣るような曲芸はいやよ。 右ALTを左ALTに化けさせられないか。キーチェンジャを探してみた。 右Alt を IME On/Off に変更してみた とか ChangeKey … キーの配置を変更できるソフト が、見つかった。はて、どちらを試してみようかな。

はじめてのClojure

なんだかんだで、環境が整ったから、早速clojureしましょ。2011年に苦労じゃした 以来なんですっかり忘れてる。

今までやってきたCLは、Lisp-2系。clojureはLisp-1系。オイラーは、Lisp-1系に 馴染みが有るのさ。どちらがいいかってのは、昔から議論されてるけど、総括的には、 Technical Issues of Separation in Function Cells and Value Cells で考察されてたよ。

まあ、難しい事はさておき、 手元の本と言ったら、progiraminng clojureの初版本と、7つの言語本に出てたやつ。 最近出た本は無いの?

その前に、 Clojure Programming とか、 ClojureDocs なんてのが有る事を思い出したよ。でも、総括的にやるなら、やっぱり本だわな。

はじめてのClojure なんてのが有る事を知った。きっとミーハー向けなんだろうな。 この本の目次をパラパラ見て行くと、おいらの知らないのが出てくるな。やっぱり、田舎は 情報過疎地域?

そんな事を言っていてはいけません、世界に通じる情報ラインがあるじゃないですか。 光の道がね。使わないと損するぞ。

Light Table

Clojureを動かす環境「Light Table」なんてのが一番最初に出てくる。どんな本でも そうだけど、一番目は環境を作りましゅって事だから、きっとおいらーの知らない 環境なんだろうな。探ってみる。

Light table

Light Tableの使い方 (序章)

Light TableでリアルタイムExcelパース (Light Tableの使い方 第2章)

おおーーー、出てきた。新種のEditorなんだな。入れてみたよ。展開したら、90Mを超えて いたぞ。emacsは160Mだったから、小さい部類か。clojureと仲良くなるのが主眼みたいだけど、 pythonとかrubyとかとも接続出来るのね。

Light Tableの設定変更(スキン、テーマ、キーバインド…) なんての有ったりして、お好きなようにしてくださいってか。そして、足りない事が有ったら 自分でプラグインを書いて、拡張出来るとな。既に、指南書を書かれた方がいた。 Light Table プラグインチュートリアル

こちらに簡単な使い方が出てた。もう去年には、知ってる人は知っていたのね。 Clojure対応のIDE Light Table を使ってみた そして、本の著者の方も広報に努めておられた。 Light TableでClojure入門

情報源

こういう先端的な事は、アドベンドカレンダーだなと思って、去年のやつを覗いてみた。 Clojure Advent Calendar 2013

こういう方がおられて 神の言語から降りたことで、未来になった言語としてのClojure こういう所からいろいろな物を発掘するらしい。

open source Clojure libraries.

The Clojure Toolbox

The Central Repository

まとまっているんで、金鉱なんですかね。 そして、採掘に疲れたら、ちょっとしたクイズで暇潰しするのもいいかも。 ClojureScript Koans

vimでは

宗教戦争にならないようにvim系も探してみる。

Vimで始めるClojure生活 知らない間に随分と進化してんのね。これはいい鴨。emacsの方は、結構進化が激しくて たまにミスマッチを起す事が有るけど、vimの方はどうなんだろう? 事情は同じかな。

Clojure Ring

vimのアーティクルを書いていた人が、 Clojure Ringについても書いていたよ。 魚が一匹見つかると、その周辺にも美味しい臭いがしてるって事の典型例だな。

で、このRingってのは何者よ? 本が無いので分からんと言うのは言い訳になるんで、 がっつりと想像してみる。

おいらの理解では、進化したCGIですな。(たとえが古すぎるぞってのは、無しの方向で。 何せ、CERNのhttpdとか、apacheの1.3系ぐらいまでの知識しか無いのもですから)

CGI基準で考えると、URLに乗ってやってきたリクエストのうち、CGIエリア以下にある 物のみ、アプリを起動して、パイプで入出力しるってのが昔の流儀。

今は、httpdも色々あらーな。アプリもいろいろあらーなってんで、その間の仲介を やってくれるのがRingなんだな。仲介するには、ちゃんと規格を決めておなねばならん。 規格に沿った作り方をしとけば、組み合わせは自在って訳か。

たまには、Webに手を出してみてもいい鴨。

Clojure Enlive

そして、近くにまだ、どじょうがいましたよ。今度は、 Clojure Enliveについて ですって。要するに、htmlの組み込みが出来末世って訳か。

世の中、Web、Webで回っているのね。アンドロドロイドしかり、Webのアプリで ございます。FirefoxのOSで御座いますって事ね。

それらの統一理論をClojure一本でやっちゃおうって事は、覚える事を最小にって事で、 世の中の楽して儲けようって風潮に合致してますな。 そう、初めてのClojure本って、いかに楽して儲けるかの本、、、なんだろうね。 (実物見てないから、知らないけど)

clooj

上記は、いろいろ取ってきて楽しようって話だったけど、世の中には、たった一つの ファイルから始めるclojureも存在してます。

Download clooj から、cloojを落としてきて、ダブルクリックするだけ。これが有名な、clojure養成ギブスですだ。 まずは、これで体力を養う事が肝要。

上の例みたいに、いろいろな物を取り込むと消化不良になってしまって、大事な栄養を 逃してしまいますよ。少し体力が付いてきたら、 Building Clooj from Source を参考に、使われているclojureのバージョンでもUPしてみるのが良いと思いますよ。