プログラミング初心者のメモ書き


## はじめに

普段、Evernoteにその日走ったランニングの距離や、気になったことを日記みたいな形で書いています。1ページ1ヶ月として書いているので、そのためのフォーマットを作成したいと思います。

## 練習

```ruby:diaryformat.rb
def diary_format(first_day, last_day)
  day_numbers = [*(first_day..last_day)].reverse
  weeks = ['Mon.', 'Tue.', 'Wed.', 'Thr.', 'Fri.', 'Sat.', 'Sun.']
  day_numbers.each{|day_number|
    if day_number % 7 == 0
      puts '---------------'
      puts "2016/02/#{day_number} #{weeks[6]}"
      puts '- Wake Up Time : 00:00'
      puts '- Bedtime : 00:00'
      puts '- Running : 00km'
      puts '- Body Weight : 00kg'
      puts '- Programming : '
      puts '- Study of English : '
      puts '- Diary : '
      puts "\n\n"
    elsif day_number % 7 == 1
      puts '---------------'
      puts "2016/02/#{day_number} #{weeks[0]}"
      puts '- Wake Up Time : 00:00'
      puts '- Bedtime : 00:00'
      puts '- Running : 00km'
      puts '- Body Weight : 00kg'
      puts '- Programming : '
      puts '- Study of English : '
      puts '- Diary : '
      puts "\n\n"
    elsif day_number % 7 == 2
      puts '---------------'
      puts "2016/02/#{day_number} #{weeks[1]}"
      puts '- Wake Up Time : 00:00'
      puts '- Bedtime : 00:00'
      puts '- Running : 00km'
      puts '- Body Weight : 00kg'
      puts '- Programming : '
      puts '- Study of English : '
      puts '- Diary : '
      puts "\n\n"
    elsif day_number % 7 == 3
      puts '---------------'
      puts "2016/02/#{day_number} #{weeks[2]}"
      puts '- Wake Up Time : 00:00'
      puts '- Bedtime : 00:00'
      puts '- Running : 00km'
      puts '- Body Weight : 00kg'
      puts '- Programming : '
      puts '- Study of English : '
      puts '- Diary : '
      puts "\n\n"
    elsif day_number % 7 == 4
      puts '---------------'
      puts "2016/02/#{day_number} #{weeks[3]}"
      puts '- Wake Up Time : 00:00'
      puts '- Bedtime : 00:00'
      puts '- Running : 00km'
      puts '- Body Weight : 00kg'
      puts '- Programming : '
      puts '- Study of English : '
      puts '- Diary : '
      puts "\n\n"
    elsif day_number % 7 == 5
      puts '---------------'
      puts "2016/02/#{day_number} #{weeks[4]}"
      puts '- Wake Up Time : 00:00'
      puts '- Bedtime : 00:00'
      puts '- Running : 00km'
      puts '- Body Weight : 00kg'
      puts '- Programming : '
      puts '- Study of English : '
      puts '- Diary : '
      puts "\n\n"
    elsif day_number % 7 == 6
      puts '---------------'
      puts "2016/02/#{day_number} #{weeks[5]}"
      puts '- Wake Up Time : 00:00'
      puts '- Bedtime : 00:00'
      puts '- Running : 00km'
      puts '- Body Weight : 00kg'
      puts '- Programming : '
      puts '- Study of English : '
      puts '- Diary : '
      puts "\n\n"
    end
  }
end

day_number_week(1,29)

```

## 改善点（よく分からない）
- 月が変わると曜日がズレてしまう。（現在は2月用）
- 重複している点を除く。

## 追記（2016-02-18）
コメントを参考に改善してみました。Dateクラスを使えば良かったのですね...。
[`Date#wday`](http://rurema.clear-code.com/2.3.0/method/Date/i/wday.html)はとても便利ですね。その日の曜日を0-6までの値で返してくれるもので、例えば日曜日なら0、月曜日なら1を返してくれます。そして求めたい日の曜日は、まず曜日の配列を日曜日からつくり、その配列をwdayメソッドで取得した値（0-6）で参照することで、取得できます。勉強になりました。

```ruby:diaryformat2.rb
require "date"

youbi = %w(Sun. Mon. Tue. Wed. Thr. Fri. Sat.)

start_date = Date.parse("2016-02-01")
end_date = Date.parse("2016-02-29")

(start_date..end_date).each do |date|
  puts <<-EOT
  ---------------
  #{date.strftime("%Y/%m/%d")} #{youbi[date.wday]}
  - Wake Up Time : 00:00
  - Bed Time : 00:00
  - Running : 00km
  - Body Weight : 00kg
  - Programming :
  - Study of English :
  - Diary :
  \n
  \n
  EOT
end
```