記憶の外付けHDD

切実に頭にUSBのコネクターがほしいです。なるべくtype-cでお願いしたいです。(忘れないように、プログラミング学習で学んだことを投稿してます)

2019/10/13、14_チェリー本(6、7日目)

はじめに

昨日、更新しそこねたので、本日は、2日分書きます…

読んだ本

プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus | 伊藤 淳一 | コンピュータ・IT | Kindleストア | Amazon

本編

読んだページ数

  • 第4章(P95〜P97)

新しく知ったこと

ブロックの囲み方

  • do〜end{ }もOK
囲い方 使い時
do〜end ブロック処理が長い&改行
{ } ブロック処理が短い&一行で書く
  • 以下の2つの結果は同じく月曜日 火曜日 水曜日 木曜日 金曜日を出力する
# do~endパターン
weekday = ["","","","",""]
weekday.each do |day|
  puts "#{day}曜日"
end
# { }パターン
weekday = ["","","","",""]
weekday.each { |day|  puts "#{day}曜日"}

配列を使うメソッド

mapメソッドとcollectメソッド

  • mapcollectエイリアスメソッド1
    ※ mapメソッドは知っているので割愛

selectメソッドとfind_allメソッド

  • selectfind_allエイリアスメソッド
  • ブロック要素の戻り値がになった要素だけで、新たな配列を生成する
element = ["","","","",""]
element.select { |ele| ele.empty? }

#=>["", ""]

empty?は空配列だったらtrueを返すメソッド

rejectメソッド

  • ブロック要素の戻り値がになった要素だけで、新たな配列を生成する
    select(find_all)メソッドと逆)
element = ["","","","",""]
element.select { |ele| ele.empty? }

#=>["月", "火", "水"]

findメソッドとdetectメソッド

  • select(find_all)メソッドと同じ処理で、最初の要素だけ返す
  • detectは「検出する」の意
prime_number = [2, 3, 5,]
prime_number.detect { |num| num.odd? }

#=> 3

あとがき

知らなかったメソッドが多かったので、あんまり進みませんでした…

以上


  1. エイリアスメソッドは、同じ挙動がするのに名前だけ違うメソッド

2019/10/12_チェリー本(5日目)

はじめに

台風19号の影響、特になかったので、今日もちゃんとちょっとだけチェリー本読みました。
ただ、今後のことを考えて、これから

  • 個人実装を優先的にやるから、チェリー本読書は1日10ページ目安にやる(勉強のための勉強になってる気がするので...)
  • RSpec使えるようになりたいので、テストの項目は飛ばす

ことにしようと思います。

読んだ本

プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus | 伊藤 淳一 | コンピュータ・IT | Kindleストア | Amazon

本編

読んだページ数

  • 第2章(P67〜P68)
  • 第4章(P86〜P95)

新しく知ったこと

配列の一番最後に要素を足す

# prime numberは「素数」
prime_number = [2, 3, 5,]

prime_number << 7

#=> [2, 3, 5, 7 ]
# 「7」が一番最後に追加される

さまざまな配列の要素の消し方

delete_atメソッド

  • 削除したい要素の要素番号(添 え字)を指定して削除

配列memoryから嫌な記憶(要素番号1の「先生をお母さんと…」)を削除

memory = ["修学旅行は日光", "先生をお母さんと呼んでしまった"]
memory.delete_at(1)
#=> memory = [”修学旅行は日光”]

delete_ifメソッド

  • 条件に該当した要素のみを削除する方法
  • delete_atとの違い
    • 要素番号(添え字)がわからなくても消せる
    • 一度に復数の要素を消せる
    • 削除対象の条件は、ブロック内で指定する。

事象:配列putcher_numで、エースピッチャーがつける背番号「1」を2つ作ってしまった
対応:「1」が付いている要素を全部消す。(監督は誰に「1」を渡すか、まだ決めかねている)

pitcher_num = [1, 10, 14, 1]

pitcher_num.delete_if do |pit|
 pit == 1
end

#=>pitcher_num = [10, 14]

あとがき

寝落ちしてしまったので、更新が翌日になってしまいました…

以上

2019/10/11_チェリー本(4日目)

はじめに

チェリー本読書を今日もしました。 だんだん日課になってきて、いい感じです!

読んだ本

プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus | 伊藤 淳一 | コンピュータ・IT | Kindleストア | Amazon

本編

読んだページ数

  • 第2章(P56〜P67)

新しく知ったこと

デフォルト値付きの引数

  • 引数ありのメソッドに引数を渡さなかった場合でも、エラーにならない
    (通常、引数ありメソッドに引数を渡さなかった場合、ArgumentErrorになる)
  • デフォルト値ありとデフォルト値なしの引数を混在させることもできる

def brother (first, second, third = "なし")
  puts "長男は#{first}"
  puts "次男は#{second}"
  puts "三男は#{third}"
end

#=> 長男はせいじ
#=> 次男はジュニア
#=> 三男はなし
  • 三男には引数がないから、デフォルトの「なし」が表示される。

あとがき

万が一、台風で避難しなければいけなくなったら、チェリー本持っていこうがちょっと悩んでます…

以上

2019/10/10_チェリー本(3日目)

はじめに

台風19号で家がぶっ壊れた時に避難する準備をしてたら、こんな時間に…
しかし、読書はちょっとだけちゃんとしました。

読んだ本

プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus | 伊藤 淳一 | コンピュータ・IT | Kindleストア | Amazon

本編

読んだページ数

  • 第2章(P45〜P56)

