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

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

GroveBeginnerKit を、C++(Aruduino)とRuby(ラズパイ,Rboard) で使う I2C – 気圧センサー編

[しまねソフト研究開発センター](https://www.s-itoc.jp)(略称 ITOC)にいます、東です。

[Grove Beginner Kit for Arduino を使ってみる記事](https://qiita.com/HirohitoHigashi/items/dc43ea72d572b21a6823)の第5回、今回は I2C 接続の気圧センサーを題材にします。

このレポートでは、

「メーカーのデータシートを見て、センサICを直接コントロールをすること」

を、方針とします。
もちろん、プログラムを書く上で既存のライブラリ等の実装を参考にすることは良い事です。しかしながらこのレポートは、I2C バスやセンサ IC の扱い方、データシートの読み方を示す事も目的としているため、できるだけ低レイヤーでの説明を行います。

ターゲットは、以下の通り。
* Arduino - 付属の Arduino Uno 互換機
* Ruby – Raspberry Pi + [Grove Base HAT for Raspberry Pi](htt

元記事を表示

FormObjectを編集に対応させる

PF作成においてFormObjectを使用した際に、編集機能の実装に苦戦し時間を要したため覚え書きとして投稿させていただきます。

## form_withにおける登録、更新の切り替え
“`
form_with model: インスタンス変数 do |f|
“`
上記において“form_with“は渡されたインスタンス変数のメソッド“persisted?“の返り値によってリクエストをPOSTもしくはPATCHに切り替えています。
“persisted?“メソッドはレシーバーがDBに保存されている場合はtrue,保存されていない場合はfalseを返します。
urlオプションを渡さない場合、フォームの送信先urlは同様に渡されたインスタンス変数のメソッド“to_model“の返り値によって決定されます。

## 使用例
今回、下記ER図におけるPurchaseモデルのレコードを保存するにあたり、ShopとBeanの選択をセレクトボックスにしてしまうとレコードの量次第では選択肢が膨大になりUIとして不適格だと判断したため、Stimulus-autocompleteとテキス

元記事を表示

エラーが怖い?それならSyntax Errorを「起こす」ことから始めよう

# はじめに
こんにちは! @RyoSakon001 です。[Fignny株式会社](https://fignny.co.jp/)でPython, PHP, TypeScriptのエンジニアとして働いています。
エンジニアとして業務を始めたての頃は、エラーにとにかく悩まされがち。そんなあなたにピッタリの情報をお届けできればと思います。

## こんな人に読んでほしい
– 駆け出しエンジニアの方
– 駆け出しWebデザイナーの方
– 育成担当ベテランエンジニアの方

## エラーの大半って、実はコレ
人括りに「エラー」と言っても、色々な種類があります。超〜アバウトに、大別してみます。

1. **Syntax Error**
1. **Undefined**
1. **その他**

その中で、1, 2番がおよそ8割を占めていると思います。そして、実は本当に難しい(可能性がある)のは3番だけで、1, 2番は初心者の方でも簡単に解決できてしまうのです。

## エラーへの恐怖心をなくすには、自分で「わざと」起こしてみること
**「最初は怖いけど、やってみると大したことなかった」** という経

元記事を表示

Rails ERD触ってみた

# はじめに
みなさまこんにちは。
今回、railsのgemであるRails ERDを使用してみたのでまとめました。

## Rails ERDとは
RailsのモデルからER図を自動生成することができるgem
以下の画像のようにER図を自動生成してくれます。
![erd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462552/eba1617a-e88e-4b3d-f63f-946b044956be.png)

出典

https://github.com/voormedia/rails-erd

## セットアップ
#### Graphvizをインストール (オープンソースのグラフ可視化ソフトウェア)

Graphvizとはグラフ作成用のツールで、DOT言語というものを用いてテキストファイルを画像として出力することが できる便利なやつです。

“`
$ brew install graphviz
“`

#### rails ERDをgemに追加

“` ruby:Gemfile
gro

元記事を表示

2回目のチーム開発!【アプレンティス】

# はじめに
私は、現在アプレンティス(若手エンジニアの育成・マッチングサービス)に参加しているエンジニア未経験の24歳です。
今回は、2回目のチーム開発についてまとめていきます。
今回のテーマは、**『ワクワクするものを開発せよ』** ということで前回とは違ったテーマのアプリになっています!

## アイデア決め
まずはチームメンバーで各自アイデアを出しました。
私は過去に調理師をしていた経験から、「みんなでキロクごはん」という作った料理を共有するアプリなどを考えましたが、わくわくにはかけており・・・
他のチームメンバーが考案した、「ハッピーバーふぅデイ」という、誕生日ケーキのスタンプみたいなものが表示されて、画面に向かって「ふぅーっ」と息を吹きかけるとろうそくの火が消えるアプリは、とてもワクワクして面白かったのですが、現実的に厳しく断念。
そんな中、今回作るアプリが決まりました!
それは・・・**「ジョジョ立ち倶楽部」** です!

## アプリの概要
– ジョジョ立ち倶楽部は、有名な漫画およびアニメシリーズ「ジョジョの奇妙な冒険」に登場するキャラクターたちのポーズである「ジ

元記事を表示

【Rails】Dockerを利用したアセットプリコンパイルを設定する(Asset Pipeline)

# はじめに
本記事は、私が個人開発を行う中で、アセットプリコンパイルを適切に実行するまでに多大な時間を要してしまったので、今後自分自身が迷わないにするためという備忘録、さらには同じような境遇の方のお力になれればと思いを込めて記事にしたいと思います!!

# 基本概念のおさらい
まずは、ざっくりと、アセットプリコンパイルに関しての基本をおさらいします!

### そもそも、アセットプリコンパイルとは?
複数のアセットファイル(JavaScriptやCSS)を圧縮して連結することで一つのファイルにまとめること。
### アセットプリコンパイルをすると何が嬉しいの?
– アセットプリコンパイルにより、ウェブページの読み込み速度が向上するので、UXやSEOの改善が期待される
– キャッシュやバージョン管理の面でもメリットがある

### そもそも、「アセット」って具体的に何よ?
Railsにおける、「アセット」とは画像、CSS、JavaScriptファイルなどの静的ファイルのこと。

### アセットプリコンパイルの流れ
– 結合と圧縮:
– アセットプリコンパイラ(Sprocke

元記事を表示

railsとvue.jsを使用してchatアプリを作ってみた

#### 環境
– ruby 3.1.4
– rails 7.0.8.1
– vue 3.4.21

#### 事前準備

workspaceという作業環境を構築
バックエンドとフロントエンドで作業環境を分けた。

– 使用したライブラリ
rails
“rack-cors(クロスドメイン対策)“
“ActionCable(標準用意されている。サーバ側からクライアントに直接情報)“
vue.js
“axios(HTTPリクエストで使用)“
“vue-router(ルーティング処理)“
“actioncable“

#### バックエンド側

– データベースモデル
“`ruby:schema.rb
ActiveRecord::Schema[7.0].define(version: 2024_04_17_075212) do
create_table “messages”, force: :cascade do |t|
t.text “content”
t.string “sender_name”
t.integer “r

元記事を表示

LaTeX と Python で作る 1 ポイントたりとも表示崩れしない最強の帳票印刷ソリューション

# 元ネタ
元ネタはこちらです(以下「Figma と PHP」で略します)。

読んでなるほどと思いました。このように、誰かが苦労したおかげで後続が楽になるので感謝です。何が問題点として生じるのか、どんな解決方法が考えられるのか、が予め判明しているだけでもだいぶ楽になります。
反面、$\LaTeX$ の方が実装は簡易ではないかと思ったので、それを実践してみました。

## 条件と問題点
Figma と PHP の 44 ページに以下のような条件があります
– 改めて、満たしたい条件
– [x] ミリ単位で細かく帳票をデザインしたい。
– [x] 帳票デザインの保守性を維持するためにはビジュアルデザイン必須
– [x] 印刷時に見た目が一切崩れない

さらに、次のような障害を次々とクリアしていってます。
1. 文字参照の問題
1. 枠か

元記事を表示

Rubyで書く遅延セグ木

自分用にRubyで非再帰版の遅延セグメント木を書いたので、そのメモと使用時の注意点です。

## 遅延評価セグ木や非再帰実装についての参考

– [AtCoder LibraryのLazy Segtreeの使い方][betrue12-194541]
– [非再帰版の遅延評価セグメント木の実装メモ][sumijake3-100133]
– [遅延評価セグメント木をソラで書きたいあなたに][tsutaj224329]

## 方針

ACLの lazy_segtree に必要な構造/関数 `S`, `F`, `mapping`, `composition`, `op` を一つのクラスにまとめ、破壊的変更メソッドとして、実装することでオブジェクト生成を抑えるというのが方針です。

ACLの遅延セグ木をもとに実装を行うとどうしてもオブジェクト生成数が多くなってRubyだとキツかったのでこの形にしました。

具体的には先に上げた必要なデータ、関数をインスタンス変数およびメソッドとして一つにまとめたクラスをNodeとし、以下のように構成します。

`S` : データの型 Nodeクラスのインスタン

元記事を表示

llama3をollamaを使って手元のPCで動かしRubyのFizzBuzzを書かせる

## はじめに

日経新聞を呼んでいたら、Meta社がllama3を発表したという記事が掲載されていた。

https://www.nikkei.com/article/DGXZQOGN18D9W0Y4A410C2000000/

エンジニア界隈で流行っているんだろうなと思ったが、思いのほかQiita記事がなかった。
Meta社が宣伝しているだけで、そこまで流行ってないのかもしれない。

ともかく、実はLLMモデルは自分のパソコン上で簡単に動かせる。

## ollamaをインストール

Ollamaというコマンドラインツールをインストールする。あとはコレが全部やってくれる。

https://github.com/ollama/ollama

“`
curl -fsSL https://ollama.com/install.sh | sh
“`

Dockerもあるので、Windowsな人も試すことができます。

## モデルのダウンロード

“`
ollama pull llama3
“`

プロキシ環境で作業している人は下のFAQを読むと回避できる。

https://

元記事を表示

Alma Linux 9 にrvm インストール(passenger + nginx 環境構築)への道

# rvm のインストール

この部分はrvm の公式手順に従って、インストールを進めていきます。
まずは、gpg key のインストール。

“`
# gpg key のインストール
gpg –keyserver keyserver.ubuntu.com –recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
“`

rvm でruby のstable のバージョンをインストールしたかったので、今回はstable のバージョンをインストールしていきましょう

“`
# rvm install
curl -sSL https://get.rvm.io | bash -s stable

Downloading https://github.com/rvm/rvm/archive/1.29.12.tar.gz
Downloading https://github.com/rvm/rvm/releases/download/1.29.12/1.2

元記事を表示

Rubyってなんだ

# 目次
– [Rubyとは](#rubyとは)
– [オブジェクト指向とは](#オブジェクト指向とは)
– [Rubyの特徴](#rubyの特徴)
– [「Ruby on Rails」とは](#ruby-on-railsとは)
– [フレームワークとは](#フレームワークとは)
– [Rubyでできることとは](#rubyでできることとは)
– [Rubyの将来性について](#rubyの将来性について)

# Rubyとは
日本発のプログラミング言語で、オブジェクト指向の言語です。
Webアプリケーションの開発現場で需要があります。

#### ※オブジェクト指向とは
ある程度そのプログラミングのもとになるプログラミングを作って、作業を効率化していく考え方。**クラスを使ってデータ構造を定義し、柔軟かつ安全なプログラムを作成することができます**。これにより、より大規模で複雑なシステムの開発が容易になります。

“`Ruby:Ruby
class TweetsController < ApplicationController before_ac

元記事を表示

Ruby on Railsで作成したアプリをHerokuにデプロイするまでにでたエラー

## 初めに
Railsを使ってWebアプリの開発を進めていましたが、Herokuにデプロイする際につまづいた箇所が何箇所かあったので、備忘録としてこちらにまとめておきます。

デプロイの流れはこちらのページを参考に進めました。

https://qiita.com/kazukimatsumoto/items/a0daa7281a3948701c39#heroku%E3%81%B8%E3%81%AE%E7%99%BB%E9%8C%B2

## つまづき① デプロイ時に必要なパッケージがない問題
### 内容
エラー文はこちらでした。
“`
Precompiling assets failed / Error: Cannot find package ‘@babel/plugin-proposal-private-property-in-object’
“`
`@babel/plugin-proposal-private-property-in-object`というパッケージがないようです。

package.jsonには記載がなければ新たにインストールするだけなのですが、しっかりと

元記事を表示

Ruby の pack と unpack が分からない。あと日本語でエンコードが元に戻せない。

# pack / unpack とは何なのか?

公式の例で分かりやすそうなものをひとつ

文字列を数値(文字コード)の配列に変換する例

“`rb
“Ruby”.unpack(‘C*’) # => [82, 117, 98, 121]
“`

数値(文字コード)の配列を文字列に変換する例

“`rb
[82, 117, 98, 121].pack(“C*”) # => “Ruby”
“`

なんとなくpackとuppackの語感と役割が逆なような気がして戸惑うが

たとえば上記のように

– 文字列を数値(文字コード)に「ほどく」のが unpack
– 逆に数値(文字コード)を文字列に「固める」のがpack

ということだと受け止めた

## 参考

https://docs.ruby-lang.org/ja/latest/method/Array/i/pack.html
https://docs.ruby-lang.org/ja/latest/method/String/i/unpack.html

# 引き数のアルファベットと数字

unpack/pac

元記事を表示

Railsでメモリ使用量を削減できるメソッド

先日、rake taskを実行した際に、扱うレコード数が多すぎて、サーバーに負荷をかけてしまいました。その解決策として、役立つメソッドを知ったので、まとめています。
## メモリ使用量の削減
### – find_each
##### 使用例
“`ruby:find_each.rb
Model.find_each do |model|
model.update!(hoge: hoge)
end
“`
1000件ずつレコードを取り出し、1レコードずつブロック内の処理を実行していきます。
Modelの内容を一度にすべて取り出すのではなく、1000件ずつ取り出すので、メモリ使用量を抑えることができます。

##### batch_sizeオプションを指定する場合(3000件ずつ)
“`ruby:find_each.rb
Model.find_each(batch_size: 3000) do |model|
model.update!(fuga: fuga)
end
“`

取り出す件数を1000件ずつではなく、任意の件数にしたい場合は、batch_sizeオプション

元記事を表示

英数字のランダム文字列をRubyで生成する

# はじめに
最近、Qiitaに投稿することに少しハマってます。
以前ははてなブログに書いていたのですが、Qiitaの方が綺麗に書けるので
それもあります。

つべこべ言わずに始めましょう

# 結論
使うのは次のコードになります。

大文字小文字含む文字数7の英数字を10個生成します。

“`
10.times do |i|
p [ *’a’..’z’, *’A’..’Z’, *0..9].sample(7).join
end
“`
# 説明
– `*`について
アスタリスクは展開をしてくれます。
今回の場合だと’a’..’z’や’A’..’Z’、0..9を展開します。
流石に
abcdefghijklmnopqrstuvwxyzABCDEFGHYJKLMNOPQRSTUVWXYZ0123456789
を配列に書くわけには行かないですからね。

– sample(n)
配列に作用させるとnこの文字列を重複なしで抽出し、新しい配列を生成します。

– join
作用させた配列の各要素を指定した文字列で連結した文字列を返します
今回は特に指定していないのでそのまま区切り文字を

元記事を表示

見たことある開発言語の命名規則まとめたぞオラッ!!!

—————————————————————————————————————–
# Ruby

## 変数やメソッド:
スネークケースを使用。複数の単語はアンダースコア(_)で区切る。
### 例: my_variable, calculate_sum

## クラスやモジュール:
キャメルケースを使用。単語の先頭を大文字で始め、連結する単語の先頭も大文字。
### 例: MyClass, MyModule
—————————————————————————————————————–
# Python

## 変数や関数
スネークケースを使用。複数の単語はアンダースコア(_)で区切る。
### 例: my_variable, calculate_sum

## クラス:
キャメルケースを使

元記事を表示

GroveBeginnerKit を、C++(Aruduino)とRuby(ラズパイ,Rboard) で使う I2C – 加速度センサー編

[しまねソフト研究開発センター](https://www.s-itoc.jp)(略称 ITOC)にいます、東です。

[Grove Beginner Kit for Arduino を使ってみる記事](https://qiita.com/HirohitoHigashi/items/dc43ea72d572b21a6823)の第4回、今回から I2C 接続のセンサーを題材にします。
このキットに付属している I2C 接続のセンサーは、以下の3種類です。

* 3軸加速度センサー
* 気圧センサー
* 温湿度センサー

その中でも今回は、3軸加速度センサーを題材にします。

このレポートでは、

「メーカーのデータシートを見て、センサICを直接コントロールをすること」

を、方針とします。
もちろん、プログラムを書く上で既存のライブラリ等の実装を参考にすることは良い事です。しかしながらこのレポートは、I2C バスやセンサ IC の扱い方、データシートの読み方を示す事も目的としているため、できるだけ低レイヤーでの説明を行います。

元記事を表示

Ruby – バイナリと16進数のHEXを相互変換する

# コード例

“`rb
def bin_to_hex(str)
str.each_byte.map { |b| b.to_s(16).rjust(2, ‘0’) }.join
end

def hex_to_bin(hex)
[hex].pack(‘H*’)
end

bin_to_hex(binary_string)

hex_to_bin(hex_string)
“`

# チャットメンバー募集

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

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

# プロフィール・経歴

https://github.com/YumaInaura/YumaInaura

元記事を表示

MySQL 8.3環境でmysql2 gemをインストールする方法

## はじめに
MySQL 8.3の環境でmysql2 gemをインストールするのにちょっと苦労したので、対処法を書いておきます。

### 実行環境

本記事は以下の環境で検証しました。

– MySQL 8.3.0 (Homebrewでインストール)
– macOS 14.4.1
– MacBook Air M3
– Ruby 3.3.0

### 注意事項
この記事を書いている時点ではmysql2の最新バージョンは0.5.6です。
よって、mysql2 0.5.6を使う前提で記事を書きますが、さらに新しいバージョンがリリースされたときは対処法が異なる可能性があります。

https://github.com/brianmario/mysql2/releases

### 念のため用語の整理
本記事ではMySQLとmysql2というよく似た用語が出てきます。
プログラミング初心者の方はこれらをしっかり区別しながら読み進めてください。

– **MySQL** = RDBMS(DBサーバー)。執筆時点の最新バージョンは8.3.0(2024/1/16リリース)
– **mysql2**

元記事を表示

OTHERカテゴリの最新記事