オープンソース開発者コミュニティのPoimandresは9月25日、JavaScriptとTypeScriptから利用できる数学ライブラリ
🧮 Math v0.
— Poimandres (@pmndrs) September 25, 20261.0 is out now! 🧮
We asked and Opus one shot... just kidding. Our resident expert @isaac_mason_ hand crafted the playful web's most optimized math engine.
→ allocation-free, monomorphic and benchmarked for speed
→ tiny and tree-shakable, only pay for what you use… pic.twitter. com/ Cjv3farWlo
Poimandresは、ReactからThree.npm install mathで導入できる。
座標計算から動きや色の表現まで
mathはTypeScriptで実装されており、位置や向き、拡大・
APIリファレンスによると、math/には図形の交差判定など、math/には多角形の三角形分割などの幾何処理を収録。math/は動きの加減速を表すイージングや、ばねのような動きを作るスプリングを扱う。このほか、乱数math/)、ノイズmath/)、色・math/)、目標位置に合わせて関節の配置を求める逆運動学math/)
各モジュールは個別に読み込める。未使用のコードをビルド時に除くツリーシェイキングにも対応する。
公式サイトでは、mathの各機能を使ったサンプル集を公開している。ブラウザーで動作を確認でき、ソースコードもGitHubで公開されている。
計算結果の格納先を再利用する設計
性能面では、呼び出し側が用意したデータへ結果を書き込む方式を採る。READMEの例では、2つの3次元ベクトルaとbを通常の配列として用意し、vec3.で加算結果を第1引数のoutへ書き込む。結果を格納する配列を再利用でき、計算のたびに新しい配列を作る必要がない。Poimandresは、処理速度をベンチマークで検証しているという。
共通の計算基盤を目指し、AIコーディング向けスキルも用意
mathの開発方針をまとめた文書では、ライブラリごとに数学処理が実装され、AIもその都度コードを生成する状況を取り上げている。正しさや性能を一貫して確保しにくいとして、人間とAIエージェントが共通の規約で実装できるようにする考えを示している。先行事例には、数学ライブラリのmathcat、gl-matrix、wgpu-matrixを挙げている。
mathを手掛けるIsaac Mason氏は、自身が開発する経路探索ライブラリのnavcatと物理エンジンのcrashcatの新たな基盤としてmathを位置付けている[1]。自身のX投稿では、インタラクティブなゲームやアプリに役立つ基本的な計算機能を今後も増やしていくとしている。
また、mathを使った実装やコードレビューを支援する、AIコーディングエージェント向けのスキルも付属する。メモリ効率や処理速度を意識した実装方針、注意点、コード例をまとめている。公式ドキュメントでは、npx skills add pmndrs/による追加方法を案内している。