Rubyの練習のため、毎日簡単なアプリケーションをつくってますが、
レベルアップにとてもよかったので、記事にしてみます。
この記事はこんな人に向いてます
- Ruby初心者
- 毎日コードを書く練習をしたいが、何をしたらよいかわからず困っている人
- Rubyを書くことを頭で理解するだけでなく、体で覚えたい人
練習の方針
- 30分以内でつくれるアプリケーションを題材にする
- 最初から最後まで通しでできるものをつくる
- 毎日の練習で使えるくらいの小規模なものをつくる
毎日続けることなので、あまり大きなものを作る必要はないですね。
仕様
- ぱっと作って確認できるコンソールアプリとする
- 本のレビューとして以下の3つを入力できる
- タイトルを入力できる
- 本の評価を5段階で入力できる
- 本の感想を入力できる
- 入力したレビューを参照できる
アプリケーションの開発
1. メイン処理をつくる
まずはアプリケーションの骨組みをつくります
LINE = "---------------"
class BookApp
WRITE_REVIEW = 0
DISPLAY_REVIEW = 1
END_PROGRAM = 2
end
while true do
puts "実行したい処理の番号を入力してください"
puts "[#{BookApp::WRITE_REVIEW}] 本のレビューを書く"
puts "[#{BookApp::DISPLAY_REVIEW}] 本のレビューを見る"
puts "[#{BookApp::END_PROGRAM}] プログラムを終了する\n#{LINE}"
operation = gets.chomp.to_i
case operation
when BookApp::WRITE_REVIEW
# reviewを書く
when BookApp::DISPLAY_REVIEW
# reviewを表示する
when BookApp::END_PROGRAM
exit
else
puts "入力値が正しくありません"
end
end
ユーザーの入力を受け付け、実行する処理を決定します。
2. レビューの投稿処理をつくる
続いて、本のレビューの投稿処理をつくります。
def write_review(posts)
post = {}
puts "本のタイトルを入力してください"
post[:title] = gets.chomp
puts "本の評価(1 ~ 5)を入力してください"
post[:point] = gets.chomp.to_i
if post[:point] < 1 || post[:point] > 5
puts "評価は1 ~ 5で入力してください"
return
end
puts "本の感想を一言入力してください"
post[:review] = gets.chomp
posts << post
end
posts = []
レビューに必要な3つの要素(タイトル、評価、感想)をユーザーに入力させて、
投稿を扱う配列posts
を返します。
メイン処理につくった関数を埋め込みます。
case operation
when BookApp::WRITE_REVIEW
write_review(posts) # reviewを書く
when BookApp::DISPLAY_REVIEW
# reviewを表示する
when BookApp::END_PROGRAM
3. レビューの表示処理をつくる
最後に、投稿したレビューを表示する処理をつくります。
def display_review(posts)
index = 0
posts.each do |post|
puts "[#{index}] #{post[:title]}"
index += 1
end
puts "見たいレビューの番号を入力してください"
input = gets.chomp.to_i
item = posts[input]
puts LINE
puts "タイトル: #{item[:title]}"
puts "評価: #{item[:point]}"
puts "感想: #{item[:review]}"
puts LINE
end
投稿したレビューのタイトルを一覧表示して、見たいレビューの番号をユーザに入力させます。
指定された投稿について、3つの要素(タイトル、評価、感想)を画面に表示します。
忘れずにメイン処理も更新しましょう。
while true do
when BookApp::WRITE_REVIEW
write_review(posts)
when BookApp::DISPLAY_REVIEW
display_review(posts) # reviewを表示する
when BookApp::END_PROGRAM
exit
else
コード全体
LINE = "---------------"
class BookApp
WRITE_REVIEW = 0
DISPLAY_REVIEW = 1
END_PROGRAM = 2
end
def write_review(posts)
post = {}
puts "本のタイトルを入力してください"
post[:title] = gets.chomp
puts "本の評価(1 ~ 5)を入力してください"
post[:point] = gets.chomp.to_i
if post[:point] < 1 || post[:point] > 5
puts "評価は1 ~ 5で入力してください"
return
end
puts "本の感想を一言入力してください"
post[:review] = gets.chomp
posts << post
end
def display_review(posts)
index = 0
posts.each do |post|
puts "[#{index}] #{post[:title]}"
index += 1
end
puts "見たいレビューの番号を入力してください"
input = gets.chomp.to_i
item = posts[input]
puts LINE
puts "タイトル: #{item[:title]}"
puts "評価: #{item[:point]}"
puts "感想: #{item[:review]}"
puts LINE
end
posts = []
while true do
puts "実行したい処理の番号を入力してください"
puts "投稿レビュー数: #{posts.length}"
puts "[#{BookApp::WRITE_REVIEW}] 本のレビューを書く"
puts "[#{BookApp::DISPLAY_REVIEW}] 本のレビューを見る"
puts "[#{BookApp::END_PROGRAM}] プログラムを終了する\n#{LINE}"
operation = gets.chomp.to_i
case operation
when BookApp::WRITE_REVIEW
write_review(posts)
when BookApp::DISPLAY_REVIEW
display_review(posts)
when BookApp::END_PROGRAM
exit
else
puts "入力値が正しくありません"
end
end
毎日練習することで感じた効果
- Rubyってどう書けばいいんだっけ、って思わなくなった
- 以前より人の書いたコードがわかるようになった
- 開発するスピードがあがった
ちょっとした空き時間でもできるので、試してみてください。
タイムアタックなんかやってみると面白いかも知れませんね。