Ruby関連のことを調べてみた

Ruby関連のことを調べてみた

【Ruby】RubyのStructを活用する

# 1. Struct
RubyにはStructという、構造体を扱うクラスがあります。

:::note info
構造体とは?
構造体とは「1つ以上の、任意の種類の値をまとめて1つにしたもの」である。

データや情報、プログラムのコードなどを意味のある単位に分類・分割・整理して、構造的にまとめることが目的。

無秩序なデータをオブジェクト指向的に記載できるので最高。
:::

## TL;DR
– シンプルなデータ構造や一時的なデータのカプセル化
– 構造や目的がはっきりしているが、完全なクラスを定義するほどではない場合
– 責務が複数存在するモデルを分割するための最初のステップ
– Hashでサイレントエラーが起きてしまった場合(Structで属性間違えたらエラーが出る)
– Structは「一時的なデータのカプセル化」であり、ここでの「一時的」の定義は、主にプログラムのスコープやライフサイクルの短さを指す

# 2. Structの基本的な定義・振る舞い
– 任意のパラメーター、メソッドを定義できる構造体クラス
– 配列やHashのようにアクセスでき、型変換も可能
– 属性を

元記事を表示

【来年の目標】2019年ごろに作ったRuby/TKアプリ javascriptで作り直したい(2024年中)

javaspcriptの勉強のモチベーションとして
2019年ごろに作ったRuby/TKアプリ をjavascriptで作り直したい
javaspcript + HTML + css
HTA っていうんですかね?

機能
・指定条件でファイルを検索して登録。(ベースディレクトリ、拡張子、含むワード、無視ワード)
・拡張子別に指定したプログラムに渡して実行。
・実行時間、実行回数を記録。
・ランダムソート、ランダム実行。
・ファイルの移動、リネームを自動検出して実行時間回数などのデータも移行

※開発当時の環境 今はこのバージョンはもうないので自分でruby/TK環境を用意する必要あり
WITHOUT DEVKIT Ruby 2.3.3 ※32ビット
Ruby 2.3.3 (x64) ※64ビット

git hub
https://github.com/majimiki/rubytktest/blob/main/_Random_Launcher.rbw

元記事を表示

投稿機能アプリの削除機能

備忘録としてあげさせていただきました。

## 目的
– CRUDのD(DELETE)を体験
– データの操作で基本的な処理となる「削除」を理解
– destroyアクションを理解
– Prefix

## 削除機能
7つのアクションのうち、削除機能はdestroyが該当

## 実装の流れ
1. ツイートを削除するためのルーティングを設定 
1. 削除ボタンをビューに追加
1. destroyアクションをコントローラーに定義する

## destroyアクションのルーティング設定
config/routes.rb
“`ruby
resources :tweets, only: [:index, :new, :create, :destroy]
“`

## 削除ボタンを投稿一覧に追加
`linl_to`mメソッドを使い、削除ボタンを追加
削除ボタンのパスには **_ツイートのid_**を パラメーターとして持たせる
/tweets/《tweetのid》というパスにすると、パラメーターとして受け取ることができる

HTTP: **_DELETE_** メソッド

元記事を表示

Rubyのクラスとインスタンスについて

## 概要
自分自身が初めてクラスとインスタンスを学習した際に苦労したため、その際にメモしたものをアウトプットの練習を兼ねて記事にしました。
自分自身まだまだ知識が浅く間違いがあるかもしれませんが、その際は優しくご指摘・アドバイス頂けると幸いです。
よろしくお願いします。

### クラスとインスタンスの概要
クラスとインスタンスの関係は設計図とその設計図から作られた実物体というような説明がよくされます。
これは後々でてくる`new`メソッドを使ったインスタンスの作成方法の部分で上記の説明がわかると思います。
クラスから作られたインスタンスは共通の性質を持ちながらも、そのインスタンスごとに特有の性質を持たせることができるようになります。

### クラスの定義方法
クラスの定義には`class`というキーワードを使います。
例えば`Human`クラスというクラスを作るとします。
“`ruby
class Human
# このなかにクラスのメソッドや持たせたいデータを書いていく
end
“`

### インスタンスの作成方法
インスタンスは先ほどのクラスに対して`new`メソ

元記事を表示

「オブジェクト指向設計実践ガイド」を読んだ

## はじめに

[オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方](https://www.amazon.co.jp/dp/477418361X) を読みました。

![img.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143317/039fd29c-4a6f-e6ef-393f-0b10d7c1fabd.png)

この本は、オブジェクト指向の設計について、Rubyのプログラムをサンプルに、分かりやすく解説されています。
設計について学びたいRubyエンジニアにおすすめできます。

これを学ぶことで、変更しやすい、メンテナンス性の高いコードを書くための考え方が身につけられます。
メンテナンス性の高いコードを書きたいと思っているRubyエンジニアは、個人的には、リーダブルコードの次に読むべき本だなと感じました。 (リーダブルなコードについては前提として知っておいたほうがいいです)

## どうしてこの本を読んだのか

クラスの設計、インターフェース

元記事を表示

サンプルコードでわかる!Ruby 3.3の主な新機能と変更点

## はじめに

Rubyは毎年12月25日にアップデートされます。
Ruby 3.3は2023年12月25日に正式リリースされる予定です。
本記事の執筆時点ではrc1がリリースされています。

https://www.ruby-lang.org/ja/news/2023/12/11/ruby-3-3-0-rc1-released/

この記事ではRuby 3.3で導入される変更点や新機能について、サンプルコード付きでできるだけわかりやすく紹介していきます。

ただし、すべての変更点を網羅しているわけではありません。個人的に「Railsアプリケーションの開発時に役立ちそうだな」と思った内容をピックアップしています。本記事で紹介していない変更点も多数ありますので、以下のような情報源もぜひチェックしてみてください。

https://www.ruby-lang.org/ja/news/2023/12/11/ruby-3-3-0-rc1-released/

https://github.com/ruby/ruby/blob/v3_3_0_rc1/NEWS.md

### 動作確認したRub

元記事を表示

RailsでURL短縮サービスをつくってみる

# 概要
### どのようなサービスか
長いURLを短いURLに変換するサービスです。
有名どころで言うと[bitly](https://bitly.com/)ですね。
試しに、Wikipediaの長いURLを変換してみます
長いURL:https://ja.wikipedia.org/wiki/1-%E3%83%94%E3%83%AD%E3%83%AA%E3%83%B3-4-%E3%83%92%E3%83%89%E3%83%AD%E3%82%AD%E3%82%B7-2-%E3%82%AB%E3%83%AB%E3%83%9C%E3%83%B3%E9%85%B8%E3%83%87%E3%82%A2%E3%83%9F%E3%83%8A%E3%83%BC%E3%82%BC
短いURL:https://bit.ly/49UA01h
どちらも同じページへ遷移することが確認できます。

### 短縮方法
URL短縮用のGemもありますが、今回は使用せずにハッシュ変換+衝突判定で開発します。

### リポジトリ
コードを確認したい方は以下へ

https://github.com/kakeruAo

元記事を表示

【Ruby Gold3.1詰まったシリーズ】ヒアドキュメント確認してみた

# はじめに
今回はヒアドキュメントに関する内容です。ヒアドキュメントの識別子としてEOFがあり、EOFの前につける文字に応じてEOFの挙動が変わることは理解していました。しかし、具体的にどのように変わるのかが自分の中で整理できていなかったため、調査しまとめてみます。

# EOFの種類
ruby gold試験に+EOF、-EOF、~EOFが出題されていたのですが、+EOFは存在しなさそうなので、EOF、-EOF、~EOFの動きを確認していきます。(試験では存在しないものも出題されるのでひっかけ問題に要注意です…)

# 確認してみた
環境はruby2.5.3です。
まず、EOFを利用した下記コードを実行しました。
~~~ruby:EOF
s = < s = <

元記事を表示

Ruby芸160チャレンジ(#24)終了時の処理

## この記事は何
[shellgei160を通じて言語習得 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/learning-via-shellgei160)に参加しています。

書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。

例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160

## 実行環境など
– Docker image: ruby:3.0.2
– 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に`answer-ruby`ディレクトリを作り、その中に解答となるファイルを作成していきます。

## 今回のテーマ
https://github.com/shellgei/shellgei160/blob/master/answer/24.md

“`bash
$ trap ‘rm ~/tmp/*’ EXIT

# 別解
$ echo

元記事を表示

【Rails6】Action Text × Bootstrap(4系) Webpacker管理だと相性悪すぎる件

## はじめに
こんにちは!

**DMM WEBCAMP Advent Calendar 2023** :christmas_tree: **24日目**も、同じく @Keichan_15 が担当させて頂きます!:v:

今回はやはり普段Railsをお教えしている身として、ちゃんとRailsに関する記事を書こうかなと…:thinking:

ところで、皆さんは **Action Text** と呼ばれるRails6から追加された新機能についてご存じでしょうか。
Action Textは**リッチテキストを編集するための便利なエディター** で、通常よりもモダンなフォームを作成することができるエディターです。

こんな感じのヤツ ↓

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/ae8991fc-fc89-96e0-5717-02aace3b82bf.png)

とても便利な機能なのですが、実はWebpacker側でB

元記事を表示

Enumerator なにもわからない 〜作って理解するEnumerator〜

本記事は[リンクアンドモチベーション Advent Calendar 2023](https://qiita.com/advent-calendar/2023/lmi)の24日目です。

## はじめに

バックエンドエンジニアのやまぴーと申します。

タイトル通り、作ってみたら「完全に理解した」から「なにもわからない」に近づけた気がするので、書いてみます。

> 「完全に理解した」
> 製品を利用をするためのチュートリアルを完了できたという意味。
>
> 「なにもわからない」
> 製品が本質的に抱える問題に直面するほど熟知が進んだという意味。
>
> 「チョットデキル」
> 同じ製品を自分でも1から作れるという意味。または開発者本人。

[エンジニアの言う「完全に理解した」「なにもわからない」「チョットデキル」って本当はこういう意味?「わかる」の声多数 – Togetter](https://togetter.com/li/1268851)

## きっかけ

マニュアルのこの文章が気になったのがきっかけです。

> 注意
外部イテレータとしての機能は Fiber を用いて実装さ

元記事を表示

Ruby on Railsを触ってみた

# はじめに

この記事は、Qiita Advent Calendar 22日目の記事です。
以下の記事より、すべての記事をご覧になれます。

https://qiita.com/0_terarin_0/items/0f367210e2465f7772c9

# 筆者について

– 現在高校2年生
– 水泳部マネージャー
– 生徒会長
– とある団体の代表

# 本編

僕自身普段からRubyを触ることは全くないんですが、これを機会に触ってみることにしました。

https://guides.rubyonrails.org/getting_started.html

## ①インストール

“`zsh:shell
ruby –version
#ruby 3.2.2 (2023-03-30 revision e51014f9c0) [arm64-darwin23]

gem install rails
“`

さて、「よし、これでやっと触れる!」と思ってみたのですが…。

“`shell:zsh
rails
#Rails is not currently installed on

元記事を表示

Rubyの学習について

# はじめに
こんにちは、最近プログラミング学習をガッツリとやり始めた人です。
まだ、学んだ言語はRuby,HTML,CSS,JavaScriptぐらいですが、これからもっとできることを増やしていきたいなと思います。
さて、直近2週間はRubyを学んだので、今日はRubyについて記事を書いていきます。
Rubyを学習する上で大変になりそうなことがオブジェクト指向なのでそれについて書いていきます。

# オブジェクト指向について
オブジェクト指向とは、コードを一つずつ書いていくみたいなニュアンスです。
Rubyでコードを書く上で、一番難しかったのが、オブジェクト指向です。
オブジェクト指向には4大要素があります。(自分が勝手に呼んでいる)それが、
1\.カプセル化(クラス)
2\.継承
3\.ポリモーフィズム
4\.単一責任の原則

## カプセル化(クラス)
カプセル化とは、オブジェクトの情報などを特定の場合にしか使えなくすることで、悪質な操作などを、できなくする仕組みのことです。これを隠匿化といいます。

## 継承
継承とは作ったクラスを引き継いで、新たに、クラスを作ることを言いま

元記事を表示

Rubyのクラスを理解する

# Rubyのクラスを理解する

## 目次
### 1.基本知識の確認
1-1.メソッド
1-2.引数
1-3.クラス
1-4.インスタンス

### 2.クラスで使う呪文達
2-1.インストラクタ(intializeメソッド)
2-2.インスタンス変数(@<変数名>)
2-3.ゲッターとセッター(attr_accessor)
2-4.特殊キーワード(self)

## 基本知識の確認
クラスの説明をする前に、まずはクラスの中身を説明するために必要な
基本的な単語や知識について記載します。

### 1-1.メソッド
**概要**
一言で言うと「関数」のこと、Rubyでは「メソッド」と呼びます。
具体的には実行したい処理をまとめたもの。
クラスメソッドとインスタンスメソッドなどがある。

**記述方法**
「def」と「end」を書いて、実行したい処理は間に書きます
その後、関数名(defの後に書いた名前)を記述して呼び出し

**具体例**
メソッド名「hello」、処理は「こんにちは」と出力する関数
“`ruby:メソッド具体例
def hello
puts “こんにちは

元記事を表示

初学者がオブジェクト指向について説明してみる。

# 前書き
プログラミングを学ぶ上で必ず通るであろう、オブジェクト指向について自分なりにまとめてみました。
間違っている部分もあるかもしれませんが、読んでいただけると幸いです。
# 目次
 ・オブジェクト指向が生まれた背景
 ・RPGを例にオブジェクト指向を説明
 ・まとめ

# オブジェクト指向が生まれた背景
まずは生まれた背景について説明します。テクノロジーの発展によりコンピューターの性能があがり、大規模な開発が可能になり大量のソースコードを書くことが増えました。大量のソースコードと扱う問題点として以下のようなものが挙げられました。

  ・プログラムを一箇所だけ変えたいのに他のコードも合わせて変えないといけない
  ・コードが長く新しいメンバーがわかりずらい
  ・テスト時間が増え開発にコストがかかる

このような問題を解決するために独立性、再利用性、拡張性を持ったオブジェクト指向という考えが広まった。

# RPGを例にオブジェクト指向を説明
オブジェクト指向を一言で表すと「情報空間の概念すべてをオブジェクトと捉え、管理すること」だと思っています。
これだと抽象的で分かりにく

元記事を表示

Railsでreadonly属性が設定されたinputにおいて、プルダウンが操作可能な問題への対処法

※この記事は僕がぶち当たった問題をとりあえずChatGPTくんに丸投げしてライティングしてもらったものです。

# はじめに
Railsアプリケーションでinput要素をreadonlyに設定することは、フォームの入力を無効にし、特定の値を表示する場合などに一般的です。しかし、readonly属性を持つinput要素にもかかわらず、プルダウンが選択できてしまうという問題が発生することがあります。

この記事では、そのような問題が発生した場合の対処法について解説します。

# 問題の再現
まず、問題を再現してみましょう。以下は、readonly属性を持つinput要素とプルダウンが含まれる簡単なフォームの例です。
“`erb
<%= form_for @model do |f| %>

<%= f.label :name %>
<%= f.text_field :name, readonly: true %>
<%= f.label :status %>

元記事を表示

Ruby芸160チャレンジ(#22)配列同士を組み合わせた要素生成とランダムシャッフル

## この記事は何
[shellgei160を通じて言語習得 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/learning-via-shellgei160)に参加しています。

書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。

例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160

## 実行環境など
– Docker image: ruby:3.0.2
– 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に`answer-ruby`ディレクトリを作り、その中に解答となるファイルを作成していきます。

## 今回のテーマ
https://github.com/shellgei/shellgei160/blob/master/answer/22.md

“`bash
$ echo {mail,blog,eng,www,help,sub,ns

元記事を表示

Ruby芸160チャレンジ(#21)再帰探査&ディレクトリを含めない

## この記事は何
[shellgei160を通じて言語習得 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/learning-via-shellgei160)に参加しています。

書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。

例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160

## 実行環境など
– Docker image: ruby:3.0.2
– 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に`answer-ruby`ディレクトリを作り、その中に解答となるファイルを作成していきます。

## 今回のテーマ
https://github.com/shellgei/shellgei160/blob/master/answer/21.md

“`bash
$ find -type f | grep -v “\./dir_b/d”

元記事を表示

Ruby芸160チャレンジ(#20)ファイル名の一覧表示

## この記事は何
[shellgei160を通じて言語習得 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/learning-via-shellgei160)に参加しています。

書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。

例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160

## 実行環境など
– Docker image: ruby:3.0.2
– 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に`answer-ruby`ディレクトリを作り、その中に解答となるファイルを作成していきます。

## 今回のテーマ
https://github.com/shellgei/shellgei160/blob/master/answer/20.md

“`bash
$ for i in $(cd /usr;echo *); do echo

元記事を表示

Ruby芸160チャレンジ(#19)部分マッチの置換

## この記事は何
[shellgei160を通じて言語習得 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/learning-via-shellgei160)に参加しています。

書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。

例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160

## 実行環境など
– Docker image: ruby:3.0.2
– 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に`answer-ruby`ディレクトリを作り、その中に解答となるファイルを作成していきます。

## 今回のテーマ
https://github.com/shellgei/shellgei160/blob/master/answer/19.md

“`bash
別解1 $ IFS=-;a=($(

元記事を表示

OTHERカテゴリの最新記事