common-lisp
Webアプリケーション
caveman2

CommonLispのWebアプリケーションフレームワークCaveman2についてのメモ

はじめに

CommonLispでWebアプリケーションを作成するためのフレームワークであるCaveman2について、調べたことをメモしていきます。

注) Roswellを使うこと前提です。事前にインストールしてください。(以下参照)

スケルトンプロジェクト作成

Roswellのlocal-projectsディレクトリ内に移動します。
自分のディレクトリがあればその中に入り、

cd ~/.roswell/local-projects/"<User Name>"

無ければディレクトリを作成してから入ります。
(これは、Githubでのアカウント名とかが良いのかな?)

cd ~/.roswell/local-projects/
mkdir "<User Name>"
cd "<User Name>"

REPLを起動します。

ros run

QuickLispでCaveman2をロードします。

(ql:quickload :caveman2)

以下のプログラムを実行し、プロジェクトスケルトンを作成します。

(caveman2:make-project #P"./myapp/" :author "<Your Full Name>")

プロジェクトスケルトンの作成に成功したら一旦REPLを終了します。

(quit)

lsコマンドなどで「myapp」ディレクトリが作成されていることを確認してください。
プロジェクトスケルトンの初期ディレクトリ/ファイル構成は以下のようになっています。

プロジェクトスケルトンのディレクトリ/ファイル構成
myapp
  ├── README.markdown
  ├── app.lisp
  ├── db
  │    └── schema.sql
  ├── myapp-test.asd
  ├── myapp.asd
  ├── src
  │    ├── config.lisp
  │    ├── db.lisp
  │    ├── main.lisp
  │    ├── view.lisp
  │    └── web.lisp
  ├── static
  │   └── css
  │        └── main.css
  ├── templates
  │   ├── _errors
  │   │     └── 404.html
  │   ├── index.html
  │   └── layouts
  │         └── default.html
  └── tests
        └── myapp.lisp

次に、「local-projects」ディレクトリ内に移動し、system-index.txtを編集します。

cd ~/.roswell/local-projects

system-index.txtに以下を追記してください。

system-index.txt
"<User Name>"/myapp/myapp.asd

こうすることで、QuickLispから「myapp」をロードできるようになります。

動作確認

REPLを起動します。

ros run

「myapp」をQuickLispでロードします。

(ql:quickload :myapp)

Webアプリケーションを起動します。

(myapp:start)

以下のメッセージが出れば起動完了です。

Hunchentoot server is started.
Listening on localhost:5000.
#S(CLACK.HANDLER::HANDLER :SERVER :HUNCHENTOOT :ACCEPTOR #<PROCESS clack-handler-hunchentoot(4) [Active] #x17191B5E>)

Webブラウザからhttp://localhost:5000/にアクセスすると、「Welcome to Caveman2!」と書かれたページが表示されます。

以下、実行中のスクリーンショット

Screenshot_20180202_230748.png

ちゃんと動作してますね〜

Webアプリケーションを停止するときは以下のプログラムを実行します。

(myapp:stop)

最後に

とりあえず、Caveman2の動作確認まで出来たので、ここからもっと色々と勉強して何か作れたらな〜、と思っています。