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

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

エクセルファイルへの書き込み(Ruby)

rubyXLクラスを使ってエクセルファイルへの書き込み処理を実装しました

“`ruby
require ‘rubyXL’

array1 = [“白石麻衣”,”秋元真夏”,”遠藤さくら”,”山下美月”,”吉田綾乃クリスティー”]
m_array = []
m_array = array1.shuffle!
array2 = [“好きなコスメ”,”好きなお笑い芸人”,”好きな落語家”,”好きな駅”,”好きなファッションブランド”]
t_array = []
t_array = array2.shuffle!
out_file = “result1.xlsx”
# rubyXLクラスを読み込み、エクセルファイルへ出力するインスタンスを呼び出す
xlsx = RubyXL::Workbook.new
# ワークシートの定義
worksheet = xlsx[0]
n=array1.length
srow = 2
erow = srow + n
nowrow = srow

# 配列の要素を取り出し、エクセルファイルへ書き込む
for i in 0…n do
name =

元記事を表示

paizaラーニング解答: スタック・キューメニュー[Ruby]

# スタック・キューメニュー
https://paiza.jp/works/mondai/stack_queue/problem_index?language_uid=ruby
## STEP: 1 スタック・キュー実装編( 共通問題 ) step 1
“`ruby
n = gets.to_i
a = n.times.map { gets.to_i }
puts n
puts a
“`

## FINAL問題 スタック・キュー実装編( 共通問題 ) step 2
“`ruby
a = []
q = gets.to_i
query = q.times.map { gets.split.map(&:to_i) }
query.each do |que|
if que[0] == 1
a << que[1] end end puts a.length puts a ``` ## STEP: 1 スタック実装編 step 1 ```ruby a = [] q = gets.to_i query = q.times.map { gets.split.map

元記事を表示

【備忘録】Rails7 Stimulus セレクトボックス 親子 複数 連動

会社を選択すると、現場と品目の選択肢に、アソシエーションされているレコードをセットする
![add_flow7.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324819/67806d9c-4a2f-2c56-41b6-a9b76eb46162.gif)

“`config/routes.rb
resources :companies do
get ‘sites’, on: :member
get ‘waste_kinds’, on: :member
end
“`

“`app/controllers/companies_controller.rb
def sites
company = Company.find(params[:id])
sites = company.sites

respond_to do |format|
format.json { render json: sites }
end
end

d

元記事を表示

Progate +α メモず 【Ruby】

# はじめに
Progate楽しいマンです。
[最近学んだことリスト【主にCSS】](https://qiita.com/kohki_takatama/items/f3a516bece97ea407435)に続き、Rubyをやりました。
今回は1つの記事にまとまった!あと、少し見やすく書けました。(^^)
相変わらずなっがいので、気になった見出しがあれば見てみてください。
# メモず
### Rubyの`”`と`’`は区別なし
言語によっては区別あるので……Rubyは緩い方。
### コメントは`#`
シンプルですこ (^^)
### 余り計算は`%`でOK
“ `mod` “も好きだけどね
### Rubyの`puts`の挙動一覧
“`rb
puts “str ” int # 間違った構文
puts “str “, int # “str”
int
puts “str #{int}” # str int テンプレート記法
puts ‘str #{int}’ # str #{int} シングルクォーテーション(’)だとテンプレート記法と認識しない。
“`
テンプレート記法は

元記事を表示

おみくじを改良しました

おみくじを改良しました

“`Ruby
########################################
# おみくじプログラム #########
########################################

#乱数を発生させる
num = Random.new(100)
flag1 = 0
while flag1 == 0 do
# 0以下の整数と整数以外が入力されたら例外処理で再度整数入力を促す
begin

if num >= 0 then
flag1 = 1
else
raise StandardError.new()
end
rescue => e
e = “0以下の整数および整数以外は入力できません”
puts e
end
end
# 5で割る
ans = num % 5
# 5で割った余りでおみくじの結果を表示する。
if ans == 0
puts(“大吉”)
elsif ans == 1
puts(“中吉”)
e

元記事を表示

Rubyでは予期しない型の問題を回避するために

Rubyでは予期しない型の問題を回避するために、いくつかのアプローチがあります。これらはプログラムの堅牢性を高めるために重要です。

1. **型チェックの実施**: 明示的に引数の型をチェックして、期待される型でない場合はエラーを投げるか、適切な処理を行う。

“`ruby
def multiply(a, b)
raise TypeError, “aは数値でなければなりません” unless a.is_a?(Numeric)
raise TypeError, “bは数値でなければなりません” unless b.is_a?(Numeric)

a * b
end
“`

2. **`respond_to?` メソッドの使用**: オブジェクトが特定のメソッドを持っているかどうかをチェックする。これは柔軟性を保ちつつ、メソッドの存在を確認するのに役立つ。

“`ruby
def add(a, b)
unless a.respond_to?(:+) && b.respond_to?(:+)

元記事を表示

Rubyにおける予期しない型の問題(Javaと比較)

予期しない型の問題は、特に動的型付け言語でよく見られます。Rubyの例を使って、このような問題を示します。

### Rubyにおける予期しない型の問題

Rubyでは、変数の型が実行時まで決定されないため、予期しない型の値が渡されると、エラーが発生するか、または意図しない振る舞いが起こり得ます。

“`ruby
# Ruby の例
def multiply(a, b)
a * b
end

puts multiply(5, 3) # 期待通りの乗算: 出力は 15
puts multiply(“5”, 3) # 文字列の繰り返し: 出力は “555”
“`

上記の例では、`multiply` メソッドは2つの引数を乗算します。最初の呼び出しでは、両方の引数が整数なので、期待通りの乗算結果が得られます。しかし、二番目の呼び出しでは、一方の引数が文字列であるため、Rubyは文字列を繰り返す動作をします。この挙動は意図していない可能性があり、バグの原因になりえます。

### 静的型付け言語での対応

対照的に、静的型付け言語ではこのような問題が発生しにくいです。Java

元記事を表示

動的型付け(Ruby)と静的型付け(Java)の違い

RubyとJavaの違いを説明する際、動的型付け(Ruby)と静的型付け(Java)の違いが重要なポイントです。これらの違いを理解するために、両方の言語で同じ機能を実現する簡単な例を用いて説明します。

### 動的型付け: Ruby

Rubyは動的型付け言語です。これは、変数の型が実行時に決定されることを意味します。型の宣言は必要ありませんし、同一の変数に異なる型の値を代入することも可能です。

“`ruby
# Ruby の例
def add(a, b)
a + b
end

puts add(5, 3) # 整数の加算: 出力は 8
puts add(“5”, “3”) # 文字列の連結: 出力は “53”
“`

この例では、`add` 関数はどのような型の引数でも受け入れ、それらを足し合わせます。整数が渡されれば足し算をし、文字列が渡されれば連結します。これはRubyが実行時に型を決定するため可能です。

### 静的型付け: Java

Javaは静的型付け言語です。つまり、変数の型はコンパイル時に決定され、一度決定した型の変数に異なる型の値を代入すること

元記事を表示

paizaラーニング解答: 標準入力サンプル問題セット[Ruby]

# 標準入力サンプル問題セット
https://paiza.jp/works/mondai/stdin/problem_index?language_uid=ruby

## 1つのデータの入力
“`ruby
s = gets.chomp
puts s
“`
sはstring(文字列)の略で、とりあえず文字列を受け取るときによく使います。
## 1行のデータの入力
“`ruby
s = gets.chomp
puts s
“`

## 3行のデータの入力
“`ruby
3.times do
s = gets.chomp
puts s
end
“`

## N行のデータの入力
“`ruby
n = gets.to_i
n.times do
s = gets.chomp
puts s
end
“`
nはnumber(番号)の略で、とりあえず数字を受け取るときによく使います。

## 3つのデータの入力
“`ruby
a = gets.chomp.split
puts a
“`
aはarray(配列)の略で、とりあえず配列を受け取ると

元記事を表示

paizaラーニング解答: ソートメニュー応用編[Ruby]

# ソートメニュー応用編
https://paiza.jp/works/mondai/sort_advanced/problem_index?language_uid=ruby
## STEP: 1 ソートの基本
“`ruby
n = gets.to_i
a = gets.split.map(&:to_i)
puts a == a.sort ? “Yes” : “No”
“`

## STEP: 2 最大最小
“`ruby
n = gets.to_i
a = gets.split.map(&:to_i)
a.sort!
puts “#{a[-1]} #{a[0]}”
“`
maxとminメソッドでも解答できますが、せっかくなのでソートを使って答えてます。
## STEP: 3 Top – k (easy)
“`ruby
n, k = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
a.sort!
puts a[-k]
“`

## STEP: 4 重複削除
“`ruby
n = gets.to_i
a = gets.sp

元記事を表示

paizaラーニング解答: 効率的なソートアルゴリズムメニュー[Ruby]

# 効率的なソートアルゴリズムメニュー
https://paiza.jp/works/mondai/sort_efficient/problem_index?language_uid=ruby

問題に挑戦する前に今回登場するソートアルゴリズムについて解説されている下記の講座に取り組むのがおすすめです。

https://paiza.jp/works/algorithm-java/new-primer/algorithm-java-new-primer-5
## FINAL問題 シェルソート
“`ruby
def insertion_sort(a, n, h)
num_of_move = 0
for i in h..n – 1
x = a[i]
j = i – h
while j >= 0 && a[j] > x
a[j + h] = a[j]
j -= h
num_of_move += 1
end
a[j + h]

元記事を表示

2024年の数学の問題をRubyで

注)コメントをもとに問題文を修正しました(ありがとうございます!)。また、図を追加しました。

