TEHC CAMP 91期夜間休日 卒業後活動記録

7月5日 学習したこと

Rubyドリル

randメソッド

num = rand(10)

このコードを実行するとランダムな数字が代入されます。

要件

numが5以上だった場合は「○は4より大きい!」

4以下だった場合は「○は5より小さい!」

と表示されるようにします。○には変数numの数字が入るようにします。

randメソッド

num = rand(100)
puts num
=> # 0~99の範囲でランダムな数字が生成される

回答

num = rand(10)
if num >= 5
 puts "#{num}は4より大きい!"
else
 puts "#{num}は5より小さい!"
end

解説

ランダムな数値を生成するためにrandメソッドを使い、変数numに代入します。

演算子 >= を使用し、5以上かどうかを判定しています。

運勢の表示プログラム

要件

誕生日を入力すると、今日の運勢を表示するプログラムを作成します。

・引数として誕生日の数字を受け取る(例:4月3日なら403、11月15日なら1115と入力)
・誕生日の数字に、乱数で生成された0 ~ 9の数字のいずれかを掛け算し、その後4で割った時の余りを算出
・シャッフルした占い結果を格納した配列から、上記の数値の順番の値を取り出す
 ["凶","中吉","吉", "大吉"]

shuffleメソッド

配列の要素をランダムにシャッフルし、結果を配列として返すメソッド。

# shuffleメソッドで配列をシャッフルし、変数animalsに代入
animals = ["cat", "dog", "rabbit"].shuffle

puts animals
# => ["rabbit" , "cat", "dog"]

回答

def result_of_uranai(birthday)
 results = ["凶", "中吉", "吉", "大吉"].shuffle
 num = birthday * rand(10) % 4
 puts "今日のあなたの運勢は、#{results[num]}だよ!"
end

puts "誕生日を入力してください"

birthday = gets.to_i
result_of_uranai(birthday)

解説

result_of_uranaiメソッドを定義し、引数にgets.to_iで入力しbirthdayに代入された値を渡しています。

流れは、変数resultsにshuffleメソッドでシャッフルした値が代入します。

次に、変数resultsから値を取り出す計算を行います。

「誕生日の数字に、乱数で生成された0 ~ 9の数字のいずれかを掛け算し、その後4で割った時の余りを算出」を

num = birthday * rand(10) % 4

とします。

最後に計算結果ををもとに、出力します。

引数とハッシュ

要件

映画のハッシュを定義し、格納されている「title」(タイトル)・「genre」(ジャンル)・「year」(公開年)の三つの要素の中から一つを取り出すプログラムを作成します。

定義する変数

①movie = {"title" => "ハリーポッター", "genre" => "ファンタジー", "year" => "2001年"}

②ユーザーが入力するキーを、getsメソッドを利用し定義します

実行結果

#【例】titleの要素を取り出したい場合
# デスクトップに移動
%cd Desktop
# Rubyファイルを実行
%ruby argument_test.rb
 "以下から一つを選んで入力してください。
・title
・genre
・year"
#「title」を入力
title
ハリーポッター

回答

def movie_info(movie, data)
 puts movie[data]
end

