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

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

【Ruby】uniqは重複を除外するだけではないよ

# はじめに

こんにちは。ProgateでRubyを勉強したのち、「ゼロからわかるRuby超入門」でさらに学習を進めています。
この本で uniq メソッドについて学んだ際、配列の中の重複要素を除外する機能が紹介されていましたが、実はそれ以外にも興味深い機能があることに気づきました。今回は、その意外な機能について共有します。

Rubyを勉強し始めたばかりなので、Rubyに詳しい方にとっては当たり前のことかもしれませんが、この記事はRuby初心者向けということでお手柔らかにお願いします。

環境:Ruby 3.3.5

# uniqとは

`uniq` は配列から重複した要素を取り除いた新しい配列を返します。

“`ruby:uniq1.rb
[1,1,1].uniq
# [1]
[1,3,2,2,3].uniq
# [1,3,2]
“`
ほかにも`uniq!`といった重複の削除を破壊的に行うコマンドもありますが、本題ではないので触れないでおきます

# uniqのもう一つの機能とは?

では以下のコードを見てどういう結果が出力されるか確認しましょう。
皆さんも一緒に考えてみて

元記事を表示

Sinatraで作る中高生向け悩み相談Webサービス「Ballon」- 総括版

## はじめに

この連載では、Rubyのマイクロフレームワークであるsinatraを使用して、中高生向け悩み相談Webサービス「Ballon」を開発する過程を詳細に解説してきました。この総括版では、5つのパートの主要なポイントをまとめ、全体像を把握しやすくします。

## Part 1: アプリケーションの概要と基本設計

### 主要ポイント:
1. 技術スタックの選定理由(Ruby、Sinatra、ActiveRecord、SQLite3)
2. アプリケーションの基本構造とMVCパターンの適用
3. データベース設計の基本(users、worries、answers、likesテーブル)
4. Sinatraアプリケーションの基本設定(セッション管理、ヘルパーメソッドなど)

### コードハイライト:
“`ruby:app.rb
require ‘bundler/setup’
Bundler.require
require ‘sinatra/reloader’ if development?
require ‘./models’

enable :sessions

hel

元記事を表示

Sinatraで作る中高生向け悩み相談Webサービス「Ballon」- パフォーマンス最適化、アクセシビリティ、多言語対応、アナリティクス (Part 5)

## はじめに

これまでの4つのパートで、Sinatraを使用した中高生向け悩み相談Webサービス「Ballon」の基本的な機能実装から、セキュリティ対策、コンテンツモデレーションまで幅広く解説してきました。この最終回となるPart 5では、以下の内容について詳しく説明します:

1. パフォーマンス最適化
2. アクセシビリティ対応
3. 多言語対応
4. アナリティクスとレポーティング

また、Ballonの開発を通じて学んだ教訓や、中高生向けサービス開発における倫理的考慮事項についても議論します。

## 1. パフォーマンス最適化

Ballonのユーザー数が増加した場合でも、高速なレスポンスを維持するためのパフォーマンス最適化技術を実装します。

### データベースの最適化

1. インデックスの適切な使用
– 頻繁に検索や結合に使用されるカラムにインデックスを追加します。

“`ruby:db/migrate/YYYYMMDDHHMMSS_add_indexes_for_performance.rb
class AddIndexesForPerf

元記事を表示

Sinatraで作る中高生向け悩み相談Webサービス「Ballon」- 回答機能、「いいね」機能、セキュリティ対策、コンテンツモデレーション (Part 4)

## はじめに

前回のPart 3では、悩み投稿機能の実装とデータベース設計について詳しく解説しました。今回のPart 4では、以下の内容について説明します:

1. 回答機能の実装
2. 「いいね」機能の実装
3. 高度なセキュリティ対策
4. コンテンツモデレーション

これらの機能追加とベストプラクティスの適用により、Ballonの機能性、安全性、そしてユーザー体験を向上させます。

## 1. 回答機能の実装

