jQuery: Calx は excel 脳

紹介しようか以前に、検証することさえ躊躇してたりもしたんだけれども。

jQuery: Calx は excel 脳

この紹介文はちょっとなぁ

10 Best jQuery Graph-Chart Libraries With Demo & Comparison Table での紹介文:

Calx not only helps in generating line, bar or donut graph but also can create calculation form based of different formulas. The Calx is a jQuery plugin based on Excel calculation engine and formula parser.

チャートは デモを「読めば」わかるが、bootstrap.js と連携してるらしい。誤解してる紹介文かとも最初思ったが、まぁ確かに「グラフライブラリ」の一味とみなしてもいいのかもね。

けどさ、違うと思うんだよ、これは。

悪い言葉で言えば「excel 脳に(中途半端に)毒された人々が飛び付くもの」。続く節でこれを詳しく述べる。

Calx は WEB 版 excel もどき

名前が示す通り、こやつは「グラフライブラリの一味」とみなすのではなく、「計算機作り子ちゃん」と解釈した方がいい。もっと正確には、「(excel 的)ワークシート指向」である。

真っ先に言っておきたいのは、「excel 的ワークシートに我々が求めるものはそもそもなんなのか」について、よくよく考えるべきだ、という点についてである。

こういうことだ:

  1. データを持ってる(or 入力出来る)
  2. これを読みやすい表にしたい
  3. 読みやすい表に出来た! やったね!
  4. うーん、これ、平均取るとどうなるんだい?
  5. ふふん、平均計算なんか簡単に表に埋め込めるんだぜっ
  6. うーん、平均だけじゃ良くわからんなぁ、ほかの計算もしてみるか…
  7. ふふん、簡単簡単、これも計算埋め込めるんだぜっ
  8. 文字ばっかだとイメージ沸かんのよね、グラフにしたいなぁ…
  9. へへん、グラフさえ簡単に埋め込めるんだぜっ
  10. グラフにしたい範囲すら自由に選べるんだぜっ

この一連の行為を一貫して「エンドユーザ自身が」行える、という機能こそが「ワークシート」であろう。

けれども。Calx が提供するのは 2.~10. 全てを「(WEB アプリケーション)開発者が excel 関数にとっても似たコーディングで作れる」ということでしかない。つまりもはやほぼ「ワークシート」ではない。その開発者が作った「ワークシート的なもの」は、それを使うユーザにとっては全然ワークシートとは言えないものである。

なのでつまりこれは単に「excel に慣れた開発者向けの開発ツール」でしかなくて、excel 的であるのはプログラミングについてだけで、ユーザエキスペリエンスとは完全に無縁。(計算式を入力させるつもりならその限りではないことは認めつつも。)

WEB で操作出来る本物のワークシートとしてはね、例えば Google Docs があるわけですよ。つまり、これじゃダメな理由があって、なおかつ「自分のための作業補佐ツールではなくて人のためのものを作りたい」という条件が合致してから初めて Calx を俎上に上げるべきよ。

だいたいにしてだな、「複雑な VBA 関数に大きく依存した excel ブック」でない限りは、計算の書き直しなんかはほとんどの場合は大したことはない(かもしくはサーバサイドで大規模にさせる必要があるほど Calx がお呼びじゃないかどちらか)だろう。なので「excel しか愛せない」ほどの重症患者でない限りは、普通に Tabulator などをベースに作りこんでいったほうが「作りやすい」し、「エンドユーザが喜ぶ」と思うぞ。

そうは言ってもユースケースはそこそこ思いつかないこともない

最も考えられるのは、複雑な excel ワークシートを既に作っていて、これを「excel のブックを曝さずに WEB で公開する」際の一つの選択肢としてだろう。

どんな式が使えるのかの一覧がないのでどこまで出来るのか今ひとつ判然としないんだけれど、VLOOKUP なんぞも使えるようなので、それなりに網羅しているのかもしれない。結構複雑な金融計算が excel では出来るけど、そんなんはどうなのかね?

もう一つは、既存の html table を既に持っている場合に簡単に計算結果列をくっ付けたい場合だろうが、ただこれについても Tabulator などは普通に競合他社となるので、そこはよくよく考えてな。

一から作るんなら、「html 全部手書きで済むレベル」でこそ「あーらま簡単でいーわね」と思うけれど、本物の excel がターゲットとする「そこそこの列数・行数」になったら、もうとても保守する気になれない「プログラム」になるのは間違いないと思うわけで、なので思うに、こういう複雑なものではなく、やりたいことが単純であれば単純であるほど嬉しい、という類のもんだと思う。

てわけでいくつか自作の実例

「フレームのソースを表示」でみてね。ただ、CDN にいないみたいで、仕方なくダウンロードしてアタシのサーバにわざわざ置いてる。

一つ目:

わーお簡単だ、よね?

日常に使える自分用を考えるんなら例えばこんなか:

無論こんなんは google 検索の方が楽ちんなのでわざわざ作らないだろうが、「自分の日常にしかないヘンな計算」をこうやって手軽にツールにするのは考えてもいいのかもしれんと思う。

なお、組み込みの「excel にあるもどき関数」以外の計算がしたい場合は API に registerFunction が説明されてるので書けるよね? あとサーバサイドでの計算、てのも用意されてるみたいね。

おケツ論

デモにあるように、グラフは書ける(この場合たぶん bootstrap.js を取り込む必要がある)。けどさ、こういったグラフを描きたくなるような「そこそこな表」の方を作る手間を考えてみ。そういうことをしたいのならこういうのの方がやっぱしいいと思うわ。

もちろん「excel 式パーサとその評価」なんてのは自力で簡単に作れるものではなくて、特に「選択範囲の直感的にわかりやすい表現(A1:C9とか)」に基く計算、みたいなことまで自作しようとするならこれは滅茶苦茶大変なことなのであって、なので Calx そのものがやってくれてることは「とってもありがたいこと」なことには違いはないよ。jQuery そのものがパワフルなので「jQuery的にバリバリ作りこむ」こと自体は「excel 的であろうとする」ことを考えない限りはそう難しいことではないにしても。

逆に言うとさ、「「excel 的なシート操作・計算式パーサ」のインフラである、これは」と考えて、もう一回り大きな API を作る(あるいは誰かが作ってくれることを期待する)つもりならば、これは結構ありがたい「かもしれない」と思う。(無論「あくまでも excel 流儀にこだわりたい」場合に限る。)

てわけで Calx、おススメでっす!!!!!!!!!!