Step1

English page

Kahua Release

kahua-web Release

Security Advisory

Event Log

Documentation

For developers

Site info

Related Site

まずは動かしてみる

何はともあれ動くことを確認したいのが人情というもの。 まずはKahuaを動かしてみましょう。

サイトバンドルを作成する。

まずはサイトバンドルを作ります。 $HOME/workに移って、kahua-package create を実行します。サイト名 は site とでもしておきましょう。

% cd ~/work
% kahua-package create site
%

ちゃんと中身ができているか見てみましょう。

% find site
site
site/app
site/app-servers
site/database
site/etc
site/etc/kahua.conf
site/etc/user.conf
site/logs
site/plugins
site/run
site/socket
site/static
site/templates
site/tmp
%

次に、このサイトバンドルに対してkahua-spvrを起動してみます。 まずはコマンドラインオプションからサイトバンドルを指定して みましょう。

% kahua-spvr -S ~/work/site -H localhost:8088

これで http://localhost:8088/ にWebブラウザでアクセスして みましょう。

404 Not Found

The requested URL / was not found on this server.

という画面が表示されれば成功です。まだ何のアプリケーション も登録、起動していないため、この画面が出るのです。端末に 戻って Ctrl-C で kahua-spvr を中断しましょう。

それでは、このサイトバンドルをデフォルトにすべく、 環境変数を設定します。

% KAHUA_DEFAULT_SITE=$HOME/work/site; export KAHUA_DEFAULT_SITE

この設定を $HOME/.profile あたりに書いておけば、次回以降 ログインした時、自動的に $HOME/work/site がデフォルトのサイト バンドルとして扱われます。

% kahua-spvr -H localhost:8088

ブラウザでアクセスすると、先ほどと同じ画面が見えるはずです。 今度はこのままkahua-spvrを起動しておきましょう。別の端末を 起動して、以降の作業はそちらで行います。

アプリケーションのスケルトンを生成する

今作り上げたサイトバンドルに、0からアプリケーションコードを 書いていくこともできますが、ここでは kahua-package generate コマンドを使って、アプリケーションのスケルトン(骨組み)を 生成してみましょう。このチュートリアルでは、共有ブックマーク アプリケーションを作るつもりなので、名前はbookmarksとします。

% kahua-package generate bookmarks
Creator Name> Tatsuya BIZENN
E-Mail Address> bizenn@example.org
%

どんなものが生成されているのか、ちょっと覗いてみましょう。

% find bookmarks 
bookmarks
bookmarks/bookmarks
bookmarks/bookmarks/bookmarks.css
bookmarks/bookmarks/bookmarks.kahua
bookmarks/bookmarks/version.kahua.in
bookmarks/test
bookmarks/test/test.conf.in
bookmarks/test/test.scm.in
bookmarks/plugins
bookmarks/plugins/bookmarks.scm
bookmarks/templates
bookmarks/templates/page.xml
bookmarks/AUTHORS
bookmarks/ChangeLog
bookmarks/DIST
bookmarks/DIST_EXCLUDE
bookmarks/INSTALL
bookmarks/Makefile.in
bookmarks/README
bookmarks/MESSAGES
bookmarks/app-servers
bookmarks/configure.ac
bookmarks/install-sh
bookmarks/bookmarks-start.in
bookmarks/bookmarks-stop.in
bookmarks/bookmarks.conf.in
bookmarks/COPYING
%

ずいぶんどっさりと生成されています。これは、単独で配布可能な アプリケーションのスケルトンとなるように意図しているためです。

さて、このアプリケーションは、すでにそのままインストールして 実行可能なコードになっています。先ほどのサイトバンドルに インストールして動かしてみましょう。例によって適当に折り返しています。

% ./DIST gen
%

まず、DISTはユーティリティスクリプトで、./DIST gen でconfigure.ac からconfigureを生成します。ここでautoconfが呼ばれているわけです。

% ./configure --prefix=/usr/local/kahua --with-site-bundle=$HOME/work/site
checking for gosh... /usr/local/bin/gosh
checking for kahua-install... /usr/local/kahua/bin/kahua-install
checking for a BSD-compatible install... /usr/bin/install -c
configure: creating ./config.status
config.status: creating Makefile

生成したconfigureを起動してビルドの準備をします。--prefixには Kahuaをインストールする際にconfigureに渡したのと同じ値を渡します。 --with-site-bundleには、インストール先となる先ほど作成したサイト バンドルのパスを指定します。

% make
sed -e "s@##GOSH##@/usr/local/bin/gosh@" -e "s@##PLUGINS##@@" \
    -e "s@##KAHUA_WORKING##@/usr/local/kahua/var/kahua@" \
    -e "s@##KAHUA_LIB##@/usr/local/kahua/lib/kahua@" \
    -e "s@##BOOKMARKS_VERSION##@0.0.0@" test/test.scm.in > test/test.scm
sed -e "s@###BOOKMARKS_INPLACE###@/home/bizenn/work/bookmarks@" bookmarks-start.in > bookmarks-start
chmod +x bookmarks-start
sed -e "s@###BOOKMARKS_INPLACE###@/home/bizenn/work/bookmarks@" bookmarks-stop.in > bookmarks-stop
chmod +x bookmarks-stop
sed -e "s@###BOOKMARKS_INPLACE_SOCKETBASE###@/home/bizenn/work/bookmarks/tmp@" \
    -e "s@###BOOKMARKS_INPLACE_WORKING###@/home/bizenn/work/bookmarks@" \
    -e "s@###BOOKMARKS_INPLACE_DOCPATH###@/home/bizenn/work/bookmarks@" bookmarks.conf.in > bookmarks.conf