まず、回答機能を実装します。ユーザーが悩みに対して回答を投稿できるようにします。

### データベース設計

回答のためのテーブルを作成します:

“`ruby:db/migrate/YYYYMMDDHHMMSS_create_answers.rb
class CreateAnswers < ActiveRecord::Migration[5.2] def change create_table :answers do |t| t.references :user, foreign_key: true t.references

元記事を表示

Sinatraで作る中高生向け悩み相談Webサービス「Ballon」- ユーザー認証システムの実装 (Part 2)

## はじめに
前回の Part 1 では、中高生向け悩み相談Webサービス「Ballon」の概要、技術選定の理由、基本的な設計について説明しました。今回の Part 2 では、ユーザー認証システムの実装に焦点を当てます。セキュアなパスワード管理、セッション管理、そしてユーザーのサインアップ、サインイン、サインアウトの実装方法を詳しく解説します。また、中高生向けサービスならではの配慮事項についても触れていきます。

## ユーザーモデルの設計

まず、ユーザーモデルを設計します。`models.rb` ファイルに以下のコードを追加します:

“`ruby:models.rb
class User < ActiveRecord::Base has_secure_password validates :username, presence: true, uniqueness: true, format: { with: /\A[a-zA-Z0-9_]+\z/, message: "can only contain letters, numbers,

元記事を表示

Sinatraで作る中高生向け悩み相談Webサービス「Ballon」- 設計と基本実装 (Part 1)

この記事は、Sinatraを使用した中高生向け悩み相談Webサービス「Ballon」の開発過程を詳細に解説するシリーズの第1部です。

– Part 1 (本編): アプリケーションの概要、技術選定の理由、基本設計
– Part 2: ユーザー認証システムの実装と詳細な解説
– Part 3: 悩み投稿機能の実装とデータベース設計の詳細
– Part 4: 回答機能と「いいね」機能の実装、セキュリティ対策
– Part 5: パフォーマンス最適化、テスト戦略、デプロイメント手法

## はじめに

こんにちは!今回は、Rubyのマイクロフレームワークである**Sinatra**を使用して、中高生向けの悩み相談Webサービス「Ballon」を作成した過程を共有します。このWebサービスは、高校2年生の秋から3年生にかけて開発しました。

Ballonは、悩みの共有とコミュニティサポートを組み合わせることで、若者の精神的健康とピアサポートを促進することを目的としています。本記事では、アプリケーションの設計思想から基本的な実装まで、詳細に解説していきます。

## 技術スタックと選定理由

元記事を表示

激あま!RenderでRubyアプリを無料で簡単にデプロイ

## デプロイ案内はサイトに記載されている

*参考サイトRuby with Render*

https://docs.render.com/deploy-rails

:::note warn
無料枠はアプリ1個までなので、複数持つことはできません。
:::

## 著者のつまずいた箇所

1. master.keyファイルが作成されていなかった。
*参考サイトmaster.key作成*
https://qiita.com/naokit-dev/items/5e09b2fb4b64a29712e4

サイト内を参考にして、使用した説明とそのコマンド

*②master.keyの中身がわからない場合
credentials.yml.encに機密情報を追記した覚えがない、運用するつもりもない、
または記述した内容が消えてしまっても再現可能な場合にこの方法を試してください*

*一旦credentials.yml.encを削除して、
master.keyもcredentials.yml.encもない状態をつくる*

そして次のコマンドを入力
“`
sudo EDITOR=”vi”

元記事を表示

コマンドライン上で Ruby の String#gsub を使ってファイルの内容の置換を行う

## やりたいこと

– コマンドライン上でファイルの内容を置換したい
– ワンライナーで行いたい
– 正規表現を使いたい

## 方法

“`shell-session
$ cat ~/Downloads/yoyo.rb
class Yoyo
MATERIALS = {
:a6061 => ‘アルミ合金 (A6061)’,
:a7075 => ‘アルミ合金 (A7075)’
}.freeze
end

$ ruby -i -e ‘gets(nil).gsub(%r{:(\w+) => (.+)$}) { “#{$1}: #{$2}” }.then { puts(_1) }’ ~/Downloads/yoyo.rb

$ cat ~/Downloads/yoyo.rb
class Yoyo
MATERIALS = {
a6061: ‘アルミ合金 (A6061)’,
a7075: ‘アルミ合金 (A7075)’
}.freeze
end
“`

## 解説

### ruby コマンドのオプションについて

[Ruby の起動

元記事を表示

ActiveRecord::Core の clone と dup の違い

## clone と dup の違い

– clone
– shallow コピー
– **id を保持する**
– **タイムスタンプやロックに関する属性を保持する**
– **属性はコピーしない**
– つまり、clone したオブジェクトの属性を変更すると、元のオブジェクトの属性も (同じオブジェクトなので) 変更されてしまう
– アソシエーションはコピーしない

– dup
– shallow コピー
– **id は保持しない (新規レコード)**
– **タイムスタンプやロックに関する属性は保持しない**
– **属性をコピーする**
– アソシエーションはコピーしない

“`rb
yoyo = Yoyo.find_by!(name: ‘モジョ’)
cloned_yoyo, duped_yoyo = yoyo.clone, yoyo.dup

# duped_yoyo は新規レコード扱い。
[yoyo.id, cloned_yoyo.id, duped_yoyo.id]
#=> [1, 1, nil]
[yoyo.new

元記事を表示

文字を区切り文字で分割して配列に入れる

文字を区切り文字で分割して配列に入れるソースコードは下記の実装です

“`Ruby
input_line = gets.chomp
array1 = input_line.split(‘ ‘)
A = array1[0].to_i
B = array1[1].to_i
puts A + B
“`

元記事を表示

【Ruby】配列への追加(push・unshift)・削除(pop・shift)が覚えずらい

# はじめに
こんにちは、progateでRubyを勉強したのち「ゼロからわかるRuby超入門」を勉強しています。
本書で配列への追加と削除コマンドを習ったのですが、覚えずら過ぎたので自分なりにまとめてみました。
同じ境遇の方の力になれば幸いです

環境:ruby 3.3.5

# それぞれの概要
まずは追加・削除コマンドのそれぞれの概要について説明したのち、整理していこうと思います
### `push`
まず、`push`は配列の末尾に要素を追加します。
“`ruby:push.rb
drinks = [“カフェラテ”, “コーヒー”]
drinks.push(“紅茶”)
p drinks # => [“カフェラテ”, “コーヒー”, “紅茶”]
“`

### `unshift`
`unshift`は、配列の先頭に要素を追加するメソッドです。
“`ruby:unshift.rb
drinks = [“カフェラテ”, “コーヒー”]
drinks.unshift(“紅茶”)
p drinks # => [“紅茶”, “カフェラテ”, “コーヒー”]
“`

### `po

元記事を表示

M2 MacbookのRuby環境構築について

## Ruby の環境構築について

PC を新調して Macbook M2 になったので改めてRubyの環境構築してみてみました。
私の環境構築が誰かに役立てればと思います。
ただ、プログラミングは初心者で環境構築に関しても知見が浅いため、間違っていれば指摘していただけると嬉しいです。

### 前提

VScode はインストール済みです。
PC の概要は以下です。
・Apple M2
・Mac OS sonoma 14.6.1(23G93)

## ▼ Command Line Tools をインストール
Command Line Tools は Web アプリケーション開発に必要なソフトウェアをダウンロードするために必要な機能みたいです。
以下のコマンドでインストールできます。

“`
% xcode-select –install
“`

## ▼ Homebrewを用意しよう!
Homebrew は、ソフトウェア管理ツールです。
M2 の場合以下のコマンドでインストールできました。
“`
% /bin/bash -c “$(curl -fsSL https://

元記事を表示

Ruby :html内で<%= %>で囲む理由

railsの勉強をしています。
わからないところがあっても一旦はスルーして、後から意味を考えるようにしています。

このたび、一度スルーしたけど無視できない位気になったので改めて調べたことがあります。

それがrubyの<%= %>で囲む意味。
rubyではこのようにタグをつけます、のようなことを習って
「なるほどね~」とそのときは思って何も気にせず使っていました。

しかし、なんで%が出てくるの?と疑問に思ってしまいました。
おそらくその理由は演算子の余りで使う「%」が頭の片隅にあったから。
なんで演算子の「%」が急に出てくるんだー!?と脳のどこかが混乱していたんだと思います。

プログラミングに慣れると、「最初に%がつくんだから演算子なわけないじゃん」と、
そんなことを気にすることもないのかもしれません。
しかし超初心者の私は記号が出てくるだけで頭が大混乱します。
早く慣れて気にならなくなりたい。

「ruby % タグ」等といくつか検索しても私の求める結果は出てきませんでした。
私の調べ方が悪かっただけかもしれません。
そこでChatGPT先生に「Rubyの<%= %>って何で

元記事を表示

Ruby環境不要のRailsアプリジェネレータ rails-new

Railsプロジェクトを新規に作ろうと思った時、OSアップデートとかの影響で環境構築につまづいちゃうみたいなこと経験ありませんかね (Railsに限った話ではないんだけど)

そんなときに役立つのが、わりかし最近リリースされた`rails-new`ジェネレータです。

https://x.com/robzolkos/status/1842615591812690328

## `rails-new`とは?

[`rails-new`](https://github.com/rails/rails-new)はrust製のRailsアプリの雛形ジェネレータです。

このツールの最大の特徴は、ローカルマシンにRubyやRailsの環境がなくても、簡単に新しいRailsプロジェクトの雛形を作成できることです。

[リリースページ](https://github.com/rails/rails-new/releases)からバイナリをダウンロードして、パスの通ったディレクトリに配置するだけで `rails-new` コマンドが使用可能になります。

## 基本的な使い方

`rails-new

元記事を表示

【Ruby】学習内容まとめ①

Stringについて学んだことを整理しました。

Stringに使用するメソッド一覧

**upcase**
…小文字の文字列を大文字にする
<使用例>

test = 'test'
test.upcase
    =>TEST

—————————-
**downcase**
…大文字の文字列を小文字にする
<使用例>

test = 'TEST'
test.downcase
    =>test

—————————-
**slice**
…文字の切り分けを行う
<使用例>

test = 'あいうえお'
 test.slice(1,2)
  => "いう"

—————————-
**size**
…文字の大きさを確認する
<使用例>

test = 'あいうえお'
 test.size
  => "5"

—————————-
**to_i**
…文

元記事を表示

シェルスクリプトをRubyで作る

## 環境

Ubuntu20.4
Ruby2.6

## はじめに

「Linux環境でシェルスクリプトを書くことになったのだが、bashの文法はあまり詳しくないし、普段書きなれたRubyを使ってサクッと作れないだろうか・・・。」

「Rubyなら色々なgemが用意されているし、複雑な処理でもシンプルに記述できるんだけどな
・・・。」

なんて思ったときは、Rubyを使ってシェルスクリプトを作ることができるのです。シェルスクリプトにしなくても、Rubyプログラムとして、ruby hoge.rbで実行してもいいのだが、シェルスクリプトにすると、.hoge.shで実行することができます。だけの話と言えば、だけの話ではありますが。

中身はRubyの文法のままで、あたかも、bashで動いているようなスクリプトを作ることができます。また、Rubyで作っても、systemやIO.popenを使うことで、Linuxのコマンドを埋め込むこともできます。

## 内容

Rubyで記述する場合は、シバンにはbashを指定するのではなくRubyを指定します。そして、スクリプトファイルの拡張子はshにし

元記事を表示

【Rails】Rspecでテストを行う際に使ったメソッドまとめてみた

こんにちは!
今回は、実際にRspecでテストをする上で使ったメソッドをまとめてみました。

### 1, “` describe “`
テストのグループ化に使用され、テスト対象となるクラスやメソッドの説明を行う。
“`php
describe ‘User’ do
# Userクラスに関するテスト
end
“`

### 2, “` context “`
条件によるグループ化を行う。
“`php
context ‘when user is an test’ do
# ユーザーがテストの場合
end
“`

### 3, “` it “`
具体的なテストケースを記述し,期待する結果をexpectを使って定義。
“`php
it ‘returns the correct name’ do
expect(user.name).to eq(‘Yamada’)
end

“`

### 4, “` expect “`
テストで期待する結果を定義するために使用。
メソッドやオブジェクトの動作が期待通りであるかどうかを確認
“`php
expect(user

元記事を表示

【Ruby】firstメソッド、lastメソッドの使い道

# はじめに
progateでRubyを勉強したのち「ゼロからわかるRuby超入門」を勉強しています。
本書ではfirstメソッドやlastメソッドについて軽く触れられていただけだったのでもう少し深堀してまとめてみたいと思い記事にしました。

環境:ruby 3.3.5

# firstメソッドとlastメソッドとは
これらを説明する前に、まずは簡単に配列(array)について説明したいと思います。
“`ruby:array1.rb
alcohols = [“ウイスキー”,”ラム”,”ジン”]
puts alcohols[0]
# ウイスキー
“`
配列は上記でいうと`alcohols`を指し、[]の中の1つ1つを要素といいます。
ウイスキーを出力したい場合は`alcohols[0]`のように[]の中に数字を指定します。
左から0,1,2と出力しますが最初は1ではなく0なので注意してください。

さて、ここまでで配列について説明したのでfirst・lastメソッドについてみましょう
“`ruby:array2.rb
alcohols = [“ウイスキー”,”ラム”,”ジン”]
p

元記事を表示

【インターン体験記】freee株式会社 2weeks summer internship

## はじめに

2024年の9月2日から9月13日の2週間にわたり、freeeの就業型サマーインターンに参加しましたので、その体験を振り返って記録に残したいと思います。

## 参加した理由

私がこのインターンに参加した理由は、以下の3点です。

1. 普段からfreeeのプロダクト(特に[freee人事労務](https://www.freee.co.jp/hr/))を使用していること
2. Railsを使った大規模なプロダクト開発に携わりたかったこと
3. freeeのデザインが好きなこと

私が現在長期インターンをしている会社では、freeeのプロダクトを使用しており、お世話になっていることから、プロダクトに携わって貢献したいという気持ちがありました。また、大規模開発におけるRailsの使用については賛否があるものの、その課題にどう向き合っているのかを学びたかったこと、さらに、freeeのデザインが私の好みにピッタリ合っていることも理由の一つでした。

freeeのデザインにはこちらに詳しく記載されています。

https://brand.freee.co.jp/desig

元記事を表示

【Ruby on Rails vs Supabase】: 比較しながら学ぶ Supabase CLI

## はじめに

Supabase CLIを学びたいけれど、どこから始めればいいか迷っていませんか?

本記事では、RailsとSupabase CLIを比較しながら、効率的な学習方法を紹介します。
既存のRails知識を活かして、Supabase CLIの基本をスムーズに習得できるよう構成しています。
Railsとの類似点や相違点を明確にしながら、Supabase CLIの特徴と使い方を解説していきます。

Rails開発者の視点から、Supabase CLIをマスターしましょう!

## 目次

1. [Supabaseとは?](#supabaseとは)
2. [Supabase CLIの概要](#supabase-cliの概要)
3. [環境構築の詳細比較](#環境構築の詳細比較)
– [Ruby on Railsの環境構築](#ruby-on-railsの環境構築)
– [Supabase CLIの環境構築](#supabase-cliの環境構築)
– [環境構築の比較表](#環境構築の比較表)
4. [プロジェクトのセットアップ手順](#プロジェクトのセッ

元記事を表示

OTHERカテゴリの最新記事