音の鳴るブログ

鳴らないこともある

CoffeeColliderの開発ツールについて書きます

ブラウザ音響プログラミング言語 CoffeeCollider の開発ツールについて書きます。これが分かれば誰でも開発に参加できるという按配です。PR待ってますということです。

準備

GitHub で fork して npm で依存モジュールをインストールすれば準備万端です。

git clone git@github.com:mohayonao/CoffeeCollider.git
cd CoffeeCollider
npm install .

Grunt

基本的に全部 Grunt でやっています。テストもカバレッジレポートも全部 grunt 経由。使っているツールはだいたいコマンドラインインターフェースを持っているのだけど、各タスクごとに前準備みたいなのがあって、それをはさむために grunt を使っています。

テスト

MochaChai を使っています。

# 全部テスト
grunt test

# 特定のテストのみ実行
grunt test:server

単体テストしかしていなくて、ちょっとどうにかしたいと思っています。あと、音のテストの書き方が分からなくて悩んでいます。今は何パターンかの正常値を入力して出力に NaN がなければOKという雑なかんじで、サイン波のモジュールがホワイトノイズを出していてもテストは通ってしまう。どうしたらよいんでしょうか?

カバレッジレポート

Istanbul を使っています。

# 全部レポート
grunt cover

# 特定のレポートのみ
grunt cover:client/compiler

ビルド

dryice を使っています。これは AMD で書いたコードを結合したり、その他にヘッダーやフッターをつけたり、細かい置換を行ったりできる便利モジュールです。

# テストしてテストバージョンをビルド
grunt build

# テストせずにテストバージョンをビルド
grunt build:force

# 完成版をビルド
grunt build:all

watch

grunt-este-watch を使っています。

grunt

watch してやっていることは以下のとおりです

  • 127.0.0.1:3000 でデモページ表示
  • 127.0.0.1:3000/extras/edge/ でテスト版デモページを表示
  • 127.0.0.1:3000/coverage/lcov-reportカバレッジレポートを表示
  • *.js を編集 → 関連するファイルのテストをしてテスト版のビルド
  • *_test.js を編集 → そのテストを実行 (ビルドはしない)

Travis CI

やっているのはテストの実行をカバレッジレポートの出力。これも grunt 経由でやっている。一行目は node.js で音を出すためのモジュールをインストールしない(Travisだとエラーになるため)の設定です。

env: npm_config_mpg123_backend=dummy
language: node_js
node_js:
  - 0.10
before_script:
  - npm install -g grunt-cli

https://travis-ci.org/mohayonao/CoffeeCollider

Coveralls

呼び出し方がいい加減な感じで、package.json に無理やり書いた。

  "scripts": {
    "test": "grunt travis --verbose && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"
  }

https://coveralls.io/r/mohayonao/CoffeeCollider

David

あとはREADMEにバッジつけたいがために David 使ってる。

https://david-dm.org/mohayonao/CoffeeCollider


書いている途中に飽きて雑な感じになったけど、だいたいそんな感じです。

f:id:mohayonao:20131226122231j:plain