OCaml Webフレームワーク Ocsigen概説 @ OSC2009Nagoya

10
OCaml ・ Ocsigenによる Webアプリケーション 今井 敬吾 / OCaml-Nagoya (twitter id : keigoi) 型安全 2009/8/22, オープンソースカンファレンス2009Nagoya

description

 

Transcript of OCaml Webフレームワーク Ocsigen概説 @ OSC2009Nagoya

Page 1: OCaml Webフレームワーク Ocsigen概説 @ OSC2009Nagoya

OCaml ・ OcsigenによるWebアプリケーション今井 敬吾 / OCaml-Nagoya

(twitter id : keigoi)

型安全

2009/8/22, オープンソースカンファレンス2009Nagoya

Page 2: OCaml Webフレームワーク Ocsigen概説 @ OSC2009Nagoya

OCaml?

• 速い (C++に肉薄!)

• コードが短い (型推論)

• 安全 (SegFaults/NullPointerExceptionがない)

• 再利用しやすい (多相性)

オーキャムル:オープンソースのプログラミング言語

最高の言語

強力な型システム

Page 3: OCaml Webフレームワーク Ocsigen概説 @ OSC2009Nagoya

Ocsigen : OCamlのWebアプリケーションフレームワーク

•型安全

•XHTML を表した型が使える!

•リクエストパラメータやフォームも型付き!

•設定ファイルなし!

Page 4: OCaml Webフレームワーク Ocsigen概説 @ OSC2009Nagoya

XHTMLリテラル•<< ... >> 部分にXHTMLを書ける

•XHTML 中 $ ... $ 部分に OCaml を書ける

•例

<< <html> <head><title>Adder!</title></head> <body> <p> $ pcdata (string_of_int (a+b)) $ </p> </body> </html> >>

Page 5: OCaml Webフレームワーク Ocsigen概説 @ OSC2009Nagoya

こんな風に書きますlet register = register_new_service ~path:["hello"] ~get_params:(string “name”) (fun _ name _ -> return << <html> ... <p> こんにちは、$ pcdata name $ さん </p> </html> >>)

register_new_service でURLとサービスを定義

-> http://localhost:8080/hello

Page 6: OCaml Webフレームワーク Ocsigen概説 @ OSC2009Nagoya

register_new_service:3つのパラメータ

let register = register_new_service ~path:["adder"] ~get_params:(int "a" ** int "b") (fun _ (a,b) _ -> return << <html> ... <p> $ pcdata (string_of_int (a+b)) $ </p> </html> >>)

相対パス パラメータ名と型

ページ本体の高階関数

Page 7: OCaml Webフレームワーク Ocsigen概説 @ OSC2009Nagoya

欠点?

•テンプレートエンジンがない

Page 8: OCaml Webフレームワーク Ocsigen概説 @ OSC2009Nagoya

PGOCaml :DBレイヤも型安全に•OCaml に SQL を埋め込み-> prepared statement に変換される

•型安全!

•らくらくDBアクセス!

Page 9: OCaml Webフレームワーク Ocsigen概説 @ OSC2009Nagoya

課題

•OCamlプログラマ育成•マニュアルの日本語化

Page 10: OCaml Webフレームワーク Ocsigen概説 @ OSC2009Nagoya

ご清聴ありがとうございました。