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

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

ずんだもんがリアルタイムで会議内容をレビューし読み上げるプログラムを作る

:::note info
本記事は2024年6月に執筆しました。
今後もっと効率的な実現方法が出てくるかと思います。
:::

![03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/fcc974ac-d576-057b-2559-b56f77544b67.jpeg)

# 趣旨
前回の記事([GPT-4o同士で会話して会議を代行するプログラムを作る(プロト版)](https://qiita.com/kdi384ldp/items/8b8714d5f0a8395a1eb7))執筆中に、「ChatGPTの出力内容を音声合成ソフトで読み上げることが出来るのでは?」と思いついたので、作ってみた。

# 環境
| 製品 | バージョン |
|:————|:——————-|
|Windows 11|23H2|
|Ruby|3.3.1|
|ChatGPT API|モデルはGPT-4oを指定|
|Google Spee

元記事を表示

rbenv: ruby: command not found

# 問題
rbenv: ruby: command not foundが発生

## 解決策
`rbenv versions`

でバージョンを確認
例:
“`
system
2.7.6
*3.3.0 (/.ruby-version)
“`

バージョンをローカル設定
`rbenv local 3.3.0`

元記事を表示

クラスにモジュールを取り込むinclude、prepend、extendの違いと比較

モジュールをクラスに組み込むには3つの方法があります。それは `include`、`prepend`、そして `extend` です。この記事では、これら3つの方法の違いと共通点を詳しく解説し、比較します。

## Rubyのinclude

`include` は、他のモジュールからコードをクラスにインポートする最も一般的な方法です。`include` はモジュールのメソッドをクラスのインスタンスメソッドとして追加します。つまり、そのクラスのオブジェクトでこれらのメソッドを呼び出すことができます。

### includeの例

“`ruby
module Greetings
def greet
puts “Hello world!”
end
end

class Person
include Greetings
end

person = Person.new
person.greet # 出力: “Hello world!”
“`

### モジュールをクラスにincludeしたときのancestors chain

モジュールをクラスに `include

元記事を表示

Rubyにおけるrequire、require_relative、loadの違いと使い方

## はじめに

Rubyでプログラミングを行う際、ファイル間でコードを共有し再利用することは非常に重要です。これを実現するための主要なキーワードは `require`、`require_relative`、および `load` です。しかし、多くの初心者プログラマーはそれらの違いに混乱することがあります。この記事では、`require`、`require_relative`、`load` について詳しく説明し、それらを効率的に使用する方法を具体的な例を交えて紹介します。

この記事では、以下のようなディレクトリとファイル構成を仮定します:

“`zsh
– project/
– main.rb
– lib/
– foo.rb
“`

“`ruby:lib/foo.rb
class Foo
def message
puts “Hello world!”
end
end
“`

## Rubyにおけるrequire

`require` は、ライブラリやモジュールを現在のプログラムにロードするために使用されるRubyのキーワードです。`requir

元記事を表示

Rubyのクラスメソッドとインスタンスメソッドの概念

**クラスメソッド**と**インスタンスメソッド**はオブジェクト指向プログラミングにおいて重要な概念です。この記事では、Rubyプログラミング言語におけるクラスメソッドとインスタンスメソッドについて説明します。

## クラスメソッドとは?

クラスメソッドはクラス上に定義され、クラスのインスタンスではなく、クラス自体に対して直接呼び出すことができるメソッドです。これらはクラス全体に関連する操作に使用されることが多いです。

#### クラスメソッドの定義方法

Rubyではクラスメソッドの定義方法は非常に柔軟です。以下にクラスメソッドを定義するための3つの一般的な方法を示します。

“`ruby
# 方法1
class Car
def self.total
10
end
end

puts Car.total # => 10

# 方法2
class Car
class << self def total 10 end end end puts Car.total # => 10

# 方法3
class Car; end

元記事を表示

Rubyでnullを扱うには

## 環境
Ruby 2.6

## はじめに

SIerで長らくエンジニアをしていた自分は、もっぱらVBer(造語)でした。多くのVBerを悩ませた問題の一つにnull問題がありす。nullはOracleにもSQLServerにも存在する概念です。業務アプリを開発する現場では避けて通ることはできません。とにかくこのnullですが、便利などころか厄介モノ扱いでした。VBerから離れてRubyerになった現在でも、null問題はついて回ります。nullという概念はPostgreSQLにもMySQLにも同じように存在します。Rubyでnull(正確にはnil)をスマートに扱う方法について書いてみました。

## VBでnullを扱う

VBでnullを扱う場合、nullを””に変換する関数を作成して対応していました。型をVariantにしているのは、どのような型にもオールマイティに対応するためです。もちろん、nullにも対応させる必要があります。Variant型にすると処理が重くなるといった副作用が発生しますが、いたしかたありません。また、Trimをかけて、空白スペースが入っていた場合は”

元記事を表示

Reporting API v4を使用して、UAのバックアップを対応する

# はじめに
この記事を読んでいる皆さんは、UAのバックアップは終わりましたでしょうか?
UAは`2024/07/01`以降には、完全に削除されてしまいます。

なので、それまでにデータが必要であれば、バックアップする必要があります。
今回は以下APIを使用して、データをcsvに出力することをしたので、そのアウトプットとなります。

最終的には、出力したcsvをBigQueryにインポートするまで対応しますが、アウトプットはAPIの実装のみとなります。

https://developers.google.com/analytics/devguides/reporting/core/v4?hl=ja

:::note warn
この記事では、プロジェクトの作成方法や認証情報の取得に関しては、解説を行いません。
あくまで、APIの実装方法がメインとなります。
:::

# 前提
– サービスアカウント認証を利用
– 認証情報をJSONファイルは取得済み

Reporting API を利用するための準備は、以下記事を参照してください。

https://qiita.com/ryota-s

元記事を表示

HTMLとCSSのみで画像のアクセプト比を保持したまま、背景画像のスライドショーを実装する

# はじめに
HTMLとCSSだけで画像のスライドショーを実装したいけど、画像のアクセプト比が歪んでしまったり、javascriptを必要とする場合があったので、簡単に実装できるスライドショーの作り方を紹介します。
今回は、3枚の画像でスライドショーを実装しています。

# HTMLの記述
“`Ruby:index.html.erb

Optparseの使い方について

# 概要

今回は、Rubyの標準機能である「Optparse」の説明になります。

公式ドキュメントは以下になります。

https://docs.ruby-lang.org/ja/latest/library/optparse.html

# Optparseとは?

rubyファイルを実行するときに、コマンドでオプションを指定することができるようにします。より正確に記述をすると「オプション解析をよしなに実施してくれる便利な機能」ということです。

実際の使用例を以下に用意しました。

# 使い方

サンプルコードは以下になります。

“`sample.rb

# optparseが使用できるようにrequireします
require ‘optparse’

opt = OptionParser.new

# ショートオプションとロングオプションの設定
# 使用するオプションを「-p または -option」という名前に設定します
# どちらかだけ(-pのみ)の設定でも問題ありません
# また、オプションの説明文も追加できます(なくても問題ありません)
opt.on(‘-p’,

元記事を表示

Rubyでデザインパターン (3) TemplateMethodパターン

## この記事は何
デザインパターンについて、Rubyでどのような使い方ができるかをまとめた記事です。
デザインパターン自体の解説は詳しく行いません。

## TemplateMethodパターンとは
TemplateMethodパターンとは、スーパークラスで処理の枠組みを定め、その一部をサブクラスで具体的に実装するデザインパターンです。

https://qiita.com/shoheiyokoyama/items/c2ce16b4f492cd014d50

詳しくはこちらをご覧ください。

## Rubyでのコード例
スーパークラスで手続きの流れを実装し、サブクラスで手続きの処理で呼び出しているメソッドの定義を行なっていきます。

“`rb
class SuperClass
def template_method
method1
method2
method3
end

private

def method1
fail NotImplementedError
end

def method2
fail NotImp

元記事を表示

rails永続的なセッション

# 概要
railsを勉強している時に永続的なセッションを作成するのに
便利なメソッドがあったので記録として残します。

# 実際のコード
“`.rb
cookies[:remember_token] = { value: remember_token,
expires: 20.years.from_now.utc }
“`
上記は20年後期限切れになる記憶トークンです。
これをメゾットを使うことで
“`.rb
cookies.permanent[:remember_token] = remember_token
“`
のように書くことができます。

元記事を表示

[Rails7]submitにつけるdisable_withオプションについて

## はじめに

Rails7以前までは[[Rails]submitタグにつけておきたいdisable_withオプション](https://qiita.com/sue738/items/09f569bdc3a73d26df88)の記事にあるように、data属性に`disable_with`を付与すれば、二重送信が防止できておりました。

“`slim
= form_with(model: model) do |form|
= form.submit ‘登録’, { data: { disable_with: ‘登録中・・・’ }
“`

ですが、Rails7移行では、`disable_with`オプションが機能しなくなっているので、どのように実現したかを残しておきます。

## どう変わったのか

[Rails 7.0 + Ruby 3.1でゼロからアプリを作ってみたときにハマったところあれこれ
](https://qiita.com/jnchito/items/5c41a7031404c313da1f#disable_with%E3%81%AE%E6%8C%87%E5%AE

元記事を表示

CocoaPodの落とし穴様々

# 背景
アプリに地図を入れたい!と思い立ち、[こちらのチュートリアル](https://developers.google.com/codelabs/maps-platform/maps-platform-101-swift?hl=ja#2)を進めていたところ、パッケージマネージャーにCocoaPodを使うようだったのでインストールすることにしました。
しかし、Macに標準で入っているRubyのバージョンが古かったためインストール自体出来ないという踏んだり蹴ったりな状況となりました。
かなり詰まったため、備忘録として残します。

# 作業録
ではここから私の作業録を書いておきます。

## そもそもの目的
やりたかったことは単純明快で**CocoaPodをインストールする**こと、それにつきます。

## 試したこと
### CocoaPodの公式サイトに則ったインストール
公式サイトに行くと
“`terminal
$ sudo gem install cocoapods
“`
でインストールすることとありますが、これではエラーが出ます。
“`
You don’t have w

元記事を表示

Rubyの基本概念だけを学習してみた

# はじめに

Ruby は、そのシンプルで直感的な文法、強力なメタプログラミング機能、そして豊富なライブラリによって、多くの開発者に愛用されています。この記事では、Ruby 独自の概念について学び、そのメリットを探ります。

# オープンクラス

Ruby では、既存のクラスやモジュールを再オープンして、その定義を拡張することができます。この特性は「オープンクラス」と呼ばれ、動的にクラスを変更することができます。

“`rb
class String
def shout
self.upcase + “!!!”
end
end

puts “hello”.shout # “HELLO!!!”
“`

この例では、標準の String クラスに shout メソッドを追加しています。これにより、全ての文字列オブジェクトで shout メソッドを使用できるようになります。

## オープンクラスのメリット

1. 柔軟性: 既存のクラスに対して動的にメソッドを追加できるため、プログラムの柔軟性が向上します。

2. コードの再利用: 標準ライブラリやサードパーティのラ

元記事を表示

Rubyでデザインパターン (2) Adapterパターン

## この記事は何
デザインパターンについて、Rubyでどのような使い方ができるかをまとめた記事です。
デザインパターン自体の解説は詳しく行いません。

## Adapterパターンとは
Adapterパターンとは、既存のクラスを変更せずに、新しいインターフェースに適用させるためのデザインパターンです。

詳しくはこちらをご覧ください。

https://qiita.com/shoheiyokoyama/items/bd1c692db480b640c976

## Rubyでのコード例
Rubyにはインターフェースがないため、moduleで代替します。

“`rb
module NewInterface
def new_method
fail NotImplementedError
end
end

class OldClass
def old_method
‘This is OldClass method’
end
end

class Adapter < OldClass include NewInterface def new_meth

元記事を表示

最終課題を終えて

2024年2月からプログラミングオンラインスクールに入学し早4ヵ月。
PCを購入するところから:sweat_smile:始まり、ようやく最終課題のフリマアプリを完成できたので全体を通して振り返りや今後についてまとめたいと思います。

#### きっかけ
プログラミングを習おうと思ったきっかけは現職(美容師)であと何年働けばいいんだろう・・・?という不安からでした。
一人息子を一人で育てる親として、現職では収入も時間も満足に確保できないと考えていました。

#### なぜプログラミング?
これは単純に憧れです:flushed:
現場で立ち仕事、カラー材でシャツは汚れ、手は荒れ、長時間労働している美容師からすると(スマートに仕事をこなす美容師さんもいます!あくまで私の現状です:pray_tone1:)、
PCカタカタ(カッコいい!)、リモートワークで家事育児仕事をこなせる仕事って魅力的過ぎました!
また、淡々と同じスタイルを100回切ってようやく1スタイル身につけたり、毎日何十人・月何百人の初めましてのお客様と約2時間マンツーマン対応する臨機応変能力は、プログラミング初心者に必要な探求心・

元記事を表示

Rubyでデザインパターン (1) Iteratorパターン

## この記事は何
デザインパターンについて、Rubyでどのような使い方ができるかをまとめた記事です。
デザインパターン自体の解説は詳しく行いません。

## Iteratorパターンとは
Iteratorパターンとは、集合体に対して順番にアクセスするためのインターフェースを提供し、その実装を容易にするデザインパターンです。
詳しくは以下の記事をご覧ください。

https://qiita.com/shoheiyokoyama/items/3f42d0057d9d5a861039

## Rubyでのコード例
元々のJava等での実装に則って実装すると以下のような形になると思います。
ただ、Rubyではこのような実装を行うことはあまりないと思います。(詳しくは次の項で解説します)

“`rb
class ItemListIterator
def initialize(item_list)
@item_list = item_list
@current_index = 0
end

def has_next?
@current_index < @

元記事を表示

Quineから始めるRuby超絶技巧プログラミング入門

# はじめに

あなたは **超絶技巧プログラミング** を知っていますか?

書籍「あなたの知らない超絶技巧プログラミングの世界」では以下のように書かれています。

> 超絶技巧プログラミングとは、「実用的なプログラミング言語を使って全く実用的でないものを作る遊び」です。

超絶技巧プログラミングの例として、以下のようなものがあります。

上記のポストを投稿した tompng さんが RubyKaigi にて紹介していた超絶技巧プログラミングに魅了され、僕も入門してみました。

この記事では、書籍「あなたの知らない超絶技巧プログラミングの世界」の紹介と、書籍に記載の方法で作ってみたオリジナルのプログラムの紹介を行います。

https://gihyo.jp/book/2015/978-4-7741-7643-7

# 超絶技巧プログラミング

様々な種類の超絶技巧プログラミングがあります。書籍では以下のプログラムの紹介がありました。

– 自己生成プログラミング (Quine

元記事を表示

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

# 概要
Ruby on Railsを勉強していて
あまり見かけない演算子が出てきたので
メモとして残しておきます。

# 例
“`.ruby
user && user.authenticate(params[:session][:password])
“`
のような論理値(boolean値)の条件式を
“`.ruby
user&.authenticate(params[:session][:password])
“`
という風に短縮して記述できる。

元記事を表示

実務未経験の初心者がRailsを学習してみた

# ① はじめに

初投稿になります🌷
IT業界に未経験で転職して約1週間が経過し、
元々HTML/CSSの知識がごく僅かしかない私が、Ruby on Railsを学習してみました。
特に重要だなと思ったところや、自分の中で引っかかったところを中心にアウトプットしていきます!

# ② 使用した教材

今回はudemyの、
[はじめてのRuby on Rails入門-RubyとRailsを基礎から学びウェブアプリケーションをネットに公開しよう](https://www.udemy.com/course/the-ultimate-ruby-on-rails-bootcamp/?couponCode=KEEPLEARNING) を使って勉強しました。

![スクリーンショット 2024-06-10 13.29.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812430/7b404efc-7a79-8e27-f512-3662d2b67786.png)
                       

元記事を表示

OTHERカテゴリの最新記事