さむらい君blog

20代プログラマーのブログです。

プログレスバーの実装サンプル

大量なデータを処理する際、処理の進捗率を知りたい事があります。

そんな時に進捗率を表示するプログレスバーを作成してみました。

下記方の記事を参考に、Ruby版を自分流にアレンジしております。

qiita.com

############################################
#		printProgressBar.
#@brief		プログラスバー表示関数
#@param		num 処理済件数
#@param		max 全処理件数
#@return	無し
############################################
def printProgressBar(num, max)
	
	#進捗率[%]
	rate = (num.to_f()/max.to_f()*100).floor()

	#▽プログレスバーの表示---------------------
	print "\r["
	cubeNum		= (rate/10).floor()
	for i in 1..10
		if i <= cubeNum then
			print "*"
		else
			print " "
		end
	end
	print "]"
	#△プログレスバーの表示---------------------
	
	#▽進捗率の表示---------------------------
	#0パティング
	if rate < 10 then
		print "00"
	elsif rate < 100 then
		print "0"
	end
	print "#{rate}%"
	STDOUT.flush
	#△進捗率の表示---------------------------

	#処理終了を表示(改行)
	if rate==100 then
		puts ":finish"
	end
end


使用方法は下記のイメージです。

#処理件数
max	= 1234
for	num in 1..max
	#------------------------
	#ここに処理したい内容を記述
	#処理の代わりにsleep関数を呼び出している
	sleep 0.01
	#------------------------

#プログレスバー表示
	printProgressBar(num,max)
end