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

6/23 学習内容とまとめ

rubyドリル

検索問題

任意の文字列に"code"が左から何文字目に出てくるか、その数を出力するメソッドを作ります。

indexメソッド

文字列や配列の中に指定した文字列が含まれていた場合、その文字列の開始位置を整数の値で返すメソッド

str.index(検索したい文字列,[検索を開始する位置])
def count_code(str)
 puts str.index("code", 0) + 1
end

indexメソッドは文字列の先頭を0から数えるので+1にします。

ifとelse問題

20時から翌朝7時までは「NG」、それ以外は「OK」とオウムが喋るメソッドを作ります。

喋らないとき→false

喋るとき→true

呼び出し方:parrot_trouble(talking, hour)

def parrot_trouble(talking, hour)
 if talking && (hour < 7 || hour > 20)
  puts "NG"
 else
  puts "OK"
 end
end

if talking として、talkingにtrueが入っているときに真と判断されます。

そして、次の条件式に(hour < 7 || hour > 20)で20時から翌朝7時を判断しています。

A || B でAまたはBを表します

ちなみに、

A && B はAかつBを表します。

偶数値の取得

配列の中から偶数の数を返して出力するメソッドを作ります。

出力例:count_evens([2,1,2,3,4])→3

even?メソッド

対象の数値が、偶数かどうかを判断するメソッド

10.even?
#=> true

5.even?
#=> false
def count_evens(nums)
 count = 0
 nums.each do |num|
  if num.even?
   count += 1
  end
 end
 puts count
end

変数countを用意して、カウントした数を保持しています。

each内に記述していないのは、each内だと処理を繰り返すたびに

count = 0が実行されて、数値が0に上書きされてしまうため

eachの外に記述しています。

配列に入っている数字をeach文で取り出して、

even?メソッドで偶数かどうか確認して、偶数だった場合はcountに1を足します。

puts count で偶数の数を出力します。

特定の数字を検知するプログラム

特定の数字が存在するかどうかを判定するプログラムを作ります。

要件は

  • 配列内に1,2,3が全て入っている場合は、「True」と出力すること
  • 配列内に1,2,3の全てが入っていない場合は、「False」と出力すること

出力例:array123([1,1,2,3,1])→True

:array123([1,2,4])→False

include?メソッド

指定した値が、配列に含まれているかを判定するメソッド

array = ["foo", "bar"]
puts array.include?("bae")
#=> true
puts array.include?("hoge")
#=> false
def array123(nums)
 if nums.include?(1) && nums.include?(2) && nums.include?(3)
  puts "True"
 else
  puts "False"
 end
end
#呼び出し例
array124([1,1,2,3,1])

array123メソッドの仮引数に対象の配列が格納されます。

includeメソッドを使い、1、2、3が含まれている場合は"True"を出力する

ための条件分岐をしています。

&&演算子を複数使用して、条件を複数設定しています。

progate 学習コースⅥ 8まで

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

6/22 学習の内容&まとめ

Rubyドリル 16

インスタンスの生成

クラスFruitの仕様

インスタンス

インスタンス名前価格
appleリンゴ120
orangeオレンジ200
strawberyイチゴ60

インスタンス変数

・name

・price

クラスメソッド

メソッド名処理
fresh「採れたて新鮮な果物です」と表示

インスタンスメソッド

メソッド名処理
initialize引数で名前と価格を渡し、インスタンス変数nameとpriceに代入
introduce「【名前】は【価格】円です」と表示

実行結果

採れたて新鮮な果物です
リンゴは120円です
オレンジは200円です
イチゴは60円です

となるプログラムを作ります。

class Fruit

 def self.fresh
  puts "採れたて新鮮な果物です"
 end

 def initialize(name, price)
  @name = name
  @price = price
 end

apple = Fruit.new("リンゴ", 120)
orange = Fruit.new("オレンジ", 200)
strawberry = Fruit.new("イチゴ", 60)

Fruit.fresh
apple.introduce
orange.introduce
strawberry.introduce

まずは、インスタンスの生成と、インスタンス毎のインスタンス変数@nameと@priceを定義します。

initializeメソッドを使うい、newメソッドの引数を受け取れるようにします。

名前と価格をnewメソッドから受け取り、インスタンス変数@name、@priceに代入します。

class Fruit

 def initialize(name, price)
   @name = name
   @price = price
 end

end

apple = Fruit.new("リンゴ", 120)
orange = Fruit.new("オレンジ", 200)
strawberry = Fruit.new("イチゴ", 60)

