ruby Todoリスト

TODO_FILE = "todo.txt"

def show_todo_list
  if File.exist?(TODO_FILE)
    File.open(TODO_FILE, "r") do |file|
      puts "TODOリスト:"
      puts file.readlines
    end
  else
    puts "TODOリストは空です。"
  end
end

def add_todo_item(item)
  File.open(TODO_FILE, "a") do |file|
    file.puts(item)
  end
  puts "TODOリストに「#{item}」を追加しました。"
end

def remove_todo_item(item_number)
  if File.exist?(TODO_FILE)
    lines = File.readlines(TODO_FILE)
    if item_number > 0 && item_number <= lines.size
      removed_item = lines.delete_at(item_number - 1).chomp
      File.open(TODO_FILE, "w") do |file|
        file.puts(lines)
      end
      puts "TODOリストから「#{removed_item}」を削除しました。"
    else
      puts "指定された番号のTODOアイテムが見つかりません。"
    end
  else
    puts "TODOリストは空です。"
  end
end

loop do
  puts "\n操作を選択してください:"
  puts "1. TODOリストを表示する"
  puts "2. 新しいTODOアイテムを追加する"
  puts "3. TODOアイテムを削除する"
  puts "4. 終了する"
  print "> "
  choice = gets.chomp.to_i

  case choice
  when 1
    show_todo_list
  when 2
    print "新しいTODOアイテムを入力してください: "
    new_item = gets.chomp
    add_todo_item(new_item)
  when 3
    show_todo_list
    print "削除するTODOアイテムの番号を入力してください: "
    item_number = gets.chomp.to_i
    remove_todo_item(item_number)
  when 4
    puts "プログラムを終了します。"
    break
  else
    puts "無効な選択です。もう一度選択してください。"
  end
end