Ruby関連のことを調べてみた2023年01月05日

Ruby関連のことを調べてみた2023年01月05日

ペアプロあるある「記号書けるけど読めない」状態を回避するために読みにくい記号をRubyでの使用例と共にまとめてみた

## はじめに

最近ペアプロでナビゲーター役(指示役)をすることが多いのですが、普段自分がコーディングで利用している記号でも「読み方がわからずに伝えられないもの」や「相手に伝わらない言い方」があることに気付きました。

そこで、ペアプロをやる中で私が「書けるけど読めない」「相手が理解しにくい」と感じた記号についてRubyでの使用例と共に抜粋して紹介します。

## 読みにくい記号と読み方一覧

| 記号 | 主な読み方 |
|:-:|:-:|
| () | 丸括弧(まるかっこ)、パーレン |
| [] | 角括弧(すみかっこ)、ブラケット |
| {} | 波括弧(なみかっこ)、中括弧(ちゅうかっこ)、ブレース |
|>|大なり|
|<|小なり| |:|コロン| |;|セミコロン| |~|チルダ| |^|キャレット、ハット| |\\ |バックスラッシュ| |\||縦棒、パイプ| |*|アスタリスク| ## 使用例 ### ():丸括弧(まるかっこ)、パーレン メソッドの宣言や呼び出し、複数の式をまとめる際に使用します。 括弧というとこちらの記号をイメージする人が多

元記事を表示

【Ruby】private、protectedの使い分け

# praivate
class内でprivetaメソッドを定義されたメソッドはレシーバを指定して呼び出すことができなくなります。

“`ruby
class Fooz

private

def say
p “Hello”
end
end

foo = Foo.new
foo.say
“`
この場合はエラーが発生します。

次の場合はエラーが発生せずに実行が可能です。
“`ruby
class Foo

def greeting
say
end

private

def say
p “Hello”
end
end

foo = Foo.new
foo.greeting
“`
privateメソッド内で定義されたsayメソッドは、クラス内で呼び出すことで、インスタンスで使用することが可能となります。

# protectedメソッド
privateメソッドと同じようにクラスの外から直接メソッドを呼び出すことができなくなります。
同じインスタンス内で呼び出すことができます。
ここまではprivate

元記事を表示

gemとbundlerについて

# はじめに
gemとbundlerについて、
ちゃんと理解できていなかったので、備忘録としてまとめる。

## gemとは
gem形式にパッケージングされたRuby用の外部ライブラリのこと。

gem形式とは
外部ライブラリのフォルダやファイルをgem形式(.gem)という1つのファイルに(パッケージング)まとめたもののこと。
参考:
https://pikawaka.com/ruby/how-gem-works#gem(gemパッケージ)とは

ライブラリとは、汎用性の高い機能を他のプログラムで呼び出して使えるように部品化して集めたファイルのこと。
ライブラリには大きく分けて標準ライブラリ、組み込みライブラリ、外部ライブラリの3種類あり、
gemは外部ライブラリにあたる。

備考:
Railsもgemパッケージとして提供されている。
他にも有名なgemとしては、ユーザ認証を簡単に実装できる「devise」、ページネーションを簡単に実装できる「kaminari」がある。

## RubyGemsとは
Rubyのパッケージ(gem)を管理するシステムで、Ruby1.9以降から標準ライ

元記事を表示

【2023年版】Turboを有効化したままRails 7.0でDeviseを使う方法