2024年に出るかもしれない数学の問題で気に入ったやつをRubyでやる。

> 2024を2個以上の連続した正の整数の和で表しなさい。(ただしRubyは使ってよいこととする。)

大人になると問題を解くのにRubyを使ってもよいのだ。

“`ruby:sum2024.rb
n = eval(ARGV.shift || “2024”)

(1…n).each do |first|
(first..n).each do |last|
sequence = first..last
if sequence.sum == n
puts “#{n} == (#{sequence}).sum, <#{sequence.size}>”
break
end
end
end
“`

これを実行すると
“`
$ ruby sum2024.rb

2024 == (77..99).sum, <23>
2024 == (119..134).sum, <

元記事を表示

paizaラーニング解答: 素朴なソートアルゴリズムメニュー[Ruby]

# 素朴なソートアルゴリズムメニュー
https://paiza.jp/works/mondai/sort_naive/problem_index?language_uid=ruby

問題に挑戦する前にソートアルゴリズムについて解説されている下記の講座に取り組むのがおすすめです。

https://paiza.jp/works/algorithm-java/new-primer/algorithm-java-new-primer-4

## FINAL問題 挿入ソート
“`ruby
def insertion_sort(a, n)
for i in 1..n-1
x = a[i]
j = i – 1
while j >= 0 && a[j] > x
a[j + 1] = a[j]
j -= 1
end
a[j + 1] = x
puts a.join(‘ ‘)
end
end

