はじめに
Go言語とJavaScriptで開発するプログラムから数値を表示する時、人にやさしく表示するためのパッケージをの紹介です。バイト数をMBやGBにしたり、大きな数値をカンマ区切りで表示するためのものです。
82854982Bytesより82MBのほうが直感的にわかりやすいです。
6582491という数値よりも、6,582,491のほうがわかりやすいというものです。
Go言語のパッケージ
Go言語は、go-humanize
です。
サンプルプログラムは
package main
import (
"fmt"
"time"
"github.com/dustin/go-humanize"
"github.com/dustin/go-humanize/english"
)
func main() {
// バイト数
fmt.Printf("That file is %s.\n", humanize.Bytes(82854982)) // That file is 83 MB.
// カンマ区切り
fmt.Printf("You owe $%s.\n", humanize.Comma(6582491)) // You owe $6,582,491.
// 少数
fmt.Printf("%f\n", 2.24) // 2.240000
fmt.Printf("%s\n", humanize.Ftoa(2.24)) // 2.24
// 英語の単数、複数形
fmt.Printf("%s\n", english.Plural(1, "object", "")) // 1 object
fmt.Printf("%s\n", english.Plural(42, "object", "")) // 42 objects
// SI単位
fmt.Printf("%s\n", humanize.SI(1234000, "bps")) // 1.234mbps
// 時間差
fmt.Printf("%s\n", humanize.RelTime(time.Now().Add(time.Hour*24*7*-3), time.Now(), "earlier", "later")) // "3 weeks earlier")
}
で、実行結果は
That file is 83 MB.
You owe $6,582,491.
2.240000
2.24
1 object
42 objects
1.234 Mbps
3 weeks earlier
JavaScriptのパッケージ
JavaScriptはnumeral.js
です。
サンプルプログラムは
var numeral = require('numeral');
// バイト数
console.log("That file is " + numeral(82854982).format("0b") + ".") // That file is 83 MB.
// カンマ区切り
console.log("You owe $", numeral(6582491).format("0,0") +".") // You owe $6,582,491.
// 少数
console.log(2.24) // 2.240000
console.log(numeral(2.24).format("0.00")) // 2.24
// SI単位
console.log(numeral(1234000).format('0.000a')+"bps"); // 1.234Mbps
// 時間
console.log(numeral(63846).format('00:00:00')); // 17:44:06
で実行結果は
That file is 83MB.
You owe $ 6,582,491.
2.24
2.24
1.234mbps
17:44:06
余談
これらのパッケージは、
の開発で使っています。
の赤枠の部分です。直感的にサイズ感がわかると思います。