common-lisp
RaspberryPi
LTk

CommonLispでGUIプログラミング~空ウィンドウ~

はじめに

CommonLispでGUIアプリケーションを作りたいと思って色々調べていたところ、Ltkという便利なものを見つけました。
Ltkとは、CommonLispから簡単にGUIプログラミングを行うもので、OSを問わず利用できるという利点もあります。
これならRaspberryPiのRaspbianでも動くじゃん!
ということで、さっそく作ってみました。

Tcl/tkのインストール

Ltkは内部的にはTcl/Tkを呼び出しているため、Tcl/Tkが必要です。
なので、まずは以下のコマンドでTcl/Tkをインストールします。

sudo apt-get install tcl tk

パッケージ作成

ltkをQuicklispでロードし、パッケージ定義

packages.lisp
(ql:quickload "ltk")

(defpackage :cl-ltk
  (:use :common-lisp :ltk))

Quicklispは以下を参照してインストールしてください。
Quicklisp beta

空ウィンドウプログラム作成

今回は何もしない空ウィンドウを作成します。

basewindow.lisp
;; Load packages
(load "packages.lisp" :external-format :utf-8)

;; Go into the defined package
(in-package :cl-ltk)

;; Main function
(defun main ()
  (with-ltk ()
        (wm-title *tk* "BaseWindow")
        (bind *tk* "<Alt-q>"
          (lambda (event)
            (setq *exit-mainloop* t)))))

;; Execution
(main)

実行

SBCLを起動して、以下のコマンドで実行

(load "basewindow.lisp" :external-format :utf-8)

以下実行中の様子
Raspbianで実行しました。

basewindow.png

終了するときは、"Alt-q"もしくは、右上のバツボタンで閉じます。

最後に

CommonLispでもGUIアプリケーションが作成できました。
思ったよりも簡単で、C/C++ & Win32APIとかで作るよりもはるかに短いステップ数で作成できることに驚きました。
まあ、いまどきC/C++ & Win32APIでGUI作る人はそんなにいないと思いますが(笑)

これでRaspberryPiでもGUIアプリケーションが作成できるので、電子工作と組み合わせても色々できそうですね。

今回のソースコードもGithubで公開しています。
Github