OSX/abclでselenium-webdriverを使う

2016-05-21 07:07:43

abcl の導入から、外部jarファイルを使うまで。

導入からSLIMEで使えるようになるまで

MacOS 10.10.5 を使っているので、homebrewでインストールする。 brew install abcl で 1.3.2 が入った。

続いて、SLIMEで使えるように .emacs に設定する。

(setq slime-lisp-implementations
      '((sbcl ("sbcl")) ; "--core" "/Users/yappy/.sbcl.core-for-slime"
        (ccl ("ccl64"))
        (abcl ("abcl"))))

Emacsを起動しなおして、M-- M-x slimeで起動するとlisp処理系の候補が聞かれるので、 abclと入力して、Enter.

Common LispでJavaのクラスを使う

CL-USER> (defparameter *my-integer* (jnew "java.lang.Integer" 12))
CL-USER> (jcall "getBytes" (jcall "toString" *my-integer*))
#<jarray [B@727fe87 {1B3954B7}>
CL-USER> (jarray-length *)
2

こんな感じで使えるようだ。クラスパスに追加したいjarファイルがある場合には

(add-to-classpath "/path/to/some.jar")

とすれば読み込んでくれる。CLASSPATH=.... abcl で起動すれば いいらしいが、SLIMEの起動時引数に与えるのはなんだかカッコ悪い。 現状

(add-to-classpath (directory #P"./libs/*.jar"))

という形で追加している。

trunk/abcl/src/org/armedbear/lisp/java.lisp を読むといいかも。

selenium-webdriverでスクレイピングツール作ってみる

(…)

きっかけ

redditArmed Bear Common Lispを知って、Clojureはうまく使いこなせなかったので、これでSeleniumを使ってみたい。

abclとは

Armed Bear Common LispはJVM上で動作するCommon Lispの実装で、Common LispをJavaのバイトコードにコンパイルする。

Development and deployment of Common Lisp applications on the JVM では、abclをどんな風に使ってるかなんとなくわかる。

読んでおきたいもの