#!usr/bin/env ruby # -*- coding: utf-8 -*- #このプログラムは、メモづくりを簡単に行えるプログラムがあればいいなと思い、作成した。 #このテーマにした理由は、自分の親がいつも出かけるときにメモを置いて行くのだが、時間がなくて書けなかったり、メモ帳がなかったりして書けないことがあったりしたため、そのような場合に、すぐに書けて、メモ帳代わりになるプログラムがあったら便利だろうなと思ったから。 #また、自分は一日の予定(to do)をよくホワイトボードに書いているのだが、置く場所がなく、じゃまだったりすることがあるので、パソコン内に保存しておけたら楽だと思った。 #だが、今まで、プログラムがずっと動いていないと、入力した内容が保持されないと思っていたので、他のプログラムを作る予定だった。でも、rubyではcsvファイルやtxtファイルの読み込みができるので、もしかしたら書き込みも可能なのかもしれないと考え、やってみたらできたので、これを使ってプログラムを作ってみることにした。 #実装したい機能 #・メモの記入 #・書いたメモの保存 #・箇条書きonとoffの切り替え #・記入済みのメモの表示 #・to_doでの、リスト内の完了したことの消去 #・to_doで、やることが全て完了したときの、to_doの自動消去 #・メモの細かいデータの保存(書いた日付など) #・メモがいつになったら表示される/消去されるなどの設定 #・不要になったメモの削除 #・複数のメモの作成 #・表示時、削除時での、メモが存在しない場合のメッセージ #・メモの検索(年、月、日、内容など) #結果...悩みを解決できるプログラムは作れたと思う。だが、これは必要最低限で、まだ普通のメモ帳と変わらないレベルまでしか作れていないので、普通のメモ帳よりこのプログラムが便利になるように、まだ実装できていない機能を実装したい。 #データの保存のやり方がわからなかった頃は、日記のプログラムを作る予定だった(というか作っていた)。だが、作っていくうちに、日記が書けるだけで、便利機能が無いようなプログラムになりそうな気がしたので、メモのプログラムを作ることにした。変数名や配列名、プログラムの中身がこのプログラムと比べ物にならないくらいの状態になったまま放置されている。~/Ruby/diary.rb to_do = [] while true puts "メモの作成\nメモを見る\nメモの削除\n1or2or3" sentaku = gets.chomp if sentaku == "1" puts "1.to doリスト作成\n2.ただのメモ\nメモの種類を選択してください。1or2" memo_kind = gets.chomp puts "次に、箇条書きをするかを入力してください。on or off" kazyougaki = gets.chomp if memo_kind == "1" file_to_do = File.open('to_do.txt',"w+") puts "内容を書き込んでください。終わる場合はendと入力してください。" num = 1 while true if kazyougaki == "on" print "・" end printf("%d:",num) naiyou = gets.chomp if naiyou == "end" break else file_to_do.printf("%d:",num) num += 1 if kazyougaki == "on" file_to_do.print "・" end file_to_do.printf("%s\n",naiyou) end end file_to_do.close elsif memo_kind == "2" puts "内容を書き込んでください。終わる場合はendと入力してください。" file_memo = File.open('memo.txt',"w+") while true if kazyougaki == "on" print "・" end naiyou = gets.chomp if naiyou == "end" break else if kazyougaki == "on" file_memo.print "・" end file_memo.printf("%s\n",naiyou) end end file_memo.close end redo elsif sentaku == "2" puts "どちらのメモを見ますか?\nto_do or memo" begin see = gets.chomp if see == "to_do" puts File.read('to_do.txt') puts "終了したものは消すことができます。\n消したいものの番号を入力してください。終わる場合はendと入力してください。" while true File.readlines("to_do.txt").each do |line| to_do << line.chomp end if to_do.length == 0 File.delete("to_do.txt") puts "to_doの内容が全て終了したため、to_doが削除されました。" break end finish = gets.chomp if finish == "end" break else to_do.delete_at(finish.to_i - 1) file_to_do = File.open('to_do.txt',"w") file_to_do.puts to_do file_to_do.close puts File.read('to_do.txt') to_do = [] redo end end redo elsif see == "memo" File.readlines("memo.txt").each do |line| p line.chomp end end rescue Errno::ENOENT puts "そのメモは存在しないか、すでに消された可能性があります。" end elsif sentaku == "3" puts "どちらのメモを削除しますか?\nto_do or memo" begin delete = gets.chomp if delete == "to_do" File.delete("to_do.txt") elsif delete == "memo" File.delete("memo.txt") end rescue Errno::ENOENT puts "そのメモは存在しないか、すでに消された可能性があります。" end end redo end