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

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

ChatGPTに対する賢い質問方法 n選(チートシート)

# 0. 前奏
ChatGPT。AIの歴史は彼以前、彼以後に分かれると言われています。

仕事のやり方やビジネスモデルは大きく変わり、生活までも変えてしまうほどのインパクトを持った技術が2022年11月に爆誕しました。

もしもです。もしもあなたの目の前に、月額20ドルで、圧倒的知識量を誇り、無限回質問をしてもよく、初歩的な質問をしても馬鹿にされず、時間を奪っても文句を言わず、場合によっては間違いを正してくれる、超高性能の家庭教師が目の前にいるとしたら、あなたはどうしますか?

使い倒すに決まっています。そう、彼を。ChatGPTを。あの伝説の男を。

ですが、彼の力は、強大かつ壮大すぎて、何ができるのかが分からない。どう質問したら綺麗に返ってくるのかわからない。身近な業務でどのような質問を投げればいいのか知りたい。

これは、そんな悩める子羊たちに送る、吾輩からのささやかな、セレナーデ。

# 1. 一手目の質問方法
## 1.1 基本的な質問のテクニック【†一番搾り†】
ChatGPT戦線における基本戦術は、質問を絞ることにあります。人間の会話もChatGPTへの会話も、具体的に意

元記事を表示

Rubyのオブジェクトクラス10選とその使用例

# Rubyのオブジェクトクラス10選とその使用例

Rubyは、多種多様なオブジェクトクラスを提供するプログラミング言語です。これらのクラスは、データの操作や計算、表現に不可欠な役割を果たします。以下では、Rubyでよく使用される10種類のオブジェクトクラスとその具体的な使用例を紹介します。

## 数値クラスとその使用例
1. **`Integer`**: 整数を表します。
– 使用例: `5 + 3 # => 8`
2. **`Float`**: 浮動小数点数を表します。
– 使用例: `3.14 * 2.0 # => 6.28`
3. **`Rational`**: 有理数を表します。
– 使用例: `Rational(2,3) * Rational(3,4) # => 1/2`
4. **`Complex`**: 複素数を表します。
– 使用例: `Complex(1,2) + Complex(2,3) # => (3+5i)`