## はじめに
Rails 7.0がリリースされて1年以上経ちましたが、Railsのメジャーな認証ライブラリであるDeviseは未だにRails 7.0に部分的にしか対応していません([参考](https://github.com/heartcombo/devise/blob/main/CHANGELOG.md#481—2021-12-16))。
そのため、Rails 7.0で`rails new`したRailsアプリケーション(つまり、Turboが有効になっている状態)だと、Deviseを使おうと思っても意図しない挙動になります。

そこで、この記事ではTurboを有効化したままRails 7.0でDeviseを使う方法を紹介します。

## 対象バージョン
この記事は以下のバージョンで動作確認しています(それぞれ2023年1月4日時点での最新バージョンです)。

– Rails 7.0.4
– Devise 4.8.1
– turbo-rails 1.3.2
– Ruby 3.2.0

なお、将来的にDeviseがRails 7.0に対応した場合、この記事の内容はおそらく不要な

元記事を表示

【Java】Javaにおける変数の扱い方

# はじめに
プログラミング初学者の者です。オンラインでプログラミングを学習させて頂いてるのですが、さらに理解を深めていきたいと思い、学習したことを備忘録として、残して理解を深めていきたいと思います。
また、間違った点など、ありましたら、ご指摘いただけると幸いです。よろしくお願いします。

# Javaにおける変数
これまで私は、Rubyを中心に基礎学習をおこなってきました。そこでRubyと比較しながら、javaにおける変数の理解を深めていきたいと思います。

変数は、プログラミング言語によって扱い方が異なります。扱い方によって分類すると「動的型付け言語」と「静的型付け言語」の2種類がありますが、前者がRubyで、後者がJavaになります。

RubyとJavaでは分類自体が異なるほど大きな違いがあるようです。
これらの違いを理解するため、「データ型」について理解します。

# データ型とは
データ型とは。変数に格納するデータの種類のことです。

Rubyでは、「数値としての1」と「文字としての1」はプログラム上では異なるものとして扱われます。

データ型は、このような「数値」や「文字

元記事を表示

オンラインIT講師募集中!

私たちTeamSpartaは、短期間でweb開発系現場で通用する知識を身につけられる、オンライン教育サービス企業です。2019年に韓国ソウルで設立し、現在は世界中で40万人の生徒を持つ、急成長中のスタートアップ企業です。

現在、Teamspartaの日本進出を計画しており、日本人にプログラミングを教えるパートタイム講師を募集しております。もし詳しい内容、または興味がありましたら、下記のグーグルフォームまで気軽にお問合せください。

Google フォーム:【https://forms.gle/UzRF8nUMuzbkpwtj8】

元記事を表示

[初心者向け]ドメイン駆動に興味を持って作ったコード

# 書いた動機

以下の本が素晴らし過ぎて、現実の世界を小さくオブジェクト化したくて書きました。
https://amzn.to/3X2USfv
![スクリーンショット 2023-01-04 15.44.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492674/df98d1d4-008d-5757-8932-bbe74f7f7a31.png)

# 概要

固定電話クラスがあるとするのなら、インスタンスを作成する際、以下の条件があると思います。

1. 末尾は4桁の数字である
1. 全体の長さは「-」を含んで12桁だとする
https://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/q_and_a.html
![スクリーンショット 2023-01-04 15.31.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492674/7675901d-

元記事を表示

Ruby on RailsのアプリにLINEを組み込む。

## はじめに
– 今回は[【個人開発】日用品を自動で購入してくれるアプリを作りました。](https://qiita.com/prg_mt/items/decb7912e82e6384fafb)で実装したLINEログインとLINEbotについての解説記事になります。

## Lineログイン機能について
### Railsアプリの作成
まずはじめに アプリを作成していない方は`rails new`してアプリを作成してください。

### Deviseの導入
LINEログイン機能を実装する前にまずはDeviseでログイン機能を実装していきます。

“`ruby:Gemfile
gem ‘devise’
“`

Gemfileに記載が完了したら、`bundle install`を実行

次に、ターミナルで以下を実行し、Deviseを使えるようにしていきます。
“`terminal:ターミナル
rails g devise:install
rails g devise User
rails db:migrate
“`

ここまで問題なく実行できれば、`rails s`でサーバを立ち

元記事を表示

uninitialized constant ◯◯[定数名] (NameError)への対処法

# 概要

PF作成中にdockerでサーバーの起動を試みた際、
uninitialized constant OmniAuth (NameError)というエラーが表示。
つまづいたので記録として残します。

# 対処法

①以下項目を確認
・ファイル名とclass名が一致しているか?
・ファイルpathとmoduleの定義が一致しているか?
・Railsにファイルを読み込ませているか?
(引用元と詳細:https://qiita.com/yoshixj/items/17de45928f52264fd6a0)

②サーバー起動時に問題が発生した場合は、当該定数のGemがインストールされているか確認

以上です。

# ちなみに
私は②でした。
そもそもGemfileにomniauth-twitter(定数OmniAuthを使うためのGem)を記載していませんでした。

ミスは大体単純な所で発生しがち、気をつけます。

元記事を表示

【わたし気になります!】RubyのArray#forty_two

Rubyには、配列の先頭の要素を取得するメソッドや2番目の要素を取得するメソッドなど、特定の位置にある要素を取り出すメソッドが用意されています。
“`ruby
array = %w(apple banana orange lemon grape)
array.first # apple
array.second # banana
array.last # grape
“`

実際、私はこの3つくらいしか使ったことがないですが、他にも多くのメソッドが用意されています。

“`ruby
array.first # 先頭の要素を取得
array.second # 2番目の要素を取得
array.third # 3番目の要素を取得
array.fourth # 4番目の要素を取得
array.fifth # 5番目の要素を取得
array.forty_two # 42番目の要素を取得
array.third_to_last # 最後から3番目の要素を取得
array.second_to_last # 最後から2番目の要素を取得
array.last # 最後の要素を取得

元記事を表示

開発をはじめて半年の私がデータの並び替えで使えるなぁと思ったもの

開発業務に携わって半年、
データの並び替えで使えるなぁと思ったものを2つ書き留めておきます。

開発環境
・Ruby
・Rails
・MySQL
・Mac

なお、この記事で「order」とは、「取得したレコードを特定のキーで並び替える」ことを指します。
[参考] https://railsdoc.com/page/model_order

#### 今回使うテーブル
Naoさん、Kenさん、Mikaさんのやることリストテーブルを仮定します。
contentはやることリストの内容、personは人、categoryは項目のカテゴリー、dateは日付を格納する想定です。

“`
+—-+————+——–+————–+————+
| id | content | person | category         | date |
+—-+————+——–+————–+————+
| 1 | 女子会 | Nao | frie

元記事を表示

【わたし、気になります!】偶数丸め

## はじめに
今回は、モブで開発中にチームメンバーがポロッと言った

**「Rubyのroundメソッドのデフォルトって偶数丸めじゃなくて四捨五入だよね?」**

という一言をきっかけに偶数丸めについて調べたことを書き留めておこうと思います。

## 目次
1. 偶数丸めについてのざっくり説明
2. 偶数丸めを使ってみた
3. 偶数丸めで行っている処理
4. 偶数丸めはいつ使う?

## 1. 偶数丸めについてのざっくり説明

偶数丸めとは、端数処理の一種で、処理対象がちょうど半分の値の場合、もっとも近い偶数に丸めるという処理のことを指します。
端数処理で一般的な、四捨五入では`1.5`を小数第一位で丸めると`2`になり、`2.5`を小数第一位で丸めると`3`になりますが、偶数丸めでは、`1.5`を小数第一位で丸めると`2`になり、`2.5`を小数第一位で丸めると`2`になります。

例えば、
`1.5 + 2.5 + 1.5 + 2.5 + 1.5 + 2.5 + 1.5 = 13.5`ですが、
各値を四捨五入して足し算を行うと
`2 + 3 + 2 + 3 + 2 + 3 +

元記事を表示

【オブジェクト指向設計実践ガイド】依存関係編

# はじめに

[【オブジェクト指向設計実践ガイド】SRP編](https://qiita.com/EbiTT/items/37f96825f65f23325b5e)の続き。
今回は異なるオブジェクト間の依存関係をいい感じにする方法について考えていきます。

# 特定のオブジェクトのインスタンスに依存しないこと

特定のクラスのインスタンスに依存するコードの例を出してみましょう。人間を表すHumanクラスの他にTwitterのユーザを表すTwitterUserクラスを追加し、新たにHumanクラスに呟くメソッドを足してみましょう。

“`ruby
+ class TwitterUser
+ def tweet
+ # … Twitterでツイートする実装
+ end
+ end

class Human
# これはデータ
attr_reader :weight, :height
def initalizer(:weight, :height)
@weight = weight
@height

元記事を表示

【Rails】SNS機能で相互フォロー一覧を取得する

フォロー一覧、フォロワー一覧を実装する記事はよく見かけるのですが、相互フォロー一覧を取得する実装は見かけなかったので、今回記事にしました。

## 前提
基本的なフォロー・フォロワー機能がすでに実装してあることが前提となります。
具体的には以下のような実装を前提としています。

## モデル

“`ruby: user.rb
class User < ApplicationRecord has_many :relationships, class_name: 'Relationship', foreign_key: 'follower_id', dependent: :destroy, inverse_of: :follower has_many :reverse_of_relationships, class_name: 'Relationship',

元記事を表示

Rubyで二分岐検索を書いてみる

## 環境
Ruby2.6

## はじめに
Rubyで書いた二分岐検索のコードについて、解説したいと思います。二分岐検索とは、簡単にいえば、たくさんのデータの中から探したいデータを、効率的に検索するためのアルゴリズムです。プログラミング言語を学習するとき、一度くらいは、二分岐検索のコードを書いたことがある人は多いかと思います。しかし、二分岐検索のアルゴリズムそのものは、仕事で使うことは殆どないかと思います。折角学習しても、殆どの人は、役に立てることがありません。それでも、言語の学習教材としては、うってつけのアルゴリズムだとは思います。

二分岐検索の詳細についてはこちらをご参照ください。
https://e-words.jp/w/%E4%BA%8C%E5%88%86%E6%8E%A2%E7%B4%A2.html

## コードの解説

“`
gets.chomp.to_i
“`
標準入力で入力した値を取得して、数値に変換します。getsしただけでは、改行コードがついているため、chompで改行コードを取り除きます。

“`
ary.sort!
“`
ランダムに作った配列を昇順

元記事を表示

【Rails】エラー Mysql2::Error: Table ‘〇〇_development.〇〇’ doesn’t exist: 

# 概要
アプリ作成時、コントローラ、モデルを一気に作成し、その後
“`$ rails db:migrate“` コマンド実行でタイトルのエラー。
解決方法をまとめます。

# 結果
“`rails db:migrate:status“` でdown状態を確認後、
マイグレーションファイルの日時部分を入れ替え、
“`$ rails db:migrate “`で解決。

![スクリーンショット 2023-01-03 16.55.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2235743/b5c32f8d-ec10-0936-ded1-d90ae7ebb106.png)

青丸の部分を入れ替えます。

# 原因
外部キー、モデル作成($rails g コマンド)の実行順番が原因でした。

以下、画像のcommunity_topic、article、community_topic_tagテーブルで解説します。
![スクリーンショット 2023-01-03 16.42.12.png](ht

元記事を表示

Dockerを動かしてみた(Ruby2.7 簡易webサーバー構築)

# はじめに
dockerを使った開発をしたことがないので、環境構築してみたことを備忘録として残しておく。
dockerが何なのか、メリットデメリットなどはそこらじゅうに解説サイトなどがあるので、ここでは割愛する。

# 環境
* MacBook Air (Retina, 13-inch, 2020)
* macOS Monterey version 12.6

# やりたいこと
dockerをインストールし、誰かが作った環境を動かしてみる。
期待すること:自身のPCにインストールせずとも、同じように動かせるはず。

# やったこと
1. 以下のサイトで、Docker Desktop for Macをインストール
https://matsuand.github.io/docs.docker.jp.onthefly/desktop/mac/install/
※インテル用と、M1チップ用があるので注意。

2. docker Desktopのチュートリアルに従って操作してみる。
公式チュートリアルの和訳をされているページがあったので、参考にさせていただきました。[和訳](https://

元記事を表示

【オブジェクト指向設計実践ガイド】SRP編

# はじめに

あけましておめでとうございます
今回は昨年末に参加させて頂いたインターンで会社に購入頂いた[オブジェクト指向設計実践ガイド](https://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E8%A8%AD%E8%A8%88%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-%EF%BD%9ERuby%E3%81%A7%E3%82%8F%E3%81%8B%E3%82%8B-%E9%80%B2%E5%8C%96%E3%81%97%E3%81%A4%E3%81%A5%E3%81%91%E3%82%8B%E6%9F%94%E8%BB%9F%E3%81%AA%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E8%82%B2%E3%81%A6%E6%96%B9-Sandi-Metz-ebook/dp

元記事を表示

Rubyでループ文

Rubyでループ文を作ります

“`Ruby
test1 = [10,20,30,40]
num = test1.length

for i in 0…num do
puts test1[i]
end
“`

元記事を表示

Ruby 3.2 で導入された Integer#ceildiv とは

Ruby 3.2 で `Integer#ceildiv` なるメソッドが導入された。これはどういうものか。

# 用途

テニスボールが 15 個ある。これを「4 個入るケース」に詰めて保管しておきたい。ケースはいくつ必要か。

15 を 4 で割ると 3 余り 2。ということは,3 ケースに 4 個ずつ詰めて,半端の 2 個を別の 1 ケースに入れることになるので,ケースは計 4 個必要になる。

この計算は,Ruby でやるなら

“`rb
p 15 / 4 # => 3
# あるいは
p 15.div(4) # => 3
“`

で,3 に 1 を足せばよいと分かるわけだが,整商(整数の商)にいつも 1 を足せばよいわけではない。

ボールが 12 個なら半端が出ないので,`12 / 4` がそのまま答えになる。

つまり,整商と剰余の両方を `divmod` で求めて

“`rb
p 15.divmod(4) # => [3, 2] # この場合,3 に 1 を足す
p 12.divmod(4) # => [3, 0] # この場合,3 がそのまま答え
“`

と考えな

元記事を表示

OTHERカテゴリの最新記事