ume

ruby

rails7 メンターさんのコードレビューを通して指摘していただいたこと

前書き 今railsでrake taskを新規作成しています. そこでrails promotion_code:generateというコマンドを実行するとPromotionテーブルに10個のレコードを作成したい。1つのレコードには2つのカラム(promotion_codeとprice)があり、それぞれ8桁の英数字と数…

Ruby safe navigation operator(ぼっち演算子)

ぼっち演算子とは? ⇨レシーバーがnilだった場合でもメソッドをエラーにさせない仕組み 例 class User def name puts "まさです" end end user = User.new user.name object = nil object.name 出力結果 a.rb:15:in `<main>': undefined method `name' for nil:Nil</main>…

Rubyローカル変数と同名のメソッドについて

前書き Rubyに関して新たな知見を得たので忘却録として記事に残します。 以下のコードを見て introduceメソッドの出力結果が 「僕ドラえもん」か「野比のび太」どちらが出力されるかわからない方はこのまま記事を読み進めてください。 class User def name "…

Ruby 拡張性のあるメソッドの作成方法

前書き 友人にコードを見ていただいた際 「この辺拡張性の低いコードやな」と指摘されました。 「そもそも拡張性とは?」 「なんで拡張性の高いコードを書かないといけないの?」 上記2つに対して疑問が湧いたので忘却録かつ誰かの学びに繋がればという想い…

Ruby インスタンス変数とローカル変数の使い分け

前書き 唐突ですがインスタンス変数とローカル変数みなさんどのように使い分けているでしょうか? もし. インスタンス変数=インスタンス変数を定義しているメソッド(initialize),以外のメソッド(accelerateなど)からでも呼び出せる変数(下記のコードのように…

Ruby オブジェクト指向(カプセル化)

カプセル化とは ⇨クラス外部から不用意にメソッドが実行されるのを防ぐこと 例 メソッドのカプセル化なし def greet puts "こんにちは" end greet 出力結果 こんにちは このようにメソッド名だけで処理を「どこからでも」呼ぶことができる このようなメソッ…

Ruby ポケモンで学ぶオブジェクト指向(ポリモーフィズム))

