Hackの型チェックをCI上で行っていたのですが、エラー内容を見るのにCI環境側までいちいち見に行かないといけないので、OCamlでレビューコメントとして投稿できるtypesafety-cliを作りました。
レビューコメントは下記のような感じになります。
https://github.com/hhpack/hackunit-docker-example/pull/3
このプログラムをHHVM + Composerと一緒にパッケージしたDockerイメージを作って、TravisCIでテストの自動化を行っています。(メンテナンスしているパッケージはだいたい置き換え済み)
Docker化したことにより、HHVMのリリースにもすぐに追従できるようになりました。
作った理由
もともと下記のものはHackで作っていました。
- typechecker-client - hh_clientを扱えるクライアントパッケージ
- typesafety - エラーメッセージをわかりやすい形に整形して出力するCLIパッケージ
これを機能拡張すればいいのですが、Hackで実装している為、HHVMのバージョンが上がるたびに「これ今動くんかな?」と気にする必要があるので、しばらくメンテナンス放置してると動かなくなる可能性があります。
メンテナとしては、ある程度放置していても動いてくれる方が楽なので、今回の場合はHackをやめて別実装にしました。
OCamlにした理由
最近、趣味でOCamlでコードを書いているのですが、書いていて気持ちが楽なのでOCamlにしています。
基本的にツール周りのコードは年々「雑に書きたい、しかし雑に書いてもそこそこ動いて欲しい」、と思うようになっており、OCamlはその辺があうと思っています。
OOPな言語で書くことが多くて、設計はすぐに思いつくのですが、Rubyですらも書くのはだるいと思ってしまうことが最近多いので、特にクラスの設計とか気にせず、コードを書き始められるのがOCamlのいいところですね。