n = gets.to_i
a = gets.

元記事を表示

【Ruby on Rails】stimulus+ActionCableでリアルタイムチャット機能の実装(初学者向け)

私は現在、未経験からのエンジニア転職に向けてプログラミングスクールで学習をしている、いしかわと申します。

今回Webアプリケーションの個人開発を進めている際、リアルタイムチャット機能を実装したので自身のアウトプットとして記事にしました
どなたかの参考になれば幸いです。

:::note warn
プログラミング初学者なので、内容に誤り等ある可能性があります
誤りがありましたら教えてくださると幸いです
:::
# StimlueとActionCabelを用いたリアルタイムチャット機能の実装
今回は既存のRequestオブジェクト毎にリアルタイムチャット機能を実装しています
## 知っておくべき知識
### ActionCable
WebSocketを利用してサーバーサイドとクライアントサイドで連続的(持続的)な通信を確立している
連続的な通信を確立していることから、サーバーサイドとクライアントサイドでリアルタイムの通信が可能になる
チャットメッセージやリアルタイムの更新など、サーバーサイドとクライアントサイドの状態を同期することができる

### Ajax通信
似ているものとしてAja

元記事を表示

Rubyでおみくじプログラム

Rubyでおみくじプログラムを実装しました。

“`ruby
########################################
# おみくじプログラム #########
########################################

puts “正の整数を入力してください”
num = 0
flag1 = 0
while flag1 == 0 do
# 0以下の整数と整数以外が入力されたら例外処理で再度整数入力を促す
begin
input1 = gets
num = input1.to_i
if num > 0 then
flag1 = 1
else
raise StandardError.new()
end
rescue => e
e = “0以下の整数および整数以外は入力できません”
puts e
end
end
# 入力した正の整数を5で割る
ans = num % 5
# 5で割った余りでおみくじの結果を表示する。
if

元記事を表示

AWS SDKでS3バケット内のフォルダ構造を維持したまま、ZIPファイル形式でダウンロードする方法

## はじめに
Fusicでエンジニアをしています。みかみよしきです。
Fusic Advent Calendar を機に記事執筆に初挑戦しました。よろしくお願いします。

AWS SDKを使用してS3バケット内のファイルをフォルダ構造を維持したままZIP形式でダウンロードする方法を解説します。この機能はS3上の大量データを効率的に取得するために有用です。

Ruby on Rails環境でAWS SDKを用いてこの機能を実装する方法について、コード例を提示しつつ説明していきます。S3バケットからのデータ取得、ZIPファイルの作成、そしてクライアントへのダウンロードまでの工程を行います。

## 前提知識
AWS SDK、Amazon S3、rubyzipについて前提知識を説明します。

### AWS SDK
AWSのサービスをプログラムで利用するためのツールキット(Software Devlopment Kit)です。このSDKを使用することで、AWSのリソースを直接コードから管理できます。

### Amazon S3
Amazon S3は、インターネット経由で利用できるオブジェ

元記事を表示

paizaで使用するメソッド集

### 【概要】

paizaで頻出で使用する技術や、基本的な考え方をまとめています。
ご指摘や別の方法などあればコメント欄でご指摘をお願いいたします。

### 【はじめに】

まず、paizaについてご説明します。

>paizaラーニング とは?
paiza(パイザ)ラーニング は、動画を使ったオンラインのプログラミング入門学習コンテンツです。
プログラミング講座では、 Java、Python、Ruby、PHP、C言語、SQL、JavaScript、HTML+CSS などの講座を公開。1本約3分の動画とそれぞれのチャプターに対応した演習課題で効率よく学べます。

progateのようなオンラインで学習できるアプリになります。
本アプリの特徴として、「アルゴリズムに特化」した内容になっておりまして、プログラミングの思考をする上で重要な部分になります。

言語に関しては自分自身の使用できる言語で問題ありませんが、使用できる言語については、限られているのでご注意してください。

![スクリーンショット 2024-01-11 0.03.13.png](https://qiit

元記事を表示

paizaラーニング解答: レベルアップ問題集の答え一覧[Ruby]

## paizaラーニングのレベルアップ問題集とは
プログラミングスキルを伸ばしたい方向けのコーディング問題集です。
私はコーディングテスト対策に利用しています。

https://paiza.jp/works/mondai

本記事はプログラミング言語Rubyでの回答集です。
「Dランク獲得ストーリー」からCランク、Bランクと順番に各問題集に取り組む想定で記載しています。
勉強中の方はぜひご活用ください!

## 最初の一歩
https://paiza.jp/pages/works/stories/drank/

自己紹介問題セットの答え(折りたたみ)

“`ruby
puts “name: Kirishima”
puts “language: Ruby, English”
puts “hitokoto: がんばります!”
“`

### 標準入力サンプル問題セット
https://qiita.com/fujimotoprogramming/items/a7188efa7ee1bbb9d252

<

元記事を表示

paizaラーニング解答: 線形探索メニュー[Ruby]

# 線形探索メニュー
https://paiza.jp/works/mondai/sequence_search_problems/problem_index?language_uid=ruby

線形探索についての詳しい解説は下記の講座で説明されています。

https://paiza.jp/works/algorithm-java/new-primer/algorithm-java-new-primer-2
## STEP: 1 指定された値の個数
“`ruby
n = gets.to_i
a = gets.split.map(&:to_i)
k = gets.to_i
puts a.count(k)
“`

## STEP: 2 指定された値の位置 1
“`ruby
n = gets.to_i
a = gets.split.map(&:to_i)
k = gets.to_i
if a.include?(k)
puts a.index(k) + 1
else
puts 0
end
“`

## STEP: 3 指定された値の位置 2
“`ruby
n =

元記事を表示

Bootstrapが難しいので、苦し紛れにJavaScript関連用語だけざっくり調べた

:::note warn
**注記**
この記事の投稿者はRuby on Rails初学者であり、自身の学習の備忘録目的で記事投稿を行なっております。
情報の正確さには最大限注意をしておりますが、もし誤り等がございましたらお知らせいただけますと幸いです。
:::

ご覧いただきありがとうございます!
**Ito** と申します!
Ruby on Rails初学者です。

## 調べた動機、経緯
初めてのアプリを作成しようと思い`Rails new`後、Bootstrapを導入しようとしたら**数時間ハマりました。**
開発環境はRails7系を使用していますが、ChatGPTに質問をしたところWebpackerを薦められました。

JavaScript周りの知識があればChatGPTのアドバイスの矛盾点に気付けたのでしょうが、知識の持ち合わせがなかった私は、**なすがままに振り回されてしまいました。**

[![Image from Gyazo](https://i.gyazo.com/0e9ab7824756f96f76b0bce9dda2370a.png)](https:

元記事を表示

OTHERカテゴリの最新記事