次に、クラスメソッドFreshを定義します。

class Fruit
 def self.fresh
   puts "採れたて新鮮な果実です"
 end

省略

続いて、インスタンスメソッドの定義をします。

省略

def initialize(name, price)
   @name = name
   @price = price
 end

 def introduce
   puts "#{@name}は#{@price}円です"
 end
end

省略

最後に、定義したクラスメソッドとインスタンスメソッドを呼び出します。

省略

Fruit.fresh
apple.introduce
orange.introduce
strawberry.introduce

Rubyドリル 17

任意の文字列を部分的に削除する

・対象となる文字列からn番目の文字列を削除すること

・削除された文字列以外の文字列を出力すること

の要件を満たすメソッドを定義します。

※sliceメソッド

配列や文字列から指定した要素を削除し、削除した後の要素を返すメソッド

def missing_char(str, n)
  str.slice!(n - 1)
  puts str
end

# 呼び出し例
missing_char('kitten', 1)

missing_charメソッドの引数strには文字列をいれ、nに何番目か指定する数字が入ります。

Rubyドリル 18

if、elseと演算子

  • aとbどちらも真であれば、Trueを出力
  • aとbどちらも偽であれば、Trueを出力
  • aとbで真偽が一致しない場合であれば、Falseを出力

以上のルールになるメソッドを定義します。

※論理演算子

# aもbもtrueの場合にtrue 
a && b

# aかbのどちらかがtrueの場合にtrue
a || b 

# aがtrueの場合にfalse、aがfalseの場合にtrue
!a
def singi(a, b)
 if (a && b) || (!a && !b)
  puts "True"
 else
  puts "False"
 end
end

singi(true, false)

(a && b) || (!a && !b)として、aとbどちらもtrue、または、どちらもfalseの場合「True」と出力します。

Rubyドリル 19

文字数を算出するプログラム

要件

  • 対象となる文字列の中から、"hi"という特定の文字列の数を取得すること
  • 上記で取得した数を出力すること

※scanメソッド

対象の要素から引数で指定した文字列を数え、配列として返すメソッド

"foobarbazfoobarbaz".scan("ba")
=> ["ba", "ba", "ba", "ba"]
def count__hi(str)
 puts str.scan("hi").length
end

#呼び出し例
count_hi('abc hi ho')

scanメソッドを使い、"hi"という文字列の数を返して、lengthメソッドで数を返します。

progate 学習コースⅤ 完了

バリデーション

不正なデータがデータベースに保存されないようにデータをチェックする仕組み

#空だと登録できない
validates :カラム名, {presence: true}
#文字数の制限
validates :カラム名, {length: {maximum: 数値}}

#複数指定する場合
validates :カラム名, {presence: true, length: {maximum: 数値}}

保存できた場合、できなかった場合をif文で条件分岐させ、

ページを遷移させるメソッドの使い分け

保存できた場合のページ遷移

redirect_to(URLを指定)

保存できなかった場合

render(ビューファイルを指定)

エラーメッセージ

Railsでは自動でエラーメッセージが生成されています。

@post.errors.full_messages にエラーメッセージの配列が入っているので、
eachメソッドを使って

<%= @post.errors.full_messages.each do |messeage|
 <%= messeage %>
<% end %>

これでエラーメッセージを表示できます。

サクセスメッセージ

投稿完了や編集完了などページ上に1度だけ表示するメッセージのことで、

ページを移動するなどしたら自動で削除されます。

Railsではフラッシュを表示させるためにアクションで、flash[:notice]に文字列を代入します。

def update
 if @post.save
    flash[:notice] = "表示したい文字列"

省略
<% if flash[:notice]
 <div class="flash">
  <%= flash[:notice] %>
 </div>
<% end %>
#フラッシュメッセージが存在する場合のみ表示する

一言日記と振り返り

クラスとインスタンスがよくわかりません…。

じっくり考えたらなるほど!ってなるけど同じ問題をやったら??

ってなります(笑)

とりあえず、何回もやってみるしかないよね。

就職活動はやっぱり精神的に疲れる。

応募しても書類選考で9割おとされます。

35歳未経験はやっぱりあまくはないですね。

とはいえ、動かないとなにも始まらないので

「今できること」に集中して動き続けます。

ただ、収入がないのは色んな意味でストレスを感じます。

クラウドソーシングをしてみよう!と思っているんですが尻込みしてしまう…

ほんとダメダメな私です。

このままでは今までと変わらないので、がんばって行動します。