movie = {"title" => "ハリーポッター", "genre" => "ファンタジー", "year => "2001年"}

puts "以下から一つを選んで入力してください。
 ・title
  ・genre
  ・year"
 
info = gets.chomp

movie_info(movie, info)

解説

ハッシュ名[キー名]とすることで、そのキーに対応するバリューを取り出すことができます。

キーに文字列を使用してハッシュを定義した場合、キーを文字列で指定します。

【例】movie["title"]

シンボルを使用して、

movie = {title: "ハリーポッター", genre: "ファンタジー",  year: "2001年"}

のように定義した場合、キーをシンボルで指定します。

文字列のキーではバリューを取得できません。

【例】movie[:title]

よって、getsの返り値を文字列からシンボルに変換する必要があります。

def movie_info(movie, data)
  puts movie[data]
end

movie = {title: "ハリーポッター", genre: "ファンタジー",  year: "2001年"}

puts "以下から一つを選んで入力してください。
  ・title
  ・genre
  ・year"

info = gets.chomp.to_sym

movie_info(movie, info)

to_symメソッドで、文字列からシンボルに変換しています。

クラスとインスタンス

要件

・Personクラスはプロパティ name, ageを持っている。
・StudentクラスはPersonクラスを継承している。
・Studentクラスにはintroduceメソッドが定義されている。実行すると
 「私の名前は◯◯です。◯歳です」と表示がされる。
・Studentクラスのインスタンスを作成し、introduceメソッドを実行する。

クラスの継承

利用したいすべてのクラスを最初から作成することなく、共通する部分を受け継ぐことができます。

class クラス名 < 継承したいクラス名(親クラス)

end

具体的には

class Animal
  def initialize(name)
    @name = name
  end
end

class Dog < Animal
  def name
    puts "名前は#{@name}です。"
  end
end

pochi = Dog.new("ポチ")
pochi.name

AnimalとDogの2つのクラスがあり、Dogクラスの共通した部分を受け継ぎたいので、Dog < Animal とします。これによりpochi.nameでメソッドを呼び出したときに、問題なく@nameにアクセスが可能になります。

回答

class Person
  def initialize(name, age)
    @name = name
    @age = age
  end
end

class Student < Person
  def introduce
    puts "私の名前は#{@name}です。#{@age}歳です"
  end
end

yamada = Student.new("山田", 20)
yamada.introduce

StudentクラスはPersonクラスの共通する部分を受け継ぎたいので、Student < Person としました。これによってyamada.introduceでメソッドを呼び出したときに、@nameへアクセスできるようになります。

progate

Ruby on Rails 学習コースⅨ

投稿とユーザーを紐付ける

  1. postsテーブルにuser_idカラムを追加する
  2. 投稿時にuser_idの値を入れて保存する
    @current_user.idで現在ログインしているユーザーを取得する
  3. モデルにインスタントメソッドを定義する
    return User.find_by(id: self.user_id)
  4. ユーザーに紐づく複数の投稿を取得する
    whereメソッド
    条件に合致する複数のデータを取得するメソッド

一言日記

本当にやりたいこと

プログラミングを勉強して、就活がスタートして、

いろいろ考えます。

自分がやりたいことってなんだったんだろう?

なんでプログラミングを学ぼうと思ったのかな?

就活がはじまって、面接対策に考えた、

自己PRとか、エンジニアを目指した理由とか、志望動機とか…

嘘ではないんだけど、心のどこかでひっかかる気がする。

いい印象を持ってもらうために、世の中のためとか、人に喜んでもらうとか…

間違ってはないんだけど、なんか違うよね?

そのまえに、自分じゃない?

就活支援面談で自分視点が強すぎるって言われたから、世の中のためとか人のため

って考えたけど、そもそも転職したいと思ったのも、このまま使い捨ての駒に

されたくないって思ったのがきっかけで、「人生を変えたい」と思って行動した。

間違ってるかもしれない、うまく行かないかもしれない。

でも、このままは嫌だって思ったから、プログラミングを学んで

自分で稼げる力を手に入れるために、退職した。

でも、また表面だけ取り繕って、就活して、企業にはいって

それじゃ今までと、同じことにならない?

一つの選択肢として、就職って道を残したけど

スクールを卒業して、これからどうお金を稼げばいいかわからなくて

不安で、就職するしかないのかなって囚われて、自分を取り繕って

もやもやしながらも就活して、

でも、ほかに何をしたらいいかわからず、毎日が過ぎていく。

たぶん、ここをしっかり考えないと就活してもうまく行かない気がする。

どこかに就職できたとしても、また消耗しながら自分を見失っていく気がする。

読んだ本

「考えるな、助けろ。」イケハヤ✕若者

内容は、イケハヤさんとやりたいことがわからない若者の対談。

イケハヤさんは効率よく稼げて、面白そうなものをゲーム感覚でやっているそうです。

やりたいことは簡単には見つからないみたいです。

「やってみてはやめてを繰り返して、人と違うことを楽しむ」ことが大事なんだとか。

たしかに楽しくないと続かないのはわかりますね。

あたりまえのようで、楽しめてない気がします。

プログラミングスクールのときは、週一でチームで共有できたから楽しかった。

でも、いまは淡々とこなすだけで楽しさがなくなった。

仕事と繋がっていれば達成感とかから楽しみが得られるんだろうけど

それもないからただこなしているだけになっている。

あと、人と違うことをしないといけないそうです。

人と同じことばかりやっていると、自分で考えることがなくなる。

言われたことしかできない人間になる。

たしかに、じぶんで考えて行動しようとするとうまく行かないことばかりで

しんどい、めんどくさい事が多い。

仕事をやめて、言われたことをやっているのがいかに楽だったか実感しました。

ただ、楽なことをやっていても成長はしない。

私は、退職して、うまくいかないことばかりで、なにしたらいいかもわからないし、

しんどいけど、35歳ではじめて、自分の人生を真剣に考えている気がします。

これからどうなるかわからないけど、後悔だけはしたくない。

これからは、たのしいことを、追い続けよう。

やりたいことは簡単に見つからない。

たのしみながら、スキルを磨いて、その過程で自分のやりたいことを磨き込んでいく。

を心がけていきたいと思います。

あと、ボランティアをやってみたいと思うようになりました。