BT

Math.js: 多機能JavaScript Mathライブラリ

| 作者: Roopesh Shenoy フォローする 0 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2014年1月27日. 推定読書時間: 3 分 |

あなたのリクエストに応じて、ノイズを減らす機能を開発しました。大切な情報を見逃さないよう、お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう。

原文(投稿日:2014/01/20)へのリンク

 Math.jsはJavaScriptおよびNode.js向けのオープンソースMathライブラリで、数値、ビッグナンバー、複素数、単位、行列を扱うことができる。これは柔軟な式パーサも備えている。さらに詳しく知るため、InfoQはプロジェクトの創始者であるJos De Jong氏にコンタクトした。

Jos氏はプロジェクトの背景について、次のように説明する。

JavaScriptには、行列、複素数、統計などに使える優れたライブラリがすでにあります。でも、そこには先進的な数学処理をするための統合ソリューションが欠けていました。既存のライブラリの多くはchained APIを備えています。これは非常にわかりやすいのですが、ライブラリ自身が知っているデータ型しか受け付けません。そのため、統合が問題になります。行列のライブラリは複素数を扱えないといった具合に、組み合わせることができないのです。Math.jsのAPIは、JavaScriptのMathオブジェクトのAPIと組み込みオペレータ、各種入力を受け付けるスタティック関数、と同じです。Math.jsでは、先進的なデータ型、関数、定数をサポートするようAPIを拡張しています。

Math.jsがアプリケーション開発における数学を、もっと簡単に、もっと楽しいものにすること、そして、開発者の世界とアカデミックな世界とのギャップを橋渡しをするのに役立つことを期待しています。

Math.jsには3種類の使い方がある。

  1. スタティック関数と定数を使う(JavaScriptのMathオブジェクトのように)
    math.add(2, 3);                  // 5 
    math.sqrt(-4);                   // 2i 
    math.pow([[-1, 2], [3, 1]], 2);  // [[7, 0], [0, 7]]
  2. 文字列式を評価する
    math.eval('1.2 * (2 +  4.5)'); //7.8
    math.eval('5.08 cm to inch'); //2 inch 
  3. chainingオペレーションを使う
    math.select(3)
        .add(4)
        .multiply(2)
        .done();      //14

Math.jsのWebサイトそのドキュメントにサンプルが載っている。

Jos氏はこの2か月以内に、最初の安定バージョンである1.0をリリースするつもりだ。

残っているのは、リファレンスドキュメントを書くこと、ユニットテストによるコードカバレッジを100%にすること、あちこちにある荒削りなところを解消することです。

1.0ではAPIが安定化され、その後は最適化にフォーカスが移ることになる。Jos氏は性能改善のために、型付き配列、並行処理、asm.jsなどを使う可能性を検討している。

なぜJos氏は、すでにNumPi/SciPiといったライブラリのあるPythonなどではなく、JavaScriptを選んだのだろうか。

ここ最近、私たちはクラウドとWebアプリケーションへ大きく動いているのを目の当たりにしています。私もすっかり夢中になっています。ブラウザとJavaScriptエンジンはどんどん高速になり、この数年で、node.jsを使ってJavaScriptをサーバサイドで動かせるようになりました。これは多くの新たな可能性を広げ、その結果、JavaScriptエコシステムとその人気は爆発的に拡大しました。JavaScriptはこれまでで最もユビキタスな言語になっているように見えます。JavaScriptは完璧な言語から程遠いものですが、私はJavaScriptとそのコミュニティが大好きです。

すでにmath.jsを使ったエンドユーザのプロジェクトがいくつもある。Jos氏のプロジェクト、mathnotepadもmath.jsを使っていて、開発の初期段階にある。Math.jsは人気のある計算機プロジェクト、numericsでも使われている。

Math.jsを始めるには、まずはドキュメントを読んでみよう。 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT