環境
Ubuntu 20.4
Ruby 2.6
はじめに
Googleに20%ルールというものがあります。業務時間の20%を自分の好きなことに充ててもいいというものです。Googleのような大手が、こうしたエッジの効いたルールを導入して成果を上げているとのことで、日本でもわりと話題になりました。そして、Web業界の中にも、同じようなルールを導入し出している会社がちらほらとあるようです。
自分が所属する組織はSIerですが、社内にこのようなルールはありません。しかし、個人的に何%でも、わりと自由に設定できる、暗黙のカルチャーのようなもはあったりします。
自分の組織に20%ルールがあった場合、業務時間の何分を割り当てることになるのだろうか、気になったため、計算するプログラムを作ってみました。
コード
def calc_time(rule)
require 'time'
str_tm = Time.parse("09:00") # 業務開始時間
end_tm = Time.parse("17:30") # 業務終了時間
lnc_tm = Time.parse("00:45") # 休憩時間
# 標準業務時間(分)
gyomu =((end_tm - str_tm) / 60) - (lnc_tm.hour * 60 + lnc_tm.min)
# 標準業務時間(時:分)
gyomu_hh, gyomu_mm = gyomu.divmod(60)
gyomu_mm = gyomu_mm.to_i
# ルール時間(分)
rulet = gyomu * (rule.to_f / 100)
# ルール時間(時間:分)
rule_h, rule_m = rulet.divmod(60)
rule_m = rule_m.to_i
puts "標準業務時間:#{gyomu_hh}時#{gyomu_mm}分の#{rule}%は、#{rule_h}時間#{rule_m}分です"
end
calc_time(20) # 引数:ルール(%)
解説
自分の所属する会社の業務時間は、9時から17時30分です。そして、昼休みが12時から12時45分の45分間あります。
端数処理の関係で、1分単位で誤差が生じる場合があります。ご了承ください。
- str_tm変数:業務開始時間をセットします
- end_tm変数:業務終了時間をセットします
- lnc_tm変数:休憩時間をセットします
- rule変数:メソッドの引数に適用するルール(%)をセットします
動作結果
標準業務時間:7時45分の20%は、1時間33分です
ルール(%)を変更しての動作結果
標準業務時間:7時45分の1%は、0時間4分です
標準業務時間:7時45分の10%は、0時間46分です
標準業務時間:7時45分の30%は、2時間19分です
標準業務時間:7時45分の60%は、4時間39分です
標準業務時間:7時45分の100%は、7時間45分です