ポリモーフィズムとは? ⇨ 同じメソッドでありながら違う振る舞い ポケモンの例(ポケモンクラスという親クラスと子クラス(ゼニガメ(Squirtle)とヒトカゲ( Charmander)クラスがあるという構造になっています) # ポケモンクラスの定義 class Pokemon def initi…

Ruby オブジェクト指向(継承)を学ぶ

前書き 継承 ポリモーフィズム カプセル化 オブジェクト指向の3つの特徴それぞれの理解が曖昧なので記事を通じて理解(どんな時に使うのなど)を深めたいと思います. ⚠️本記事は継承に焦点を合わせて作成します。 継承とは? ⇨子クラスを作成すること. 子クラ…

Ruby オブジェクト指向について

目次 オブジェクト指向とは? なぜオブジェクト指向が必要なのか? オブジェクト指向とは? ⇨①共通のデータやメソッドをテンプレート化(使い回し)し保守性や開発効率を上げる開発手法. 疑問1,共通のデータやメソッドとは? 疑問2テンプレート化(使い回し)と…

Ruby リファクタリングの概要

リファクタリングとは? ソフトウェアの外部の振る舞いを保ったまま内部の処理を短く、誰がみてもわかりやすく変更していくこと。 なんでリファクタリングが必要なのか? ⇨開発効率が上がる(バグ修正しやすい、追加開発しやすい). 追加開発=機能を追加して…

Ruby 例外処理

例外処理とは? ⇨エラーになった時にどういう処理をするのか事前に決めておくこと. そうすることでエラーが起きた後、エラーが起きた箇所以降の処理も実行できるようになる. 例外処理なし. ⇨エラーが起きたらプログラムが止まる. 例外処理あり. ⇨エラーが起…

Ruby initializeメソッド

前書き initializeメソッドを浅くしか理解していないので深掘りしてみます。 要は以下の2つのコード(initializeメソッドある、ない)の違いを明確に理解できるようになりたいです. initializeメソッドあり class Konan def initialize(name) @name = name en…

Ruby 呼び出し制限(public,private,protected)について

前書き protectとprivateの違いを理解が曖昧だったので理解を深めるために記事に残します。 結論 そもそも呼び出し制限とは? ⇨どこからでもメソッドを呼び出せないようにすること。 呼び出しを制限する方法3種類(public,private,protected) 公開レベル クラ…

Guard Clauseとは?

結論 ⇨条件分岐のネストを深くしないための技法のひとつ。 要は下記のように条件分岐がネストしているコードをネストしないようにする技法 if 条件式A if 条件式B 条件式Bのtrue処理 end else 条件式Aのtrueの処理 end 具体例 具体例数字の1~10までの数字が…

Ruby ライブラリーoptparseの概要と使い方

optparseとは? ⇨Rubyでコマンドライン引数を扱うための標準ライブラリ. 通常Rubyファイルを実行する際以下のようにして行う ruby ファイル名 optparseを使用したRubyファイルを実行する際下記のようファイル名の後に引数(-a 3)を取ることができファイル内で…

ruby配列から特定の要素を取り出すときはrejectではなく-メソッドを使用する。

前書き 私はプログラミング初学者なのですが現役エンジニアの方にコードレビューしていただいたことを記事に残します。 結論 ⇨同じ処理ならより可読性が高いメソッドを使おう。配列から要素を除外するメソッドはrejectメソッドより-(マイナス)メソッドを使用…

Ruby インスタンスメソッドとクラスメソッドの使い分け

結論 個インスタンス毎に異なるデータを持たせたい場合はインスタンスメソッド、全てのインスタンスに共通に持たせたい場合がクラスメソッド(もしこの見分け方で例外ができた場合その時にまた学ぶとする) 給料計算のプログラムの例 前提 全従業員は同じ基本…

attr_accessorの使い方とセッターメソッドの注意点

対象者 selfが省略できる時とできない時の違いがわからない方 attr_accessorの復習をしたい方 attr_accessorとは ⇨インスタンス変数とセッターメソッド、ゲッターメソッドのこの3つを自動作成してくれる機能(画面上には見えない)。 セッター?ゲッター?と…

ruby セッター ゲッターメソッドについて

この記事でわかること ゲッターやセッターの言葉の意味と使い方 ゲッターとは?セッターとは? 結論. ゲッター=インスタンス変数の中身を見る機能. セッター=インスタンス変数の中身を書き換える(更新する)機能. 前提 インスタンス変数はクラス外部から…

ruby オブジェクト指向の三代要素とは?

対象者 ruby初心者. オブジェクト指向とはなんぞやという方. この記事を読んでわかること オブジェクト指向が使われているプログラミング言語、pythonやrubyがどういうプログラミング言語であるのかをざっくり理解できます. 目次 オブジェクト指向の三代要素…

ruby 初心者必読オブジェクトとクラスとは?

対象者 オブジェクト指向という前にオブジェクトはなんぞやという人. この記事を読んでわかること オブジェクトとクラスの概念をイメージできること、またそれぞれの概念を言語化できること 目次 オブジェクトとクラスとは?. クラスの要素 1. オブジェクト…

ruby ハッシュのキー名を文字列とシンボルの違い

前書き. ハッシュのキー名は文字列の方がいいのかシンボルで描くのがいいのか新しい気づきがあったので記事に残します。 ruby学習者の参考になれば幸いです. 記事の対象者. rubyの文法少し知っている方. rails tutorial4章まで進んでいる方. rubyの文法を少…

ruby で時刻を扱ってみる

前書き 時間の取得が苦手なので復習+私のように混乱してしまうかたのために記事にします。 現在日時の表示 Time.nowかTime.newを使うどちらも同じ意味 Time.nowの方がわかりやすいのでこちらが好まれる傾向があります。 今現在9月22日(木曜日)16:39…

ruby 初学者用 selfとは

前書き 初心者で勉強していると新しい用語などの理解が2〜3割しかないまま次々進む傾向にあると思いました。 私はselfについて理解が2〜3割しかなく、後から『どういう意味だったっけなぁ?』と思うことが多く結果「前ちょっとやったのに覚えていない自…

ruby エラーから学んだこと

前書き 標準入力で入力された文字が大文字の場合YESと表示 小文字の場合NOと出力するというプログラムを練習で作ろうとしたところその中で失敗をしたのでそこから学んだことを共有させていただきます。 作ろうとしたもの 入力例 B ↓ 入力された文字が大文字…

ruby エラーの意味と原因と解決策

日々rubyでコードを書きながら練習していると予期しないエラーに直面するので 今日は出会ったエラーの意味と原因と解決策を記事にしてみようと思う。 エラーの意味と原因 zixya.rb:8: syntax error, unexpected local variable or method, expecting `then' …

Ruby 基礎

Ruby 基礎 目次 ①各種名前 ②①の機能の紹介 ①各種名前 ①各種名前 ①オブジェクト ②インスタンス ③メソッド ④クラス  ② ①の機能の紹介 オブジェクト ⇨便利機能を兼ね備えたお道具箱のイメージ お道具箱のイメージとは? お道具箱にはハサミや水のりやホッチキ…

Ruby 復習 クラス変数 インスタンス変数

目次 クラス変数とインスタンス変数の比較 クラスメソッドとインスタンスメソッドの比較 モジュールについて Mix-in クラス変数とは インスタンスごとにそれぞれ固有とは↓でいうインスタンスごと(masa=User.new(“masa”))によって実引数が違うから @name(イ…

Ruby 復習

目次 class文 initializeメソッド 組み込みクラスの継承の関係 アクセスメソッド 特別な変数self クラス文 class クラス名 クラスの定義 End 注意 クラス名は必ず大文字で始めないとあかん initializeメソッド Class文の中で定義されたメソッドをそのクラス…

Ruby復習 継承

継承 継承のメリット 組み込みクラスの継承の関係 継承 既に定義されているクラスを引き継いで新しいクラスを作ること 継承によって新しく作られたクラス⇨サブクラス 軽症の元になったクラスをスーパークラスと言います 継承のメリット ① 既存の機能はそのま…