読者です 読者をやめる 読者になる 読者になる

【Ruby】 週報のフォーマットを自動生成する処理を作ってみた

どうもこんにちは。
ついこないだRubyに出会ってからすっかりRubyの魔力に取り憑かれてしまったAddyことAddyです(^_^)


今回は毎週末に提出している週報を自動で生成してくれるRubyプログラムを週報を提出する前に書いてみたのでまとめます。

毎週末に提出している週報で時間がかかるのは、実は下書きの作成だったりします。
提出する金曜日から一週間分の日付と曜日をコツコツと書く作業。
しかも一々()で囲んだりするのもボディーブローのように効いてきます(笑)

なので、その下書きぐらいは自動で日付取ってきて生成したいなぁと思ったんです。

「くだらねぇモノ作ったなぁww」という読み物感覚で楽しんでもらえたら幸いです。


・前提(というか仕様?

・週報のフォーマットを生成する(つまりテンプレートだけ)
・内容は未入力状態(内容は自動生成しない(・ω<))
・実行した日付を取って月曜から金曜までの日付と曜日を出力する
・早い話がこれ↓を生成する

【週報】

【実務報告】
10月10日(月)
・
・

10月11日(火)
・
・

10月12日(水)
・
・

10月13日(木)
・
・

10月14日(金)
・
・

【所感】

実際に使っている週報とは全く異なっているのですが、まんまブログに載せるわけにもいかないので簡単な形式に。
ポイントとなるのは生成した日付と曜日を取得するということと、生成したファイルを指定した場所に配置すること。

require 'date'
require 'fileutils'

#Dateクラスの曜日取得wdayは日曜(0)〜土曜(6)の数値で取得されるため配列を用意
dayWeek = ["", "", "", "", "", "", ""]

#Date型の今日の情報インスタンスを生成
today = Date.today

#生成したテキストファイルを格納するディレクトリを生成
path = "#{today.month}月分"
FileUtils.mkdir_p(path) unless FileTest.exist?(path)

#週報フォーマットの作成処理
File.open("#{today.month}月分/#{today.to_s}.txt", 'w+') do |f|
    f.puts "【週報】"
    f.puts ""
    f.puts "【実務報告】"
    #今日を基準に4日前までの日付を表示する
    5.times do |index|
        f.puts "#{today.-(4-index).month}#{today.-(4-index).day}日 (#{dayWeek[today.-(4-index).wday]}"
        f.puts ""
        f.puts ""
        f.puts ""
    end
    f.puts ""
    f.puts "【所感】"
    f.puts ""
    f.puts ""
end

これを任意の場所に作った「週報フォルダ」の中に「weekly_report_generater.rb」として保存してあげれば準備完了!
では実際に実行してみましょう(^_^)


f:id:AddyPlusy:20160827003914p:plain
今回はとりあえずデスクトップ上に週報フォルダを置いときます。


f:id:AddyPlusy:20160827003937p:plain
週報フォルダの中にRubyスクリプトファイルが置いてあります。これをここで実行してあげます。

$ruby weekly_report_generater.rb


f:id:AddyPlusy:20160827004135p:plain
生成に成功すれば今月のフォルダができています。
参考に、実行日は2016年8月27日(土曜)です。


f:id:AddyPlusy:20160827004318p:plain
ディレクトリ内には今日の日付のファイルができています。
これが週報のフォーマットのテキストファイルです。


f:id:AddyPlusy:20160827005343p:plain
今日から4日前までの日付があらかじめ書き込まれているファイルでちゃんと出来てます(・ω<)


今回のフォーマットはあんまりボリュームが大きくないので恩恵にあずかりにくいのですが、
私が提出している週報は、メールで提出なので、
これに件名だったり、はじめの定型文だったりなんかも入っていますし、出勤時間なんかも書いているので、
こうやって側だけでも生成できると本当に楽です。



それにしてもRubyは楽しい!
こんな便利スクリプトがものの数分で作れてしまうのは驚きですし便利ですね!
色々作りながら学んでいけそうです(・∀・)


https://twitter.com/yasukoKtytwitter.com