Xorshift を JavaScript(WebModule)で
XORShift.js (ドキュメント) をWebModule で実装しました。
XORShift.js は、Math.random() の代替機能です。
ランダムシードを指定可能で、値の再現性も備えています。
XORShift.random(); // -> uint32 な数値
ランダム生成器は実質10行ほどの小さなプログラムですが、モジュールの作成作業はトータルで30分ほどです。
30分の内訳は、
- Xorshift の仕様把握 (6分)
- メルセンヌ・ツイスター を実装すべきか迷った時間 (3分)
- GitHubでリポジトリ作成(20秒)
- WebModuleから雛形を生成(5秒)
- 実装(4分)
- 3パターンのテストケースの作成とテスト(7分)
- ドキュメントの作成(5分)
- クロージャコンパイラのアドバンスドモード対応 (WebModuleの機能)
- どこでも動くように部品化 (WebModuleの機能)
- 静的解析 (WebModuleの機能)
- git push, npm publish
な感じです。
WebModule をベースとすることで、 面倒な部分をカットできた良い例だと思います。
追記
(ε・◇・)з o O ( そのあと、シードの偏りを防ぐためのコードと
(ε・◇・)з o O ( シード設定直後に乱数を捨てる機能 XORShift.dump などを追加して
(ε・◇・)з o O ( 結局 1時間追加で実装してしまいましたなー