- 0.0.1. Rubyで自動販売機のプログラムを作成する
- 0.0.2. Rubyでゴルフのスコア名を出力するプログラムを作成する
- 0.0.3. Rubyでカレンダーを表示するプログラムを作成する
- 0.0.4. Rubyでランダムにグループ分けするプログラムを作成する
- 0.0.5. Gemがインストールできないの解決まで(Rubyのバージョンインストールとrbenvのバージョン管理)
- 0.0.6. 【Ruby】uniqは重複を除外するだけではないよ
- 0.0.7. Sinatraで作る中高生向け悩み相談Webサービス「Ballon」- 総括版
- 0.0.8. Sinatraで作る中高生向け悩み相談Webサービス「Ballon」- パフォーマンス最適化、アクセシビリティ、多言語対応、アナリティクス (Part 5)
- 0.0.9. Sinatraで作る中高生向け悩み相談Webサービス「Ballon」- 回答機能、「いいね」機能、セキュリティ対策、コンテンツモデレーション (Part 4)
- 0.0.10. Sinatraで作る中高生向け悩み相談Webサービス「Ballon」- ユーザー認証システムの実装 (Part 2)
- 0.0.11. Sinatraで作る中高生向け悩み相談Webサービス「Ballon」- 設計と基本実装 (Part 1)
- 0.0.12. 激あま!RenderでRubyアプリを無料で簡単にデプロイ
- 0.0.13. コマンドライン上で Ruby の String#gsub を使ってファイルの内容の置換を行う
- 0.0.14. ActiveRecord::Core の clone と dup の違い
- 0.0.15. 文字を区切り文字で分割して配列に入れる
- 0.0.16. 【Ruby】配列への追加(push・unshift)・削除(pop・shift)が覚えずらい
- 0.0.17. M2 MacbookのRuby環境構築について
- 0.0.18. Ruby :html内で<%= %>で囲む理由
- 0.0.19. Ruby環境不要のRailsアプリジェネレータ rails-new
- 0.0.20. 【Ruby】学習内容まとめ①
- 1. Stringに使用するメソッド一覧
Rubyで自動販売機のプログラムを作成する
## はじめに
[前回](https://qiita.com/at-sacai/private/eb933e1c8f73f28e6741)に引き続き、Ruby学習のアウトプットとして今回は自動販売機のプログラムを作成しました。上記の内容について、備忘のためにメモ書きを残しておくことにします。
## 仕様
Suicaのみで購入可能な自動販売機のプログラムとします。
### Suica
– デポジットとして500円がデフォルトでチャージされているものとする
– Suicaには100円以上の任意の金額をチャージできる
– 100円未満をチャージしようとした場合は例外を発生させる
– Suicaは現在のチャージ残高を取得できる### 自動販売機の在庫管理
– 自動販売機は飲み物を3種類(ペプシ、モンスター、いろはす)を格納できる
– 飲み物は名前と値段の情報をもつ
– 初期状態で、3種類の飲み物はそれぞれ5本格納されている
– 自動販売機は在庫を取得できる|名前 |価格 |
|:——|:—|
| ペプシ |150円|
| モンスター|230円|
| いろは
Rubyでゴルフのスコア名を出力するプログラムを作成する
## はじめに
[前回](https://qiita.com/at-sacai/private/aae5231711cea1e6e706)に引き続き、Ruby学習のアウトプットとして今回はゴルフのスコア名を出力するプログラムを作成しました。上記の内容について、備忘のためにメモ書きを残しておくことにします。
## アウトプットイメージ
以下のようなテキストファイル(1行目:規定打数、2行目:実際の打数)を入力値として、ゴルフのスコア名を出力します。
入力値のそれぞれの値の範囲は以下の通りです。
– `3 ≤ 規定打数 ≤ 5`
– `1 ≤ 実際の打数`※ ゴルフのルールやスコア名の説明は省略させていただきます。
“` plaintext:case_1.text
4,4,5,3,5,4,4,3,4,4,5,4,4,3,4,4,3,5
2,3,1,5,8,3,5,1,5,6,2,5,7,2,5,5,2,6
“`
出力の例
“`
イーグル,バーディ,コンドル,2ボギー,3ボギー,バーディ,ボギー,ホールインワン,ボギー,2ボギー,アルバトロス,ボギー,3ボギー,バーデ
Rubyでカレンダーを表示するプログラムを作成する
## はじめに
以前からRubyの学習を進めており、アウトプットとしてカレンダーを出力するプログラムを作成しました。今回は、プログラムの作成の過程についてまとめていきます。私のようなプログラミング学習初心者の一助となれば幸いです。
## アウトプットイメージ
アウトプットイメージは、以下の添付画像の通り
Macのターミナルで`cal`コマンドを実行した結果と同じものを作成します。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2290540/50d4faaa-5f4d-f2c7-455c-7600d460fc15.png)
追加要件として、以下も満たすことにします。
– 曜日は月曜日始まりにする(`cal`コマンドの実行結果は日曜日始まり)
– `ruby`コマンドでファイルを実行する際、`-m`オプションで月を指定できるようにする
– `-m`オプションで指定した月のカレンダーを出力する(今年)
– `-m`オプションの引数を指定しない場合、今月のカレンダーを表示
Rubyでランダムにグループ分けするプログラムを作成する
## はじめに
[前回](https://qiita.com/at-sacai/private/9d46b20adf89e10e7f81)に引き続き、Ruby学習のアウトプットとして今回はランダムにグループ分けをするプログラムを作成しました。上記の内容について、備忘のためにメモ書きを残しておくことにします。
## 仕様
– 前提
– A、B、C、D、E、Fという6人のグループがあった
– 定期的に、6人でLINEのグループ通話をしている
– 課題
– 6人でLINEのグループ通話は会話しづらい
– 要件
– 3人と3人、または2人と4人にランダムにグループ分けを行いたい
– 補足
– 本プログラムは実行するたびに、結果が変わるようにすること
– 表示結果はアルファベット順に並び替えること## アウトプットイメージ
アウトプットイメージは、以下の通りです。
“` plaintext
$ ruby random.rb
[“B”, “C”]
[“A”, “D”, “E”, “F”]
“`## 検討
まずは、プログラムの処
Gemがインストールできないの解決まで(Rubyのバージョンインストールとrbenvのバージョン管理)
# 経緯
MacでGemをインストールしようとしたところエラーや、作業が詰まったところがあったため、その解決までに至る経緯をメモ。# 目指すゴール
Faker((テストデータを取得するGem)をインストールし、挙動を確認したい。# 課題
### 1.バージョンが古かった
FakerというGemをインストールを試みたところ
「fakerはRubyバージョン>= 2.7が必要です。現在のRubyバージョンは2.6.10.210です。」
とエラーが表示された。“`
$ gem install faker
faker requires Ruby version >= 2.7. The current ruby version is 2.6.10.210.
“`### 2.rbenvで上手くバージョンが切り替わらなかった
rbenvで3.0.0をインストールしglobal設定したが、ruby -v で確認すると上手く設定できていない。“`
$ rbenv global 3.0.0
$ rbenv versions
system
*3.0.0
$ ruby -v
rub
【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**
…文