コマンドライン引数の処理にoptparseを活用する

Rubyプログラムを書く際に、コマンドライン引数を簡単かつ効果的に処理する方法としてoptparseライブラリがあります。 OptparseはRubyの標準ライブラリで、コマンドライン引数のパースとヘルプの生成が簡単に行えます。今回はRubyを使用して、カレンダーを表示するプログラムを作成します。その中でも、コマンドライン引数を処理するためにoptparseを使用する方法を紹介します。まずは具体例から見ていきましょう。

require 'date'
require 'optparse'

options = {}
OptionParser.new do |opt|
  opt.on('--month MONTH', 'Specify the month (1..12)') do |month|
    options[:month] = month
  end
end.parse!

options[:month] = Date.today.month if options[:month].nil?

unless (1..12).include?(options[:month].to_i)
  puts "#{options[:month]} is neither a month number (1..12) nor a name"
  exit
end

date = Date.new(Date.today.year, options[:month].to_i, 1)

puts "      #{date.strftime('%B %Y')}"
puts "月 火 水 木 金 土 日"

first_day = date.wday
print "   " * first_day

last_day = Date.new(date.year, date.month, -1)

(date..last_day).each do |day|
  print day.day.to_s.rjust(2) + " "
  print "\n" if day.saturday?
end

puts "\n" unless last_day.saturday?

このプログラムでは、optparseを使用して--monthオプションで月を指定できるようにしています。また、指定がない場合は現在の月がデフォルトで使用されます。もし指定された月が1から12の範囲外であれば、エラーメッセージが表示されます。その後、指定された月のカレンダーを表示します。

このようにoptparseを活用することで、コマンドライン引数を簡単かつ柔軟に処理することができます。