アルダグラムでエンジニアをしている @sukechannnn です! 開発に携わっている KANNAレポート は、Excelを取り込んでその見た目のまま帳票を電子化できるサービスで、いくつかのExcel関数にも対応しています。 以前 @watabee が登壇した際にその仕組みについて触れていますが、現状は数式の依存関係(他セルの参照や他セル数式の計算結果を利用して計算するなど)を深さ優先探索(DFS)によるトポロジカルソートで構築した上で、各数式の計算は math.js を利用して行っています。 math.js は簡単に独自の数式を定義し計算できて便利なのですが、その柔軟さの代償として計算の度にパースして評価するため、どうしてもオーバーヘッドが大きくなってしまいます。KANNAレポートでも依存が5000個以上あるような関数はかなり遅くなってしまうという課題がありました。 高速化のためにでき