Ocsigen/Eliom と PG'OCaml を使った Web開発サンプル (OMakefile付き)

明日の OCaml Meeting Tokyo 2009 で Eliom/Ocsigen について LTします!
これに備えて、 EliomPG'OCaml を使ったサンプルアプリを準備しました!

  • Eliom は OCaml 用の Webプログラミングのライブラリです。 Ocsigen上で動作します。
    • OCaml の静的型付けによる安全性や多相バリアントの柔軟な性質を生かして…
    • 必ず(ほぼ?)validなXHTMLを生成します
    • HTTPのリクエストパラメータとフォームの型が整合するため入力値の復元や検査のためのコードが不要です
  • PG'OCaml は、 OCaml から PostgreSQL にアクセスするためのライブラリです。

サンプルは ごく簡単なテーブルの表示・行の追加をおこなうアプリです.
ここからダウンロード

環境の準備

findlib ライブラリと,他の関連ライブラリをインストールし

$ ocamlfind list 

で、pgocaml と ocsigen が出るようにしてください。

テーブルの作成

$ psql84 (オプション) < data.sql

内容はこれだけです

CREATE TABLE mytable (
    id SERIAL PRIMARY KEY,
    name TEXT NOT NULL,
    age  INTEGER NOT NULL,
    address TEXT NOT NULL
);
INSERT INTO mytable(name,age,address) VALUES
  ('keigoi', 27, 'Nagoya'),
  ('xxx', 30, 'Osaka'),
  ('yyy', 15, 'Tokyo');

コンパイル

  • simpleeliomapp-0.1.tar.gz を展開する.
  • 展開された ディレクトリに cd し

simpleapp.ml の 43行目

    let dbh = PGOCaml.connect ~user:"keigoi" ~database:"keigoi" () in

の,DBのスキーマ名やユーザ名・パスワード(あれば)が違うはずなので該当部分を適当に書き換える.

$ omake

これだけ!

インストール,実行

ocsigen.conf を同梱しているので、それを参考に /etc/ocsigen.conf を書き換え(simpleeliomapp.cma の絶対パスとか)、

# ocsigen

でocsigenをスタート。 http://localhost:8080/simpleeliomapp/list で開始です。

どんなアプリ

  • 住所録テーブルmytableの一覧と追加が出来ます。

次の画面が出れば成功

追加


を入れると

入力値検査

Ocsigen のデフォルトでは、数を入れるべきところに文字列を入力すると

となる。

ソース

ソースの解説は次回のエントリをお待ちください