osiire’s blog

ふしぎなそふとやさん

OCamlを使ったシステム開発まとめ

うちの会社(有限会社ITプランニング)でやってきたOCamlを使ったシステム開発の概要を書いておきます。ふと思うと今までまとめて公開したことはなかったなと。別に隠す程のものじゃないし、もしこれからOCamlを使ったプロジェクトを始めてみたい人の参考になれば嬉しいです。

2006年

某証券会社のWebサービスの一部を担当
株価を解析して、その結果をWebAPIとして提供。OCaml + MySQL。HTTPベースで提供されるXMLファイルが生データだったので、この時初めてXMLのパースにxml-lightを使った。これはかなり便利。その後も使い続けている。nc(network cat)ライクなモジュールも作った。行列変換のためにC言語との連携もしたけど、特に問題なし。そういえば、この頃はmarshalingが好きで、DBへmarshalingデータをそのまま保存して「Objectデータベースだぜ!」などと遊んでいた。OCamlのコードはトータル5000行程。今も元気に稼働中。

2007年

某FX会社のサービス
サーバーサイドを全部OCamlで作成。Web APITCP接続によるデータサービス。OCaml+PostgreSQL+Microsoft SQL ServerMicrosoft SQL Serverとの接続にはFreeTDSを利用。TCP接続を受け付けながらデータベースアクセスも行う24H365D稼働のデーモンが必要だったので、Eventモジュールを駆使しながらネットワーク+マルチスレッドプログラミング。マルチスレッドとMicrosoft SQL Serverとの接続が両立できず結構大変だった。ついでに、DBデータ管理用のWebインターフェイスOCamlで作った。これはCamlGIを使用。OCamlのコードはトータル5000行程。

2008年

2007年に作った某FX会社のサービスの改造版
OCamlのコードはトータル5000行程。ここでシステムの中心となるデーモンにconcurrent cellを適用。かなり冒険だったけど無事移植完了。今も元気に稼働中。

2009年

2008年に作った某FX会社のサービスの改造版
今度はOCaml+Oralce。OCIを呼び出すライブラリは以前書いたことがあったので、それを改良して使った。でも大変だった。このライブラリはそのうち公開できたいいな。OCamlコードはトータル5000行程。

某自動車販売会社用のWebサービス
サーバーサイドを全部OCamlで作成。OCaml+MySQL。既に稼働中のサーバーへ導入しなければならず、その環境が少し古かった(debian serge)ので一瞬焦ったが、ちゃんとOCaml開発環境は揃った。初めてpa_monadを導入したが、とても便利だった。重回帰分析をOCamlで実装した(Cで書くのがイヤだったから)。OCamlのコードはトータル4000行程。

某会社向けサービスの一部
携帯アプリからの要求に応えるWebAPI。OCaml+MySQL。CamlGIで応答。単体テストが出来るようにモジュール分けを細かくしたのが特徴。規模が小さかったとはいえ、品質が良くて結合テスト時間が減った(かも)。OCamlのコードはトータル2000行程。

まとめてみると意外と少ない気がしてきました。うん、もっとOCamlで作ろう!
あっ、ちなみに開発体制は社員二人とアルバイト二人程。もちろん全員OCaml使い。こういう恵まれた環境だから開発できてきたんだろうなと思います。多謝。