rubyのみでtweet投稿機能とuser登録機能の実装
Railsを使わず、rubyのみでtweet投稿機能とuser登録機能らしきものを実装してみました。
ファイル構成
ruby_pictweet
|------tweet.rb
|------user.rb
各ファイルの中身
tweet.rb
require "./user"
class Tweet
@@tweets =
def initialize(image, text)
@image = image
@text = text
enddef image
@image
enddef text
@text
enddef image=(val)
@image = val
enddef text=(val)
@text = val
enddef self.write_tweet
puts "imageのurlを記入してね"
image = gets.chomp
puts "textを記入してね"
text = gets.chomp
tweet = Tweet.new(image, text)
@@tweets << tweet
enddef self.show_tweets
@@tweets.each do |tweet|
puts "イメージurl:#{tweet.image}"
puts "テキスト:#{tweet.text}"
puts "----------------------------"
end
end
end@@users =
while true do
if @@users.length != 0
while true do
puts "[0]tweetを書く"
puts "[1]tweet一覧を見る"
puts "[2]pictweetを終了する"
input = gets.to_iif input == 0
Tweet.write_tweet
elsif input == 1
Tweet.show_tweets
elsif input == 2
exit
else
puts "入力された値は無効な値です"
end
end
else
puts "アカウント登録をしてください"
User.create_account
end
end
user.rb
class User
def initialize(email, password)
@email = email
@password = password
enddef email
enddef password
@password
enddef self.create_account
puts "メールアドレスを入力してください"
email = gets.chomp
puts "パスワードを入力してください"
password = gets.chomp
user = User.new(email, password)
@@users << user
end
end
完成したコードについての解説
TweetとUserの2つのクラスに分けて実装しました。
Tweetはimageとtextと言う属性を持ち、write_tweetメソッド、show_tweetsメソッドを持ちます。
Userはemailとpasswordと言う属性を持ち、create_accountメソッドを持ちます。
それぞれ独立した別のオブジェクトであるため、クラスを分けて実装しました。
もし、このプログラムをクラスを作らずに実装したら、tweetに関するメソッドもuserに関するメソッドも同じページに並んでしまうこととなり、何に関するメソッドがどこに書かれているか見通しが悪くなってしまいます。
クラスごとに枠組みを作ることで、見通しも良くなり、修正などもしやすくなります。