Skip to content

Q. Why name "macchiato.js"?

VoQn edited this page Jun 14, 2012 · 1 revision

japanese note

A1. 既にある JavaScript テストフレームワークに mocha があったから

元々は Haskell の QuickCheck の仕様に忠実な quickcheck.js としてプロトタイプを開発していたのだけれど、

  • Haskell と違って 型安全でも参照透過でも遅延評価でもなく、プロトタイプベースのオブジェクト指向言語
  • 関数型プログラミングで実装するとパフォーマンスが出ない上に、利用側でテスト書くのがダルくなる
  • 既存の mocha や QUnit に TDD, BDD を任せ、参照透過なメソッドに対してテストを書く、という事が出来るようなシナリオを考えていた

このような理由で QuickCheck, あるいはそれをもじった形のライブラリの名前は避けようとした。

ライブラリを利用してテストを書くユーザーへは、出来る限り簡易かつ、「JavaScript らしく」書けるようなものを目指している

A2. macchiato.coffee というシャレで決めたから

Java が元々コーヒーのスラングだし、sugermochabarista も既にあるので、「もう今のうちにシャレで取れる名前とってしまえ」というかなりヒッピーな動機で決めた。

テストコードを CoffeeScript で書かれるとして

macchiato にテストの coffee(script) を stock して、自分のライブラリの出来を吟味(test|taste)する!! 酸いも甘いも(suite|sweet) ユーザー次第!! (ゲラゲラ)

というような冗談ドリブンで開発してる。 なので public API がふさげた感じになる。

A3. 甘いのが好きだから、と、関数型パラダイムのいいとこ取りを”甘く”表現したかったので

macchiato.js には

  • パフォーマンスが優先なら、プロトタイプベースのシングルトンオブジェクトを破壊的に運用する
  • 楽に書きたい、処理のオーダーがそう高い要求でない場合は関数型プログラミングで書ける
  • prototype based OOP と FunctionalPrograming のいいとこどりと、その落ち着きどころを見つけたい

という目標がある。

"macchiato" はそもそも「染みのついた」という意味なので、 「Haskell の世界から降ろしたらちょっと混ぜ物(破壊的代入)が入ってしまった (でも美味いことは美味い)」みたいなニュアンスも含んでいる