簡単なものから応募してみよう。

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

6/20 学習内容

Rubyドリル 13

eachの入れ子

fruits_price = [["apple", [200, 250, 220]], ["orange", [100, 120, 80]], ["melon", [1200, 1500]]]

果物の名前と値段の合計を出力するコードにします

fruits_price = [["apple", [200, 250, 220]], ["orange", [100, 120, 80]], ["melon", [1200, 1500]]]

fruits_price.each do |fruit]
  sum = 0
  fruit[1].each do |price|
    sum += price
  end
  puts “#{fruit[0]}の合計金額は#{sum}円です”
end

fruits_priceから値を取り出し、変数fruitに代入して、fruitの[200, 250, 220]を取り出して、自己代入させます。

Rubyドリル 14

論理演算子「 && 」と「 || 」

数値numが1以上かつ10以下の範囲であればTrueを出力します。 または、outside_modeがTrueの場合は数値numが0以下、11以上であってもTrueを出力します。それ以外はFalseを出力する。

論理演算子

# aもbもtrue 
a && b
# aかbのどちらかがtrue 
a || b
def in1to10(num, outside_mode)
  if (num >= && num <= 10) || outside_mode
    puts “Trueelse
    puts “Falseend
end

(num >= 1 && num <= 10)|| outside_modeで、numが1以上かつnumが10以下、または、outside_modeがtrueの場合「True」を出力します

Rubyドリル 15

繰り返し処理

数字を入力した数だけ、Hello!と表示させるコードをつくります。

def output(num)
  num.times do
    puts “Hello!”
  end
end

puts “何回表示させますか?”
num = gets.to_i
output(num)

入力した値を、数値に変換するためにgets.to_iを使います。 入力した値を、変数numに代入し、引数でメソッドに渡します。 timesメソッドを使って、入力された数だけ繰り返します。

progate 学習コースⅣ 完了

ルーティング
getとpostの使い分け
get:データベースを変更しないアクション
post:データベースを変更するアクション

postの時のlink_to
method: “post”を指定

オリジナルアプリ

カレンダーアプリの修正 ログインユーザーのタスクのみを表示するように変更
今日のタスクのみを表示

カレンダー上のタスクは全部表示させたいんだけど・・・ コントローラーで別々に定義したらいけるかな?

派生案
カレンダーにイベントを表示させて、どのユーザーでもみれるようにする
理由:地域の回覧板のようなアプリケーションにしたい

一言日記

ゲームのしすぎ・・・ ゲームするとやめられなくなるから考えないと。 昼休憩後にやると時間があっという間に無くなる。 やることやって全部できたら、夜は自由にしてるけど
ちょっとだけならいいかな・・・と甘えが(笑)

就活がストレスなんですよ!! ん〜どうしたもんか。

そうだ!!レジレンスを高めよう(笑)

やること
①解決可能な問題と解決不可能の問題にわけて、解決可能な問題に一点集中 ②恐怖からどんな感情なのか、何が得られるか考える ③ロールモデルを決める。こんな人になりたいなど。 ④ストレス発散リストを20~30個作成 ⑤やることに意味を考える

時間がある時に考えてみよう。 さて、今日もプログラミングがんばります。

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

6/18 学習内容

 

Rubyドリル 10

任意の数字が配列の中の何番目に格納されているか

 

input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]

 

この中から任意の数字が何番目に含まれているのかという結果を返すために使うのが「searchメソッド」を「each_with_index」を使って作成します。

 

def search(target_num, input)

 

  input.each_with_index do |num, index|

    if num == target_num

      puts "#{index + 1}番目にあります"

      return

    end

  end

  puts "その数は含まれていません"

end

 

input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]

search(11, input)

 

配列inputにsearchメソッドを呼び出して11と変数を実引数としてセットします。

 

呼び出されたsearchメソッドでは実引数を仮引数target_numとinputとして受け取ります

 

input.each_with_indexでは、inputに格納されている要素をnumとして取り出し、要素毎に割り当てられている添字をindexとして取得します。

 

if文でunm == target_num とういう条件式を設定し、inputから取り出した要素とtarget_numが等しいか判別します。

 

等しければ、numがinputの何番目に含まれているか出力します。

 

Rubyドリル 11

対象の文字列の中に特定の値が含まれているか検知する

 

  • 名前を入力すると「登録が完了しました」という文字列を出力すること
  • 名前の中にピリオド(.)がある場合は、「 "!エラー!記号は登録できません"」という文字列を出力すること
  • 名前の中に空白(半角のみ)がある場合は、「 "!エラー!空白は登録できません"」という文字列を出力すること

 