rm -rf tmp
mkdir tmp
test -L checkout || ln -s . checkout
% make check
rm -rf tmp
mkdir tmp
test -L checkout || ln -s . checkout
rm -f test/test.log
cd test; /usr/local/bin/gosh -I/usr/local/kahua/lib/kahua ./test.scm > test.log
Testing bookmarks ...                                            passed.
%

普通にmakeしてmake checkします。あとはインストールするだけ。 インストールは、サイトバンドルを作成したのと同じユーザで 行わなければなりません。

% make install
/usr/local/kahua/bin/kahua-install -S /home/bizenn/work/site -t script bookmarks/bookmarks.kahua bookmarks/version.kahua
/usr/local/kahua/bin/kahua-install -S /home/bizenn/work/site -t script --no-overwrite 
/usr/local/kahua/bin/kahua-install -S /home/bizenn/work/site -t static --no-overwrite bookmarks/bookmarks.css
/usr/local/kahua/bin/kahua-install -S /home/bizenn/work/site -t plugin -r bookmarks.scm \
                                        plugins/bookmarks.scm
for f in ; do \
          /usr/local/kahua/bin/kahua-install -S /home/bizenn/work/site -t plugin -r $f plugins/$f;\
        done
mkdir -p /usr/local/kahua/bin
for f in page.xml; do \
          /usr/local/kahua/bin/kahua-install -S /home/bizenn/work/site -t template -r bookmarks/$f templates/$f;\
        done
================================================================================

Please edit app-servers in the Kahua working directory to add
 "bookmarks" entry.

  (bookmarks :arguments () :run-by-default 1)

================================================================================

最後のメッセージに注目してください。これは、アプリケーションbookmarksを 有効にするためには、まだ作業が必要なことを示しています。

まず、$HOME/work/site/app-servers を開きます。そして、

(bookmarks :arguments () :run-by-default 1)

のエントリをそこに書き込みます。こんな具合になるはずです。

;; -*-scheme-*-
;; Application Service Configuration alist.
;;
(;;Each entry follow this format:
 ;;(<type> :arguments (<arg> ...) :run-by-default <num>
 ;;        :profile <path-to-profile-base>
 ;;        :default-database-name <path-to-database>)
 (bookmarks :arguments () :run-by-default 1)
 )

保存したら、kahua-adminコマンドを起動してapp-serversファイルを reloadコマンドで再読み込みします。

spvr> ls
wno   pid type         since        wid
spvr> reload
(bookmarks)
spvr> 

どきどきしながらブラウザで http://localhost:8088/ にアクセス してみます。「Hello Kahua」が表示されましたか? 表示されたら、 「version」リンクをつついてみましょう。「bookmarks: version 0.0.0」 と表示されたら、bookmarkアプリケーションは正常に動作しています。

EmacsからKahuaにつなぐ

せっかくEmacsに連携のためのコードをインストールしたのですから、 EmacsからKahuaに(そしてbookmarks)につないで制御してみましょう。

まず、Emacsに使うべきサイトバンドルを教えてやる必要があります。コマンド ラインからEmacsを起動しているのなら環境変数がそのまま引き継がれますが、 そうでない場合にも使えるよう、.emacsに以下のフォームを追加します。追加 する箇所は (require 'kahua) よりも後ろにしてください。

(setq kahua-site-bundle (expand-file-name "~/work/site"))

第3回Kahuaセミナーではcustom-set-variablesを使っていましたが、 こちらの方がシンプルでわかりやすいでしょう。expand-file-nameは、「~」を ホームディレクトリに展開するための関数です。これでEmacsを再起動すれば、 $HOME/work/site をデフォルトのサイトバンドルとして使用するようになります。

kahua-adminを使う

Emacsを再起動したら、まずはM-x run-kahuakahua-adminを使ってみましょう

spvr> ls
wno   pid type         since        wid
  0 15469 bookmarks    Jan 23 18:30 bxp:3v9qg
spvr>

Emacsからkahua-adminを使うメリットはたくさんありますが、特にヒストリ とヒストリサーチは便利です。

 M-p  --> ヒストリを遡る
 M-n  --> ヒストリを進む
 M-r  --> ヒストリを検索する

さて、このサイトバンドルは新たに作成したものなので開発ユーザがまだ ありません。kahua-shellを使うのには必要になりますので登録しておきま しょう。

spvr> adduser gon hogehoge
done
spvr> lsuser
("gon")
spvr>

bizennがユーザ名、hogehogeがパスワードです。

kahua-shellを使う

さらに便利なのがkahua-shellです。M-x run-kahua-shellkahua-shellをEmacs内で起動します。すると、ミニバッファ内に

hostname:

というプロンプトが出ます。これはssh経由でリモートのKahuaに接続 する際に指定するものですから、今回は単にEnterキーを押します。

Welcome to Kahua.
username: gon
password: ;; <- パスワードhogehogeを入力する
wno type         since        wid
  0 bookmarks    Jan 23 18:30 bxp:3v9qg
select wno> ;; <- 0を入力する
bookmarks(bxp:3v9qg)>

これで、bookmarksのワーカプロセスに接続してREPLが使える状態に なっています。

bookmarks(bxp:3v9qg)> (+ 1 2 3)
6
bookmarks(bxp:3v9qg)> greeting
#<closure #<identifier kahua.server#x>>
bookmarks(bxp:3v9qg)> version
#<closure #<identifier kahua.server#x>>
bookmarks(bxp:3v9qg)>

ここから、いよいよこのbookmarksアプリケーションをソーシャル ブックマークに仕立て上げていきますが、その前に、Kahuaの アプリケーションの概要を把握しておきましょう。

Copyright (c) 2003-2007 Kahua Project Contact | About Us