シェルスクリプトマガジン

バーティカルバーの極意(Vol.70掲載)

著者:飯尾淳

コロナ禍の影響を受けて、2020年度は大学の講義の多くがオンライン講義になりました。対面での講義に比べると、情報伝達の面でオンライン講義はかなり不利です。また、受講状況がどうだったかについても気になります。最終回となる今回は、久しぶりに棒グラフが登場します。棒グラフで、講義コンテンツがいつ視聴されたのかを可視化します。

シェルスクリプトマガジン Vol.70は以下のリンク先でご購入できます。

図4 未読率を計算するRubyスクリプト「midoku.rb」

#!/usr/bin/env ruby
#
# for n in seq -w 1 13;do 
#   ./midoku.rb Rawdata/rawdata_$n.csv $n;
# done

m1 = m2 = m3 = 0

File.open(ARGV[0], "r") {|f|
  f.each_line {|line|
    a = line.chomp.split(',')
    m1 += a.count('未読')
    m2 += a.count('閲覧済')
    m3 += a.count('更新後未読')
  }
}
printf "%s,%d,%d,%d,%04.1f\n",
  ARGV[1],m1,m2,m3,m1.to_f*100/(m1+m2+m3).to_f

図7 視聴率の総計を計算するRubyスクリプト「hours.rb」

#!/usr/bin/env ruby
#
# cat Rawdata/* > all.csv
# ./hours.rb all.csv | sort | uniq -c | \
# sort -n -k 2 | awk '{printf("%d,%d\n", $2,$1)}' > hours.csv

number = "(\\d+)"
m1 = m2 = m3 = 0

File.open(ARGV[0], "r") {|f|
  f.each_line {|line|
    a = line.chomp.split(',')
    a.map!{|x| /#{number}:#{number}:#{number}/.match(x).to_a[1] }
    a -= [nil]
    a.map{|x| print x, "\n" }
  }
}