を満たすメソッドを作ります

 

def check_name(str) 

  if str.include?(".")

    puts "!エラー!記号は登録できません"

  elsif str.include?(" ")

    puts "!エラー!空白は登録できません"

  else

    puts "登録が完了しました"

  end

end

puts "登録したい名前を入力してください(例)YamadaTaro"

str = gets

check_name(str) 

 

include?メソッド

指定した値が含まれていればtrue、含まれていなければfalse

 

if文で条件分岐させます。

仮引数のstrで受け取った文字列に対して、include?メソッドでピリオドと半角スペースがないか判断します。

 

if文は条件が当てはまった時点で処理が終了するので、先にピリオド、空白がないかの条件式を記述します。

 

Rubyドリル 12

条件分岐

 

  • 10以下なら10以下の数字です
  • 10より大きい数値なら10より大きい数字です
  • 10以下でかつ0以下なら0以下の数字です

 

が出力するプログラムを書きます。

 

input = gets.to_i

 

if input <= 0

 puts “0以下の数字です”

elsif input <= 10

 puts “10以下の数字です”

else

 puts “10より大きい数字です”

end

 

条件の順番に注意が必要です。

if input <= 10

   puts "10以下の数字です"

elsif input <= 0

  puts "0以下の数字です"

end

 

だと-1の時にも当てはまってしまい、10以下の数字ですと出力され0以下の数字ですと出力されなくなります。

 

 

progate Ruby on Rails 学習コースⅢ 完了

find_byメソッド

ある条件に合致するデータを取得する事ができます。

記述「モデル名.find_by(カラム名:値)」とします。

 

form_tagメソッド

フォームに入力されたデータを送信することができます。

記述「form_tag(送信先のURL) do 」

 

orderメソッド

表示の順番を並び替えることができます。

昇順(:asc)

降順(:desc)

記述 @post = Post.all.order(created_at: :desc)

 

今日の午前中は就職活動。

11社応募。

未経験で35歳ってやっぱりきびしい・・・?

SES?派遣?は未経験募集!!ってなっているけど

入社して研修して、その後が不安。

とはいえ経験を積まないとどうしようもないよね。

わかってるんだけどやっぱり不安。

 

不安になるから就活って疲れるんかな(笑)

 

午後は面接対策として

質問の回答を単語帳?に書いて

ランダムに選んで答える。って練習をしようかと。

 

質問されそうなことをネットで調べて、

回答を考えて

単語帳に書いてたら1日終わった・・・

 

プログラミングの勉強・・・

 

 

 

 

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

6/16 学習内容

 

Rubyドリル 7

Dateクラスを使って、特定の曜日を表示させます

※DateクラスはRubyの標準機能

 

require “date”        ←Dateクラスをライブラリから呼び出します

 

day = Date.today.wday  ←Wdayは曜日を日(0)~土(6)で取得します

days = ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"]

 

if day == 5

 puts “今日は#{days[day]}だ!!”

else

 puts “今日は#{days[day]}”

end

 

dayの値が5かどうかで条件分岐させて、5なら「今日は金曜日だ !!」と表示されるようにします。

 

Rubyドリル 8

unlessへ書き換え

unlessはifとは逆で、条件式がfalseの時に処理が実行されます。

 

if a + b > 0

  puts "計算結果は0より大きいです"

end

 

をunlessへ書き換えると

 

unless a + b <= 0

 puts "計算結果は0より大きいです"

end

 

になります。

a + b < 0

だと0でもfalseになるので、0以上の時とするために <= となります。

 

Rubyドリル 9

繰り返し処理

  • 1~10の数値を順番に足し合わせる
  • 足し算の合計値がターミナルに出力される

になるプログラムを実装します

 

sum = 0  合計値を保存する変数を用意しています

 

10.times do |i|  timeメソッドで10回繰り返すようにしています

 sum += i + 1  1回処理をすると1足します

end 

 

puts sum

 

progate Ruby on Rails 学習コース 完了

 

なんとなく最近ずっと時間に追われてました。

原因はやること(やりたいこと)を詰め込みすぎ・・・

 

仕事もやめて、TEHC CAMPのカリキュラムも終わって

これからは、就職活動しながら

プログラミングの勉強を続けながら

就職が決まるまで少しでも収入を得るために

ブログ、動画編集、クラウドソーシング・・・

貯蓄がなくなるまでに、早くやらないと

