LoginSignup
14
10

More than 3 years have passed since last update.

Golangでプログレスバーを表示するためのパッケージ3選

Last updated at Posted at 2020-07-13

Golangで処理を書いている時、特に時間がかかる処理の場合、進捗がどのくらい進んでいるのかを知りたい時がありますよね。そんな時使うのがプログレスバーだったりするわけですが、いい感じで利用できるパッケージがないか探してみると思いの外見つかったので3つリストアップしてみました!

リストアップするだけだと味気ないのでfor文を回す処理を利用してそれぞれ出力してみました。

マルチプログレスバーについての記事も書いているので興味のある方はこちらも是非!
Golangでマルチプログレスバーを表示したい!!

pb

>>リポジトリ

>>ドキュメント

今回紹介する3つの中でスター数が2.7kと一番多い人気のパッケージです。人気なだけあって柔軟性が高そうな印象を受けました。

以下のコマンドでインストールできます。

terminal
go get github.com/cheggaaa/pb/v3

pbをインストールして以下のサンプルを実行してみました。

main.go
package main

import (
    "time"
    "github.com/cheggaaa/pb/v3"
)

func main() {
    count := 100

    bar := pb.Simple.Start(count)
    bar.SetMaxWidth(80)

    for i := 0; i < count; i++ {
        bar.Increment()
        time.Sleep(time.Millisecond * 30)
    }
    bar.Finish()
}

動かした結果がこれ。

pb.gif

uiprogress

>>リポジトリ

>>ドキュメント

同時に複数の進行状況バーをレンダリングでき、また、新しく処理が追加された場合でも追加の進行状況バーを追加できるようです。

以下のコマンドでインストールできます。

terminal
go get -v github.com/gosuri/uiprogress

uiprogressをインストールして以下のサンプルを使って実行してみました。

main.go
package main

import (
    "time"
    "github.com/gosuri/uiprogress"
)

func main() {
    count := 100
    uiprogress.Start()
    bar := uiprogress.AddBar(count)

    bar.AppendCompleted()
    bar.PrependElapsed()

    for bar.Incr() {
        time.Sleep(time.Millisecond * 20)
    }
}

実行結果がこれ。

uiprogress.gif

progressbar

>>リポジトリ

>>ドキュメント

OSに依存せず利用できる、非常にシンプルなスレッドセーフなプログレスバーと言う謳い文句で案内されています。

以下のコマンドでインストールできます。

terminal
go get -u github.com/schollz/progressbar

progressbarをインストールして以下のサンプルを使って実行してみました。

main.go
package main

import (
    "time"
    "github.com/schollz/progressbar"
)

func main() {
    count := 100
    count64 := int64(count)
    bar := progressbar.Default(count64)
    for i := 0; i < count; i++ {
        bar.Add(1)
        time.Sleep(40 * time.Millisecond)
    }
}

実行するとこんな感じ

progressbar.gif

まとめ

個人的に、使い心地と見た目でpbが好みでした。

これ採用して早速実装してみます!

14
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10