'(you lisp me)

Lispって何だ

繋がるAndroid端末とPC

先日,ECL Androidなるものがリリースされていました.

ECL自体はCommon Lispの処理系の1つで,Cのソースコードへ変換してコンパイルするのが特徴です.ECL AndroidはそれをAndroidアプリとして動作するようにしたもののようで,ちょうど手元にAndroidタブレットがあったので早速インストールしてみました.apkファイルはこちらからダウンロードしました.

起動画面

f:id:iriscode:20151114175808j:plain

起動するとコンソールのような画面でeclが走ります.

初回起動時にはswankがインストール・コンパイルされます.

一見するとコンソールのような見た目ですが,キャレットもなく標準出力をそのまま表示しているだけのようです(?).実際に式を評価するにはいちいち右上のメニューからEvalを選択して式を入力しなければならないようで.しかしEvalの上にSwank serverという項目があり,これを選択するとSwankサーバーが立ち上がります.

ということは,他の端末から接続することが出来るじゃないか!

接続方法

まず(Swankサーバーを立ち上げた)接続先の端末のIPアドレスを知る必要がありますね.

Androidの「設定」→「端末情報」→「端末の状態」→「IPアドレス」からIPアドレスを確認してどこかにメモっておきましょう.次に,接続先の端末と同じネットワーク環境内にある端末(PC)からCommon Lisp処理系を立ち上げます(ここはECLじゃなくても大丈夫です).Swankサーバーに接続するために(ql:quickload :swank-client)したら,

(swank-client:with-slime-connection (conn "接続先のIPアドレス" Swankサーバーのポート番号)
(swank-client:slime-eval '(format t "Hello, Android!") conn))

を実行します.

するとAndroid端末の方にHello, Android!が出力されます.やったぜ.

(get-quicklisp)を評価するとquicklispも入るそうなので,もしかしたらAndroid端末上でCommon Lispプログラミングが出来るのかもしれません.とてもワクワクしますね!

Swankサーバーへの接続についてはこちらの記事を参考にさせて頂きました.