math.jsでバイト数を適切な単位で表示する

2016.10.31.月
JavaScript

一ヶ月ぶりのtです。
math.jsはJavaScriptの数学ライブラリで、単位変換、複素数、マトリクスなど、幅広い分野に対応するライブラリです。
今回は、単位変換に焦点を当てて説明し、バイト数を適切な単位で表示する方法について紹介します。

単位変換でどんなことができるのか

まず、速さに関する計算を例に、math.jsでどのようなことができるか紹介します。
以下のコードを見てください。

Aでは、メートル毎秒からキロメートル毎時への単位変換を行なっています。距離と時間を分けて考えるような単位変換も、直感的に計算できます。
Bでは、速さと時間を掛けることで距離を計算しています。単位を考えず直感的に計算できるだけでなく、結果の距離の単位も適切な単位に自動で変換してくれます。

バイト数を適切な単位で表示する

では本題である、バイト数に対して適切な単位を表示してみます。
例えば、「5368709120(= 5×1024^3 )」であれば「5 GiB」のように、2進接頭辞(1024の冪)で適切な単位の表示を目指します。
以下のコードを見てください。

Aでは、formatメソッドを用いて適切な単位への変換を行っています。ただし、単位としてB(バイト)を指定しても、2進接頭辞を必ず使うとは限りません。
そこで、Bでは、常に2進接頭辞で返すように考慮した関数を作成しました。formatメソッドを使って、一旦単位を求めた後に、2進接頭辞でなければ、強制的に2進接頭辞をつけて単位を変換する関数です。
このような関数を使うことにより、常に2進接頭辞を使った単位表示が可能です。

最後に

今回は、主に表示時に気を使う、単位周りについて紹介しました。
math.jsは他にも、様々な機能がある数学ライブラリです。複雑な計算を迫られた時に、知っておくと便利なライブラリだと思います。機会があれば使ってみてください。

キー・ポイントでは、いろいろなライブラリを使いこなすエンジニアを募集しています。