こんにちは。学生バイトのd-inoueです。
学生バイトの皆さんは、出社時にバイト窓(アルバイトが所属するSkypeチャット)に
[作業予定] - kanikama - 星のかけら集め 出勤しました。今日もよろしくお願いします。
なんていうふうに、出社を報告して、やることを宣言していると思います。私は入社からしばらく、その日ごとにこれをぷちぷち手打ちしていましたが、ある日、これじゃだめだ、と思いました。そこで、
[作業予定] - インフラ作業 - kanikama - 星のかけら集め 出勤しました。今日もよろしくお願いします。 インフラ作業行きます。 遅れてすみません。 [作業報告] - kanikama (3.5h) - 星のかけら集め (0.5h) - インフラ作業 (h) お先に失礼します。お疲れ様です。
なんてテキストファイルを用意して、その日に必要な行をコピペすることにしました。
しばらくはこれで幸せに過ごせました。が、行を選んでコピペするのも辛くなってきたので、先週、スクリプト書きました。
出社したとき用のスクリプト
kita.rb
#!/usr/bin/ruby # coding: utf-8 require 'optparse' works = { 'i' => 'インフラ作業', 'k' => 'kanikama', 'h' => '星のかけら集め' } strs = works.map do |k, v| [k, "- " + v] end.to_h available_opts = works.keys.join params = ARGV.getopts(available_opts) enabled_opts = params.select do |k, v| v == true end.keys out = Array.new out << '[作業予定]' enabled_opts.each do |i| out << strs[i] end out << '' out << '出勤しました。今日もよろしくお願いします。' puts out
配列の操作を簡単に書けるのが ruby の良いところだと思います。オプションの解析も getopts で楽にできます。
usage としては、その日にやる作業をオプションで指定してやります。例えば、 kanikama (※仮のプロジェクトチーム名)と星のかけら集めをやる予定なら、
$ ./kita.rb -kh
と。この場合、出力は
[作業予定] - kanikama - 星のかけら集め 出勤しました。今日もよろしくお願いします。
となります。
帰るとき用のスクリプト
会社に来たからには、帰らねばなりません。帰るとき用のスクリプトも書きました。
kaeru.rb
#!/usr/bin/ruby # coding: utf-8 require 'optparse' works = { 'i' => "インフラ作業", 'k' => "kanikama", 'h' => "星のかけら集め" } available_opts = works.keys.join + 't:' params = ARGV.getopts(available_opts) enabled_opts = params.select do |k, v| v == true end.keys time = Hash.new total_time = params['t'].to_f time['h'] = 0.5 if enabled_opts.size == 1 then main_work = enabled_opts.join time[main_work] = total_time end if enabled_opts.size == 2 then main_work = enabled_opts.select do |work| work != 'h' end.join time[main_work] = total_time - time['h'] end strs = works.map do |k, v| [k, "- " + v + " (#{time[k].to_s} h)"] end.to_h out = Array.new out << '[作業報告]' enabled_opts.each do |i| out << strs[i] end out << '' out << 'お先に失礼します。お疲れ様です。' puts out
これも、やった作業はオプションで指定してやります。勤務した時間は -t オプションに渡してやります。例えば kanikama と星のかけら集めをやって 8 時間勤務した場合は
$ ./kaeru.rb -kht 8
と。出力は
[作業報告] - kanikama (7.5 h) - 星のかけら集め (0.5 h) お先に失礼します。お疲れ様です。
となります。星のかけら集めは 0.5 h かかるものとして、スクリプトに組み込んであります。やった仕事が 2 項目のときはこのように時間を自動で計算して出力します。
$ ./kaeru.rb -khit 8
のように、やった仕事が 3 項目以上のときは、
[作業報告] - インフラ作業 ( h) - kanikama ( h) - 星のかけら集め (0.5 h) お先に失礼します。お疲れ様です。
というふうに、時間のところは空欄にして出力します。
kanikama 以外のチームの方でも、スクリプトのハッシュ ( works ) のなかみを編集すれば使えます。
コピーも怠けるには
./kita.rb -kh | xsel --clipboard --input
と、パイプで xsel に渡してやります。これで、出力がクリップボードに載ります。私はよく使うので、
xsel –clipboard –input に cb というエイリアスをつけています。
エンジニア募集!
インフィニットループでは、エンジニア(正社員・アルバイト)を募集しています。なんでもスクリプトを書いて怠けてしまう解決してしまうエンジニアの方、ぜひ下記のページからご応募ください!