ume

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) 公開レベル クラ…

現役エンジニアの方にコードレビューで指摘していただいたこと

前書き この記事は私自身の忘却録として記事に残します。 class内の処理はメソッド名の位置に揃える NG例 defとendに邪魔されメソッドの中の処理(@number)がみにくい def initialize @number end OK例 メソッド名の下から処理が書かれている方が見やすい def…

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)を取ることができファイル内で…

最近気づいたどの業界でも通じる活躍するためのマインドセット

最近感じたどの業界でも成功する条件 ⇨1%の努力ができる人(抽象度が低い人考え方ができる人)が活躍しているんだなぁと思う 思った背景 以前こども英会話の教材を訪問販売(兼先生)で売っていたのですがその際先輩から「営業相手がお母さん(女性)かつ訪問販売…

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

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

Linuxコマンドまとめ

コマンド一覧 cd pwd ls mkdir rmdir cat less tail touch rm mv cp In find chmod chown ps kill cd~rmdirまで下記の画像を使用し解説します。 cd ⇨今作業しているディレクトリやファイルから上下の階層のディレクトリやファイルに移動するためのコマンド(c…

Dockerfileの書き方

完成図 Dockerfile ubuntu:latest RUN apt-get update && apt-get install-y nginx ADD index.html /var/www/html/ CMD ["nginx","-g","daemon off;"] FROMコマンド ⇨FROMの後は通常OSや環境がセットアップされたイメージファイル名(PHP)などを指定する. 構…

Docker ポート番号とは?

前書き Dockerチュートリアル学習中に↓のようなコマンドに出会い-p 80:80 ⇦「これはなに?」と疑問に感じたのでコマンドの意味を少し深ぼる記事を残します。 docker container run --name tutorial -d -p 8080:80 docker/gettig-started コマンドの意味を理解…

可読性の高いコードの書き方

前書き 可読性の高いコードとは? なぜ可読性の高いコードが求められるか? 他人が理解しやすいコードの特徴 1. 変数と関数の名前の付け方が良いとは? 2. 説明変数を使う まとめ 前書き 私は実務未経験のwebエンジニア志望のものです.先日webエンジニアの友…

Cssで画面幅を狭めると自動的にテキストが縦表示になるのを防ぐ方法

CSS

やりたいこと 現状このように画面幅を狭めるとある一定の画面幅に達するとテキストが縦表示になります。これを画面幅をどれだけ狭めても横表示にしたい。 今回のコード html↓ <header> <nav> <div class="inline-block">レジュメ</div> <ul class="position-right"> <li class="inline-block">自己紹介</li> <li class="inline-block">プロフィール画像</li> </ul> </nav> </header> index.cssの一部 nav { margin-left: …

Docker  実践 Docker - ソフトウェアエンジニアの「Docker よくわからない」を終わりにする本まとめ

前書き 忘却録としてdockerの用語を簡単に解説しまとめます。 用語 Docker Engine とは? ⇨コンテナを乗せる部分 で、Linux で動く ソフトウェア(pcに命令を出すプログラム)です。 要はコンテナを支える土台のイメージ 役割:アプリケーションをコンテナとし…

Dockerとは

目次 Dockerとは? 仮想環境のメリット Dockerとは? ⇨コンテナ型の仮想環境を. 作成、散布、実行するためのもの。 用語 仮想環境とは? ⇨パソコンの中に擬似的なパソコンを用意すること。パソコンの中に目に見えないパソコンがもう一台存在するイメージ. 例…

git diff コマンドの概要と使い方

git diffコマンドの概要 役割2つ. インデックスとワークツリー間の状態の差分を見るコマンド(git diff) ⇨git add する前にgit diffを実行すると差分が見れる リポジトリとインデックス間の状態の差分を見るコマンド(git diff --cashed)git commit する前にg…

css  親要素の中の子要素の中央寄せ

やりたいこと 子要素を親要素の中で縦方向に真ん中揃えにする 結論 ⇨親要素に高さを指定し2つのプロパティを設定する ポイント:このやり方は子要素がインライン要素でもブロック要素でもどちらでも大丈夫です。 親要素の高さを指定するheightプロパティを追…

rails6 has_manyのオプション( foreign_key)の意味と使い方

結論 外部キーを好きな名前で設定するためのオプション. 外部キーってなに?って方は以下を参照してください。 www.sejuku.net 外部キーはどのように名前が決まるの? (参照先の)モデル名の小文字_idになる ↓の場合 通常は、外部キー制約のカラム名を「user_…

Rails6の`update_column`と`update`:性能と使い方の違い

結論 特定の理由がない限りupdateメソッドを活用しよう。 update_column バリデーションをスキップ コールバックをトリガーしない updated_at タイムスタンプは更新されない 例 user = User.find(1) user.update_column(:name, "KOnaN") もし上記のコードでU…

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

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

rails6 devise confirmationコントローラーのshowアクションに反応させたいのになぜかusersコントローラーのshowアクションに反応する問題

前書き rails6でdeviseを導入しログイン、ログアウトを簡潔に実装したいと思いました。ただ想定しているコントローラーのアクションが反応しない。なぜか別のコントローラーのアクションを探しに行くという問題に直面しました。同様に悩んでいる方の参考にな…

なぜオブジェクト指向が重要なのか?

筆者について 実務未経験のwebエンジニア志望の学習歴1年6ヶ月のものです。 この記事について Rubyを学習していると[オブジェクト指向][オブジェクト指向]と耳にタコができるくらい聞くので改めてなぜオブジェクト指向が必要かをまとめたいと思います。 そ…

rails6 has_manyとhas_oneの関連メソッド(関連データ登録)

前書き has_manyとhas_oneで同じ意味のメソッドでも少し書き方が違い. その違いを知らず何度もハマったので記事に残します。 関連データの登録 1対1の場合(has_one) 親(Car). 子(Engine) class Car < ActiveRecord::Base has_one :engine end class Engine <…

rails6 Deviseのconfirmable機能が邪魔してfakerで架空のデータ作成できない

前書き 今ユーザーを登録する際以下の流れで登録できるアプリを作成しています. ①ユーザー情報を仮登録⇨②ユーザーに本人確認のメール送信⇨③本登録 この流れのアプリにfakerでダミーデータを作成しようとした際下記のエラーが出力されたので忘却録として記事…

検索機能を実装するためにransackというgemを使用しました。 選定理由3つ. ①やりたいことができる. ②長期的にgemの動作が安定している. ③最速で実装できる 選定理由に対する根拠(思考プロセス) 他のユーザーを特定するといった検索機能を実装したいと思いま…

rails Gemの選定基準

前書き Gemの選ぶ際どういう点に気を付けてGem選びをするか曖昧なので具体化しまた振り返りたいので記事に残します。 前提選定する上で「これが正解」とかはないです。 全体像 やりたいことを明確にする どんなgemがあるかをリストアップ 選定基準を明確にす…

rails gem simple_calendarで2つのテーブルからデータを取得しカレンダーに表示する

初めに simple_calendarというgemをオリジナルアプリ(目標管理アプリ)に導入した際、カレンダーに1つのテーブルからデータを取得、表示するといったqiita記事はよく見かけたのですが「2つのテーブルからそれぞれデータを取得しカレンダーに表示させる」とい…