こんにちは。まっつんこと松藤です。この度、厳正なる社内会議の結果、「まっつんチャレンジ」シリーズを始めることになりました。このシリーズでは私が今までにやったことがなく、かつ(私にとって)難易度の高いお題にチャレンジしていきます。私がチャレンジしていく中で迷ったり、間違ったりする部分もすべて書いていく予定です。もしかすると達成できなかったり、一部をコメントアウトして動作させるといったインチキを行う可能性もあります。ちなみに「まっつんチャレンジ」のお題は自分で考えるのではなく、ITEMANから与えられることになっています。

さて、第1回目の今回のお題は「Kahuaによるユーザ登録アプリケーションの実装」です。いきなり「Kahuaってなに?おいしいの?」状態です。公式WebサイトにKahuaについて説明がありました。

MATSUFUJI Hideharu
Kahuaとは?
Kahuaは継続ベースのアプリケーションサーバ/フレームワークであり、修正BSDライセンスの下オープンソースソフトウェアとして公開されています。

Kahuaは食べ物ではありませんでしたorz

そうです。KahuaPiece Frameworkと同じ継続ベースのフレームワークなのです。今回は「ほかの継続サーバのフレームワークを使ってみてPiece Frameworkとの違いを比較してみる」というのがお題の意図のようです。しかし、まだまだわからないことだらけです。言語は?動作環境は?そこでWebサイトをざっと見たところ次のことがわかりました。

  • KahuaはScheme言語処理系Gaucheで書かれている
  • Kahuaにはアプリケーションサーバが含まれている
  • Kahuaとはハワイ語で基盤、基礎、土台、広場(集会場)、何かを産み出す母体という意味である
  • Kahuaは「かふあ」と読む

私はLisp系の言語は今まで全く触ったことがありません。「S式ってなに?」な状態です。さすがです。第1回目から容赦ないお題です。いい機会なので、Lispの勉強も兼ねてやっていきたいと思います。

動く環境がないことにはどうにもならないので、まずは環境の構築から始めます。Kahuaが使用するGaucheはUnixプラットフォームを基本としているので、今回はUbuntu 8.10 Desktop上で構築していきます。(コンパイル済Windows用バイナリもありますが、実験段階ということなので今回は見送りました。)

KahuaのWebサイトにあるKahuaのためのGaucheインストール入門を参考に、まずGaucheをインストールします。

インストール入門を参考にしながら、Gaucheをダウンロード、コンパイルします。(「いまどきコンパイル?」と思われる方はこちらをご覧ください。)

tar xvzf Gauche-0.8.14.tgz
cd Gauche-0.8.14
./configure --enable-threads=pthreads --enable-multibyte=utf-8
make
make -s check

make -s checkの結果を見て失敗がないことを確認し、インストールします。

sudo make install
make install-check

make install-checkの結果を見て失敗がないことを確認します。これでGaucheのインストールは完了です。バージョンの確認をしてみます。

$ gosh -V
Gauche scheme interpreter, version 0.8.14 [utf-8,pthreads]

Gaucheをインストールできたので、Kahuaをセットアップする を参考にKahuaをインストールします。

Kahuaのセットアップのドキュメントには「とりあえず試す」と「きちんとインストールする」のふたつの方法が記載されています。「きちんとインストールする」ではkahuaユーザ、kahuaグループを作成し、その権限でKahuaを動作させる方法が記載されています。今回は「とりあえず試す」を参考に/usr/local/kahua以下にインストールしていきます。さっそくKahuaをダウンロード、コンパイルします。

tar xvzf Kahua-1.0.7.3.tgz
cd Kahua-1.0.7.3
./configure --prefix=/usr/local/kahua --with-site-bundle=$HOME/site
make
make check

make checkの結果を見て失敗がないことを確認し、インストールします。

sudo make install

次にサイトバンドルを作成し、その下にサンプルをインストールします。

/usr/local/kahua/bin/kahua-package create ~/site
rm ~/site/app-servers
make install-examples

サイトバンドルについてはあとで調べるとして、とりあえず起動してみました。

/usr/local/kahua/bin/kahua-spvr -H localhost:8888 -S ~/site

http://localhost:8888にアクセスしてみます。すると、Lambda booksというデモサイトが表示されました。

無事、Kahuaを起動することができましたので、サイトバンドルについて調べてみます。Webサイトには以下のように説明されています。

サイトバンドル
この、1つのkahua-spvrの下にぶらさがるサーバ群をまとめて「サイト」と呼んでいます。ちょうどZopeのインスタンスみたいな感じでしょうか。 このサイトの中では、アプリケーション間でデータベースやセッションを共有することができます(というより、デフォルトで共有している)。複数のアプリケーションが簡単に連携できるわけです。 このサイトが使うデータベースやアプリケーションコード、テンプレートや設定ファイル、開発ユーザアカウントなど、全てのものを1つのディレクトリ階層にまとめたものがサイトバンドルです。

PHPではあまり使用されませんが、Kahuaはアプリケーションサーバとして動作します。Kahuaでは先ほど行ったようにkahua-spvr(スーパバイザサーバ)を起動するわけですが、これはサイトと呼ばれるプロセス群を管理します。サイトにはひとつ以上のアプリケーションが存在し、これらのコードや設定ファイルがまとめられたディレクトリがサイトバンドルです。作成したサイトバンドルのディレクトリ構成は下記のようになっています。

kahua-site-directory.png

appディレクトリ以下のfoldlist, lambdabooksはそれぞれがひとつのアプリケーションとなっています。Piece FrameworkCakePHPなどPHPのフレームワークではアプリケーション単位でコードや設定ファイルを管理するように設計されていますが、Kahuaではこれをサイト単位で行うように設計されています。さらに、引用した説明にもあるようにサイト内のアプリケーション間のデータベースやセッションは共有することができます。実際にサンプルアプリケーションのLambda booksとWiki Ikiでは認証アプリケーションのloginを共有して使用しています。

サイトという考えが、システムを設計する上でどういった効果をもたらすかを考えてみたのですが、今の段階ではまだなんとも言えませんでした。実際にアプリケーションを作っていないので、当たり前といえば当たり前なんですが。

今回参考にさせていただいたKahuaのWebサイトはよくまとまっており、インストールに関して迷うことはほとんどありませんでした。次回はユーザ登録アプリケーションを作ってみます。すっかり忘れてましたが、継続ベースについても調べないと。

参考文献

トラックバック(0)
  • このブログ記事のトラックバックURL:
コメント