と焦っていました。

 

今も不安はなくなってないけど

やることを絞りつつ

最終目標に

つながっている事を最優先!

 

ってことで1日やることリスト

①就活 起きたらコーヒーを飲みながら求人を探す&面接対策

②朝のルーティング ヨガ→プランク→HIIT→DNB→瞑想

はてなブログ 前日にやったことを投稿&ひとこと日記

④勉強 月、水→英語 火、木→数学 金、日→dラボ

⑤プログラミング (1)Rubyドリル (2)プロゲート or Youtube (3)クラウドソーシング

⑥ブログ (1)読書→まとめる

 

今までは時間ごとにきっちり決めてたけど

時間ごとに分けずにタスクを終わったら次やるようにしてみました。

しばらくこれでやってみます。

 

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

6/15 学習内容

 

Rubyドリル4

クラスとインスタンス

クラスの定義

class Human

 # クラスで共通するメソッドの定義

end

 

インスタンスメソッドの定義

インスタンスとして作られた値が使えるメソッド

class Human

 def hello

  puts “おはよう”

 end

end

 

クラスからインスタンスを生成する

human = Human.new()

 

インスタンスからインスタンスメソッドを呼び出す

human.hello

 

Rubyドリル5

メソッドの使い方

price = 300

 

def calculate_price_with_tax

  tax = 0.1

  return price + price * tax

end

 

calculate_price_with_tax

これではエラーになります。

※原因

price = 300 はメソッドの外で定義しているので、メソッドの中で使えずエラーになります。

 

エラーにならないようにするには

price = 300

 

def calculate_price_with_tax(price)

  tax = 0.1

  return price + price * tax

end

 

calculate_price_with_tax(price)

 

引数をつけることで、外から値を渡せるようにします。

※追記

引数 →メソッドの外から中に値を渡す

返り値→メソッド内の処理を呼び出し元に渡す

 

Rubyドリル6

引数の基礎

晴れという文字列を引数で渡し、「明日の天気は晴れです」と表示するメソッドをつくる

 

def get_weather_forecast(weather)

  puts "明日の天気は#{weather}です"

end

 

get_weather_forecast("晴れ")

 

表示させたい文字列に引数をわたせるように#{weather}を使います。

get_weather_forecast("晴れ”)で渡したい引数を記述します。

文字列を表示するget_weather_forecastメソッドを定義します。

 

Ruby on Rails 復習

progate 学習コース  13%

 

6/16日の午前は就職活動 面談がありまして・・・

就職活動って疲れません?

私だけ?

面接とか自己PRとか苦手すぎます・・・

ってことで6/16日はお休みの日にしました。

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

6/14 学習内容

苦手なRubyドリル復習

Rubyドリル1

ハッシュとは?

データとそれに対応する名前をセットに管理できる値のことです。

 

ハッシュの生成方法は{ }を使って生成します。

【例】

teacher = { name: “Mike”, age: 25 }

シンボルを使った記述方法は、キーの後にコロンをつけます。

 

ハッシュへ要素の追加

teacher [:subject] = “English”

 

ハッシュの値を取得

teacher[:name]

 

ハッシュの値を変更

teacher[:name] = “Emma”

 

ハッシュと配列を組み合わせる

配列は値を順番に管理するので、ハッシュと組み合わせることで別々の意味を持つ複数の値のまとまりを、複数管理できます。

 

Rubyドリル2

2重ハッシュの値を取り出す方法

user_data = [

 {user: {profile: {name: 'George'}}},

 {user: {profile: {name: 'Alice'}}},

 {user: {profile: {name: 'Taro'}}},

]

 

nameを取得するには

 

user[:user][:profile][:name]

で取得できるが、配列の中に入っているので、eachメソッドを使います。

 

user_date.each{ |u| puts u.dig(:user, :profile, :name) }

 

※ digメソッド

Rubyに標準で組み込まれているメソッドで、多重階層にあるハッシュの値をまとめて取得できます

 

Rubyドリル3

変数名をつけて定義する

 

国語が80点、英語が50点、数学が70点の場合のテストの平均点をターミナルに出力するプログラムを記述してください。

 

ja_score = 80

en_score = 50

math_score = 70 と定義します

 

average_score = (ja_score + en_score + math_score) / 3 平均点の定義

 

puts “3教科の平均点は、#{average_score}点です。” と出力する

 

Ruby on Rails

progate 学習コース4ページ

 

これからどうしようか考えてたら、学習する時間がなくなってしまいました。