オニギリアタタメマスカ・・・

ずいぶん昔のことですが、10/15にCLR/Hの第63回勉強会が開催されました。
Microsoftの荒井さんを講師にお招きし、ちゃっかり実践F#にサインを頂いてしまいました。


僕は今回LTに参加しました。
作っていたツール(ライブラリ?)があったので、それをお披露目しただけというつまらないLTです。
スライドは少ししかありませんが、熱狂的なK泉ファンのために一応アップしました。
slideshare - おにぎり
今日のエントリは、そんな「おにぎり」の紹介です。

おにぎりとは・・・

おにぎりは、F#用のInteractive Testingツールです。
PythonRubyのように、さくさくユニットテストを実行したかったので作りました。
F#には、NUnitをベースにしたFsUnitNaturalSpecなどのテストツールがありますが、テスト用プロジェクトをビルドしてからじゃないとテストを実行できません。
おにぎりは、対話環境(F# Interactive)上で動作するため、コンパイルすることなく、即時にテストを行うことができます。素敵ですね。


以下からα版のソースをダウンロードできます。

https://bitbucket.org/Nobuhisa/onigiri/
Mercurialをお使いの方は、
$ hg clone https://bitbucket.org/Nobuhisa/onigiri

一応.NET 4向けにビルドしたDLLもおまけで付けてありますが、F# CTPやmonoをご利用の方は自分でビルドする必要があります。
例:

> c:\Program Files\Microsoft F#\v4.0\fsc.exe -o:Release\Onigiri.dll --optimize+ --target:library --utf8output Prelude.fs Assertion.fsi Assertion.fs Core.fs
まだα版なので今後仕様などが大幅に変わるかもしれませんが、そこはオトナの対応をしてください。
以下は簡単な利用例です。

おにぎりを使おう

以下のようなプログラム(テスト対象)があったとします。

  • MyLibrary.fs


これに対するテストスクリプトです。
Onigiri.dllは、スクリプトファイルと同じフォルダに入れてあげるとラクかなと思います。

  • Test.fsx


テストがかなり適当ですが、あまり気にしないでください。
このスクリプトを、[Ctrl + A] -> [Alt + Enter] で評価するか、
対話環境上で
#load "Test.fsx" ;;
してください(後者はパスを指定しないとならないので面倒だね)。


上記のテストは全て成功しますので、対話環境内に以下のように表示されます。

============================================================
Onigiri ! Onigiri !
============================================================


プロジェクトに追加されたスクリプトファイル(.fsx)はコンパイル時には除外されますので、テストコードを残したままリリースビルドしても問題ありません。素敵ですね。
定義されている関数や演算子の一覧は、Assertion.fsiというシグネチャファイルをご利用ください。


正式版のリリースは気が向いたらします・・・。
清く美しいF#erの皆さんが、機能要望とか改善点などを指摘してくれたら嬉しいな。


あ、魔導書Vol.2の書籍版が発送されましたね。良かったら読んでね。
Enjoy Onigiri !