## 文字列クラスとその使用例
5. **`String`**: 文字列を表します。
– 使用例: `”こんにちは”

元記事を表示

RESTfulって結局なんなんだ

## 記事を書いた経緯
Ruby on Railsでresourcesを使うにあたって、これはRESTfulってやつをちゃんとわかっていないとダメだと思ったので自分なりにまとめた記事です
これまでDjangoやRailsの中でなんとなく把握していたRESTfulという概念について初心者なりに深掘りしてみました。

## そもそもRESTってどのレイヤーで何を指す言葉?
教科書的にいうと、

『ウェブサービスの設計スタイルで、リソースをURLで識別し、HTTPメソッドを使用して操作するステートレスなアーキテクチャ』

分かるようなわからないような感じです。
何か学ぶときにこの言葉がどの辺のレイヤーにいるのかイメージできると理解が進むのでここをはっきりさせたい。

ということでもう少し身近な建設に例えてこんな感じにイメージしました

![スクリーンショット 2023-12-05 15.43.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/8b28aad6-6

元記事を表示

Ruby未経験者がRubyな会社で生き延びるための三種の神器

[SmartHR Advent Calendar 2023](https://qiita.com/advent-calendar/2023/smarthr)シリーズ2の6日目です。

SmartHRは、[RubyKaigi2023](https://rubykaigi.org/2023/)や[Kaigi on Rails 2023](https://kaigionrails.org/2023/)などRuby系のテックカンファレンスや[Railsガイド](https://railsguides.jp/)に協賛しており、また、イベントでの登壇や書籍の執筆などRubyに精通したエンジニアが数多く在籍しています。
それゆえ、多くのプロダクトでRuby(Rails)が採用されたりもしています。

そんなRubyな会社にRuby未経験で入社(2023/4〜)した私が、これまで生き延びるために~~すがりついている~~活用しているツールやサービスを「三種の神器」として紹介します。

## その1 RubyMine
言わずとしれたJetBrains社製のIDEです。以下の機能をよく利用しています。

#

元記事を表示

【Ruby Gold3.1詰まったシリーズ】可変長引数の値の取得

# はじめに
今回は可変長引数に関する内容です。メソッドを呼び出して可変長引数で値を受取る際、呼び出し側の引数が[]か()かで可変長引数の値の取得結果が異なっていたので簡単にまとめてみます。

# 確認してみた
環境はruby2.5.3です。
まず、可変長引数が設定されたメソッドを作成し実行する。
~~~ruby
class Cls
def Foo(*args)
p args
p *args
p args[0]
end
end
~~~
次に[]と()を引数としてFooメソッドをそれぞれ呼び出す。
~~~
irb(main):008:0> Cls.new.Foo [1,2,3]
[[1, 2, 3]]
[1, 2, 3]
[1, 2, 3]
irb(main):009:0> Cls.new.Foo(1,2,3)
[1, 2, 3]
1
2
3
1
~~~
出力された値に差異があった。

# おわりに
確認した結果、呼び出し側の引数が()か[]かで可変長引数の値の取得結果が異なっていた。
可変長引数は配列に対して引数の値を格納し、配列を渡した場合は二重配列と

元記事を表示

Ruby芸160チャレンジ(#6)For文

## この記事は何
[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/6.md

“`bash
$ seq 5 | awk ‘{for(i=1;i<$1;i++){prin

元記事を表示

DXOpalでスイカゲームみたいなのを作った

:::note info

これは Ruby Advent Calendar 2023 の6日目の記事です。一つ前の記事は[Rubyのプロダクトコードの複雑度の変化を可視化する](https://zenn.dev/ryutaromizokami/articles/333ef2dd6d9c51)です。

:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234055/69c4f453-9eb8-ecf1-bbb0-c98f606defc8.png)

こんにちは。今年は mruby や picoruby にも触れてみたかったのですがもう12月ですね……おかしいな……。


# できたもの

遊んでみたい方はこちらのリンクからどうぞ。

[https://sonota88.github.io/dxopal-suikalike/index.html](https://sonota88.github.io/dxopal-suikalike/index

元記事を表示

【Ruby on Rails】paramsについて理解しながら検索機能を作ろう

# 【Ruby on Rails】paramsについて理解しながら検索機能を作ろう

## 目次
[1.はじめに](#1-はじめに)
[2.前提・テンプレ作成](#2-前提テンプレ作成)
[3.詳細画面の表示](#3-詳細画面の表示)
[4.検索機能の実装](#4-検索機能の実装)
[5.まとめ](#5-まとめ)

## 1. はじめに

本記事は、DMM WEBCAMP Advent Calendar 2023 6日目記事です。
DWCメンター・卒業生が記事を投稿しておりますので、是非他の記事もご覧ください!

### 執筆背景

Ruby on Railsを学習中に、よく`Post.find(params[:id])`みたいな記述を見かけると思います。
この`params`という記述は、ページ遷移やデータを作成する時に用いられ、さらにはタグによる絞り込み機能や検索機能にも登場します。

paramsがいまいち理解できない、活用方法が思い浮かばないという方に向けて、本記事を執筆いたしました。

### 目的
– paramsを理解する
– paramsを用いた検索機能を実装する

#

元記事を表示

メインシステムのRubyをv3.2.2にバージョンアップした話

これは[Hubble Advent Calendar 2023](https://qiita.com/advent-calendar/2023/hubble)の4日目[^1]の記事です。

# はじめに
こんにちは!株式会社Hubbleでバックエンドのエンジニアをしている@taamoo2です。
今回は少し前にメインシステムのRubyバージョンをv2.7系から最新安定版のv3.2.2にバージョンアップしたので、対応したポイントをまとめてみました。
またRuby3.1から試験的に導入され、Ruby3.2で正式採用となったJITコンパイラである「YJIT」も有効化してパフォーマンス比較もしてみました。

# リリース内容の確認
まずは事前にRubyのリリース内容を確認しておきます。
特に3.0で引数周りが大きく変わり動かなくなるケースがあるので把握しておきましょう。後述しますが今回はあまり大きなインパクトはありませんでした。

– [Ruby 3.0.0 リリース](https://www.ruby-lang.org/ja/news/2020/12/25/ruby-3-0-0-releas

元記事を表示

JqueryでRedmineのメニューを閉じたり開いたりする方法

## JqueryでRedmineのメニューを閉じたり開いたりする方法
[Redmine Advent Calendar 2023](https://adventar.org/calendars/8974)の6日目の記事として作成しました。

* * *
### やりたいこと

Redmineのメニュー領域がかなり広いため、ユーザーが表示させたいチケットなどの情報を表示させる領域が相対的に狭くなるというデメリットがありました。
[Redmineでサイドバーを非表示にする](https://redmine.jp/faq/general/hide-sidebar/)で紹介されているような、サイドバーの開閉に対応しているテーマを利用する理由も、作業領域の最大化に対するニーズがあるからです。

テーマやプラグインをインストールしても、Redmineのメニューを閉じたり開いたりすることができますが、今回は、もっと簡単に、JqueryでRedmineのメニューを閉じたり開いたりする方法を紹介いたします。

下図の動画が完成イメージです。
マウスクリックではなく、マウスオーバーでメニューを開閉でき

元記事を表示

solid_cacheについて調べてみた

## はじめに

この記事は[Ruby on Rails Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ruby-on-rails)の記事です。

## solid_cacheとは

`solid_cache`とは最近(具体的には2023年10月)に[最初のバージョンがリリースされた](https://rubygems.org/gems/solid_cache/versions/0.1.0)gemです。目的はRailsのcache storeの一つになることで、Redisなどを使わずRDBにキャッシュを保存することが特徴です。余談ながら、[initial commitは2022年11月](https://github.com/rails/solid_cache/commit/de56c1456f309f1df456c6be0482fe913d98239a)でしたので、約1年秘密裏に開発されていたことになります。

https://github.com/rails/solid_cache

## なぜRDBにキャ

元記事を表示

EC2上のRubyでWorkloadIdentity連携を用いてBigQueryを呼び出す

不動産・住宅情報サービス[LIFULL HOME’S](https://www.homes.co.jp/)を運営しております、株式会社LIFULLでデジタルマーケティング領域を担当しております、Ystgです。

# はじめに
この記事は[LIFULL Advent Calendar 2023](https://qiita.com/advent-calendar/2023/lifull)の6日目の記事です。

# Workload Identity連携のおさらい
Workload Identity連携とは、Google Cloudリソースへのアクセス権を別のクラウドのワークロードに付与できるしくみのことでした。
(詳しくは[去年のLIFULL Advent Calenderの5日目の記事](https://qiita.com/s13bp5-ystg/items/69e13b6fd1850d631264)を参照ください)

# Rubyの場合
Google公式の[認証情報の構成を使用してGoogleCloudにアクセスする](https://cloud.google.com/iam/doc

元記事を表示

【個人開発/未経験】睡眠の質を高めるためのサポートをするアプリを開発してみた

# はじめに
はじめまして!@tomoya4819と申します。

突然ですが、皆様は質の良い睡眠を取り、スッキリとした朝を迎えられていますか?
私は夜遅くに寝て、朝ギリギリに起きるという生活を繰り返していた、朝が苦手な人間でした。

そこで、睡眠の質が良くなる行動をいくつか調べ、実践してみると夜早く寝付けるようになり、朝も余裕を持って起きることができました。
しかし、一番大切なのはその行動を続けること。つまり続けやすくなるようなアプリを作ればより睡眠の質改善に繋がるのでは!?と思い、本アプリ作成へと至りました。

※私は現在プログラミング学習中の未経験エンジニアであり、技術的な内容などは誤りを含む可能性があります。
そのため、間違っている点があればコメント等で教えていただけると幸いです。:bow_tone1:

# サービス名:[ZzzCrafter](https://zzzcrafter.fly.dev)
![ogp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3185454/e4a1a43b-c9

元記事を表示

Rails6 で Webpacker で SimpleCalendar なやつをコピペでサクッとCSSを添えて

## この投稿は、

[DMM WEBCAMP Advent Calendar 2023](https://qiita.com/advent-calendar/2023/infratop)
シリーズ2 投稿5日目のエントリーです。

4日目は @Fkinds さん で
[初学者向けdocker基礎](https://qiita.com/Fkinds/items/33dcfff97481509a42bd)でした。
すごく簡素に纏められていて素敵な記事でした。

## はじめに
DMM WEBCAMP でメンターをやらせていただいております。 @tomoaki-kimura です。
Rails7のリリースから随分経ちますが、Rails6の環境もまだまだあります。
今回は、`simple_calendar` 使う時に、`app/javascript/`側にCSS欲しいのに・・・という場面があったので書き残しておきます。

## 環境
– Ruby 3.1.2
– Rails 6.1.7
– yarn 1.22.18

## 作るもの

[![Image from Gyazo](https:/

元記事を表示

【rails】 ActiveRecord exists? present? empty? blank? の使い分けどころ

## はじめに
初学者の頃から分かったような気がするけど、適切に使いこなせてなかった
`ActiveRecord`の `exists?`, `present?`, `empty?`, `blank?` の
使い分けについて最近やっと腑に落ちたのでメモリます。

## exists

データが1件でもあるかどうかチェックするには`Model.exists?`を使う。
どういうことかというと
“`ruby
Pokemon.exists?
Pokemon Exists? (98.6ms) SELECT 1 AS one FROM `pokemon` LIMIT 1
=> true
“`

ポイントになるのが`SELECT 1 AS` というところ。
データが1行以上「あるかどうか」だけが問題となります。
ということで、データの値を取ってくる必要がないため、
カラムの情報が一切ないことがわかります。

**ちなみにこれと反対の意味を持つのが`empty?`である**

## blank?

“` ruby
Pokemon.where(type: ‘F

元記事を表示

Ruby – マルはUTF-8からShift-JIS ( CP932 / Windows-31J )に出来るがバツは変換できない Encoding::UndefinedConversionError

# 例

“`rb
‘◯’.encode(“CP932”)
# => “\x{81FC}”

‘☓’.encode(“CP932”)
# Encoding::UndefinedConversionError: U+2613 from UTF-8 to Windows-31J
“`

# チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

# Twitter

元記事を表示

Kaigi on Rails 2023に登壇しました

## はじめに

こんにちは。なおとです。

1ヶ月強前の話ですが、10/27(金)-10/28(土)の2日間にわたって開催されました「Kaigi on Rails 2023」に参加、登壇させていただきましたので、その感想を述べたいと思います。

本記事では私の登壇内容について今回はほぼ触れません。
以下のリンクにセッション内容や動画が公開されておりますので、見ていただけると嬉しいです。

https://kaigionrails.org/2023/talks/naoto/

# Kaigi on Railsとは

まず、Kaigi on Railsが何か、簡単に紹介します。
こちら[公式](https://kaigionrails.org/2023/)からの引用です。
> Kaigi on Railsのコアコンセプトは「初学者から上級者までが楽しめるWeb系の技術カンファレンス」です。Kaigi on Railsは技術カンファレンスへの参加の敷居を下げることを意図して企画されています。また、名

元記事を表示

【Ruby on Rails】RuboCopでコードの治安を守ろう

## まえがき

本記事は、**[DMM WEBCAMP Advent Calendar 2023](https://qiita.com/advent-calendar/2023/infratop)** 5日目記事です。

Ruby on Railsを中心に、DWCメンター・卒業生が記事を投稿しておりますので、是非他の記事もご確認ください!

## はじめに

こんにちは、DMM WEBCAMP メンターの @ukwhatn です。

本カレンダー3回目の担当日となりますが、今日はRuby on RailsにおけるRuboCopの使い方について説明していきます。

## Rubocopとは?

[RuboCop](https://github.com/rubocop/rubocop)とは、Ruby向けのlinter、つまり静的コード解析ツールです。

:::note warn
**待ってよ、そもそもlinterって?**

linter(リンター)とは、ソースコードを実行前に解析することで、事前にバグやコーディングミスを検出したり、コミュニティやプロジェクトが定めたコーディング規約から

元記事を表示

【Ruby】pメソッドとputsメソッドの違い

# 【Ruby】pメソッドとputsメソッドの違い

Rubyにおける`p`メソッドと`puts`メソッドは、どちらも出力を行うメソッドですが、その振る舞いには重要な違いがあります。この記事では、これらのメソッドの特徴と違いを初心者にも分かりやすく解説します。

## pメソッドの特徴

`p`メソッドは、オブジェクトのデバッグ出力に適しています。具体的には以下の特徴があります。

### データ型を明示

`p`メソッドは、オブジェクトの型や内容を明示的に出力します。これにより、データの構造や型を正確に理解することができます。

### `inspect`メソッドの結果を出力

`p`メソッドは、内部的にオブジェクトの`inspect`メソッドを呼び出し、その結果を出力します。これにより、オブジェクトの内部表現を詳細に確認できます。

### 例

“`ruby
p “hello” # 出力:”hello”
p 123 # 出力:123
p [1, 2, 3] # 出力:[1, 2, 3]
“`

## putsメソッドの特徴

`puts`メソッドは、より一般的な

元記事を表示

Redmineの「メールによるチケット登録」で通知メールが送信されない

前回の投稿と同じく、Redmine関連の話題。
今回はトラブルシューティングです。

# Background

組織内で利用してきたRedmineがEOSL(実はけっこう前に)。
当該のRedmineにはコアレベル(≠ プラグインやテーマのレベル)でカスタマイズが施されていた。
そのRedmineのバージョンアップを行ったところ、課題発生。

バージョンアップ前後の対照表:

| 製品 | バージョンアップ前 | バージョンアップ後 |
|:———–|:————|:————|
| OS | CentOS v7.6 | Amazon Linux 2023 |
| Ruby | Ruby v1.9 | Ruby v3.1 |
| Redmine | Redmine v2.3 | Redmine v5.0 |

バージョンアップ方法:

1. 新しいOSを用意
2. Ruby v3.1をインストール
3. Redmine v5.0

元記事を表示

OTHERカテゴリの最新記事