新しく知ったこと

配列を連結して、1つの文字列にする

["","","19",""].join
#=>"台風19号"

文字列を繰り返し表示する

mo = '' * 8
puts "#{mo}のうち"
#=> "すもももももももものうち"
# 「も」が8回繰り返し表示される

&&と||の優先順位(論理演算子

  • &&||の優先順位は、&&が高い
  • A || B && Cは以下の式と同じように解釈される
    A || ( B && C ) ※&&が優先的に処理される

参考

  • 同じ意味を持つ演算子andorを使うと…
    ※【前提】andorの優先順位は、同じ
    • A || B && Cは以下のように解釈される
    • (A || B) && C ※優先順位が同じだから、左側から優先的に処理される

あとがき

全444ページで、1日10ページ進めるとしたら、読み終わる日は…

require "date"

Date.today + (444 - 56)/10 

#=> 2019-11-18

11月18日でした!

以上

2019/10/09_チェリー本(2日目)

はじめに

今日も30分この本を読みました。

読んだ本

プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus | 伊藤 淳一 | コンピュータ・IT | Kindleストア | Amazon

本編

読んだページ数

  • 第2章(P27〜P45)

新しく知ったこと

数列でカンマ区切りをしたいとき

  • 数列には_を含めることができる
  • 100万円は100_000_000と書くことができる。

(初見だったら、きっと何表現しているのかわからないと思いました...)


累乗(べき乗)

  • **で計算できる
    • 例)3 ** 3 = 9

真偽(trueか?falseか?)

  • Rubyでは以下のようなルールで真偽が決まる
  • 偽:falseまたはnil
  • 真:それ意外

nilも偽になること、すっかり忘れそうだったので…)


%記法で文字列を作る

  • シングルクオートで囲みたいとき→%q
  • ダブルクオートで囲みたいとき→%Q
  • 区切り文字は任意の記号でOK
  • !でも?でも{}でもOK
# 例(シングルクオート)
%q!こんにちは!
# ↑`こんにちは`になる

# 例(ダブルクオート)
%Q{こんにちは}
# ↑”こんにちは”になる
  • %! !で囲んでもダブルクオートになる

(Qqクオートの頭文字?)


ヒアドキュメント(行指向文字列リテラル

  • 文字列に改行を含めたい場合は、ヒアドキュメントを使うと、スッキリ書くことができる
  • ヒアドキュメントは<<識別子 識別子
  • ヒアドキュメント内では式展開が使える
# 例
# 識別子として「text」を使用
message = <<text
これは



キュ



です。
text

puts message
#=> これは
# ヒ
# ア
# ド
# キュ
# メ
# ン
# ト
# です。

リテラル(litetal)は「(形)文字の」と言う意味らしいです…)

以上

2019/10/08_チェリー本(1日目)

はじめに

最近、個人開発をしており、そもそもRubyの知識がないなと思い知らされました。
なので、今日から毎日少しずつこの本読んで、知らなかったことを記録していきたいと思います。
(1日30分目安)

読む本

プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus | 伊藤 淳一 | コンピュータ・IT | Kindleストア | Amazon

本編

読んだページ数

  • 第1章(終了)
  • 第2章(〜P27まで)

新しく知ったこと

ローカル変数

  • 入門書の序盤によく出てくる変数は「ローカル変数」と言われる
#例
age = 100056
name = "デーモン小暮"
role = " 閣下"

(ローカル変数って名前、知りませんでした…)

文字列のダブルクオートとシングルクオートの違い

機能 ダブルクオート"" シングルクオート''
式展開#{}
バックスラッシュ記法 (改行文字\nなど)

(とりあえず、""使っておけば間違いないってことっすかね…)

参考

あとがき

序盤の基礎な項目での知らないことって、こまごました知らなくても平気そうな知識に偏るなと思いました。
明日からは、もうちょうスピード上げて進めたいと思います!

2019/09/28_アールべンブ(Rubyのバージョン切り替え)

はじめに

Rubyのversion2.5で作ったアプリを立ち上げようとしたところ、rbenvのバージョン切り替えってどうやるんだ...?
となったので、切り替え方法記録します。

方法

現在のバージョン等を確認

  • まず、現在適用されているバージョンと、インストール済みのバージョンを確認
  • 特定のプロジェクトで適用しているバージョンを確認するときは、そのディレクトリまで移動する
  • ↓↓確認方法↓↓
rbenv versions

 =>結果
 system
  2.5.1 
 * 2.6.3 (set by /Users/○○○/■■■/△△△/.ruby-version)
  • *がついているのが、現在適用しているバージョン
  • そのほかが、システムにインストール済みで、切り替え可能なバージョン

バージョン切り替え

バージョンの切り替えには、以下の2種類があります。

  1. global
  2. local

global

  • PC全体的に使うRubyのバージョン(グローバルバージョン)を設定
  • ↓↓(例)2.5.1 に切り替えたいとき↓↓
rbenv glabal 2.5.1

local

  • ローカルのアプリケーション(プロジェクト)ごとに適用しているバージョンを設定
  • ↓↓(例)2.5.1 に切り替えたいとき↓↓ 注)まず、対象のプロジェクトのディレクトリに移動した状態で…
rbenv local 2.5.1

その他

  • rbenv rehash新しいバージョンをインストールした後に実行する
  • 【重要】rbenvは「アールビーエンブ」と読む。(筆者は30分前まで「アールべンブ」と読んでました…)
  • Rubyのバージョン(環境:environment)を管理するから「rbenv

参考