Ruby関連のことを調べてみた2021年12月03日

Ruby関連のことを調べてみた2021年12月03日
目次

【Rails】Twitter APIとLINE APIでジャニーズの私物を特定して、すぐに購入できるサービスを作ってみた!!! PF

#はじめに
PFで**ジャニーズの私物を特定して、すぐに購入できるサービス**を作成したのでまとめます。

#サービスの概要

ジャニーズファンは推しと同じものを日常生活やライブで身につけたいという心理があります。
twitte上にファンの人が私物を特定してツイートをするので、そのツイートをキャッチして、LINEで通知・購入できるサービスになっています。

#なぜこのサービスを作成したか
私物の特定のツイートがされるとすぐファンが購入し、売り切れてしまうことがよくあります。

私自身、私物特定のツイートを発見し、サイトを検索してももう売り切れてしまっていたということが何回もあります。

他のファンよりも早く購入できるサービスがあればいいなと思い、このサービスを作成しました。

##使用した機能
Twitter API
LINE Messaging API
Sorcery

##ER図

##モデル

##Twiiter API 部分について

**Twiiter API**を使用して、特定のアカウントが私物に関するツイートをした際にツイート内容や画像等を取得します。

#### 1.

元記事を表示

勝手に「点字メーカープログラム」を作ってみる

#はじめに
これは、[2021年の Ruby アドベントカレンダー2](https://qiita.com/advent-calendar/2021/ruby)の3日目の記事です。

先日「[挑戦者求む!Rubyで点字メーカープログラムを作ってみよう 〜Qiita Advent Calendar 2021〜](https://blog.jnito.com/entry/2021/11/04/092218)」という記事を見つけました。
これは面白そうな題材です。10人いれば100通りの実装が出てくるのが ruby の醍醐味。是非とも、いろいろな方が書いたコードを見比べてみたい、自分の作ったコードとも比較してみたい。

なので、さっそく[参加しよう](https://qiita.com/advent-calendar/2021/ruby-challenge)と思ったものの、その時点で既にすべての枠が埋まっていたのでした。仕方がないので、こうして勝手にRuby アドベントカレンダーに投稿しています。
(Ruby アドベントカレンダー1の2日目にも、同じような方がいる模様です)

なお、出来上が

元記事を表示

【Ruby のまずいコード】文字列を文字の配列にする

# お題

文字列(例えば `”Ruby”`)を文字の配列(`[“R”, “u”, “b” ,”y”]`)に変換してください。

# コード

“`rb
str = “Ruby”

chars = str.split(“”)
“`

# 改善

このコードはとくにまずいということはないと思いますが,この目的には専用のメソッド [String#chars](https://docs.ruby-lang.org/ja/3.0.0/method/String/i/chars.html) があるので,それを使えばいいでしょう。

“`rb
str = “Ruby”

chars = str.chars
“`

速度面では変わらないようです。
`chars` のメリットは簡潔なことですが,意図が分かりやすいとは言えるかと思います。
[String#split](https://docs.ruby-lang.org/ja/3.0.0/method/String/i/split.html) の仕様はかなり複雑で,筆者もその全ては記憶していません。

“`rb
str = ” A B

元記事を表示

データ分析基盤・DataLakeを作成するツールとしてのEmbulk

この記事はエイチーム引越し侍 / エイチームコネクトの社員による、[Ateam Hikkoshi samurai Inc.× Ateam Connect Inc. Advent Calendar 2021](https://qiita.com/advent-calendar/2021/hikkoshizamurai-connect) 3日目の記事です。

## はじめに
今日は、最近のお仕事で触ることになる可能性が高いEmbulkについて書きます。
*触ることになる*とあるようにEmbulkを使い始めるソフトウェアエンジニアによる記事です。説明に至らない点があったり間違っていたりするかもしれません。その際は[編集リクエスト](https://help.qiita.com/ja/articles/qiita-edit-request)なりコメントなりでご指摘いただけたら幸いです。

何に使うかですが、データ分析基盤、DataLake作成におけるETL処理のために使います。ちなみにETLはExtract、Transform、Loadの略でデータを抽出、変換・加工、ロード(Output)する

元記事を表示

部分和問題を動的計画法で解く

## 概要

これは [Money Forward Engineering Advent Calendar 2021](https://adventar.org/calendars/6182) 3 日目の記事です ?

運用しているとある Rails アプリケーションのある機能でリクエストがタイムアウトしてしまう問題が生じたのが発端です。ある n 個の整数の集合 $\\{a_1, a_2, …, a_n\\}$ から、和が与えられた sum に等しくなるように部分集合を選ぶ問題を解く処理があります。この問題を [部分和問題](https://ja.wikipedia.org/wiki/%E9%83%A8%E5%88%86%E5%92%8C%E5%95%8F%E9%A1%8C) と呼びます。例えば集合が $\\{3, 34, 4, 12, 5, 2\\}$ で sum = 20 の場合、和が 20 となる部分集合は $\\{3, 12, 5\\}$です。

今回 n の数がある程度大きい場合に、Rails アプリケーション内の処理に含まれる部分和問題を数分では解くことができず、結果

元記事を表示

【LINE×Rails】Rails初学者も作れるLINE Botアプリケーション

# 概要
この記事では、先日リリースした[ReLINE【”猫さん”】](https://www.cat-reline.com/)で得た LINE Messaging API の知見を使って、`投稿に応じて返信するテキストを変化させるLINE Botアプリケーション`を作成します。

記事の内容に沿って実際に手を動かして取り組んでもらうと、今回私が作成したものと同じものができるので、お時間のある方はチャレンジしてもらえると嬉しいです!

【注意点】
この記事では上記のLINE Botアプリケーションを作成する流れを記載していきます。そのため技術的な話はほとんど出てきませんが、身近なLINEアプリを使ってプログラミングへの楽しさや作成する面白さなどを感じてもらえたら幸いです。

【今回挑戦する4ケース】
1.”おまじない”(`アブラカタブラ`、`チチンプイプイ`、`ヒラケゴマ` のいずれかテキスト)が投稿された場合
   => `It is Omajinai`と返す
2.`ruby`というテキストが投稿された場合
   => `Is it Programming language? O

元記事を表示

Rubocopまとめ

#Rubocopとは
Rubyのコーディングチェックツールです。
Rubocopを使うことで、誰でも一定の品質のコードを書くことができます。
一部のルールについては、自動修正にも対応しているため自分で修正する手間も省くことができます。
またRubocopでは`Cop`という単位でルールを管理しています。

#導入方法
rubocopはgemのため、インストールします。

“`ruby
group :development do
gem ‘rubocop’, require: false
gem ‘rubocop-rails’, require: false
end
“`

ここでrubocopはアプリ側で呼び出す必要がないため、`require: false`をつけています。

#ファイル
##.rubocop.yml
Rubocopの設定ファイルです。
ここで、修正するcopを設定することができます。

##.rubocop_todo.yml
ここに今すぐ修正できないcopを退避させて置くことで、警告が出ないようになります。
(以下のコマンドのおかげ)

“`ruby:

元記事を表示

Ruby 多重継承 Mix-in

# はじめに
`python`から`ruby`に移植する話がありまして、ソースを見ていたところpythonに多重継承がありました。

どうしたものか。
# 競技プログラミング
*[atcoder](https://atcoder.jp/home)* さんには大変お世話になっているものの、`class`どころか`def`もほとんど書きませんので、クラス・モジュール・継承となると再勉強が必要。
*[Ruby Gold](https://qiita.com/superrino130/items/328854a699658ed72d30)* も使わなければ忘れるだけですね。
# Perl to Ruby
ところで、*[PerlユーザーのためのRuby入門](https://www.ohmsha.co.jp/book/9784274065156/)* という本がございまして、例によって20年位前の本になりますが、第5章に`5-2 Perl多重継承v.s. Ruby Mix-in`という興味深い記載が載っておりました。

“`ruby
class Staff
def initialize(h

元記事を表示

Macにおけるファイルエンコーディングの確認方法

##はじめに
[プロを目指す人にためのRuby入門](https://ruby-book.jnito.com/)に取り組んでいたところ、ファイルエンコーディングを確認する機会があったため、忘れないようにメモとして残しておこうと思います。

##ファイルエンコーディングの確認方法
ファイルエンコーディングを確認する際は`file`コマンドを使用します。`–mime-encoding`をオプションとして加えることによって、ファイルエンコーディングのみ出力されます。

“`shell:コンソール
file –mime-encoding sample.rb
sample.rb: utf-8
“`

出力結果から、ファイルエンコーディングはUTF-8だとわかりました。

[UTF-8](https://wa3.i-3-i.info/word1812.html) (文字コードとファイルエンコーディングの違いで混乱した時に読んだ記事です)

元記事を表示

【Rails】目的地の日没時刻がわかるだけのシンプルなアプリを作った

##はじめに
タイトル通り、目的地の日没時刻がわかるだけのシンプルなアプリを作りました。
[シンプルマジックアワー](“https://simple-magichour.com/”)というアプリです。
開発の過程などを記していきます。

##アプリの説明
日付と都市を選択すると日没の時刻を表示します。
それだけだとあまりに味気なかったので、マジックアワーの時刻も付け足しました。
![スクリーンショット 2021-12-02 13.49.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1535961/1a05c464-4f75-cfa3-5ec6-d5df906cea44.png)

####なぜ作ろうと思ったか
一眼レフカメラで夕焼けの写真を撮るのが趣味なのですが、綺麗な夕焼けを撮るには日没の時間を知っておく必要があります。
日没の時間が分かるアプリはごまんとあるのですが、その多くは日没時刻以外の情報もたくさん表示されます。(日の出の時刻や太陽の位置など)
また、地点についても詳細な位置を取得するた

元記事を表示

Ruby biz Grand prix 2021のファイナリストに選ばれた

[Catallaxy Advent Calendar](https://qiita.com/advent-calendar/2021/catallaxy) 1日目を担当します、エンジニア1号です。

[Ruby biz Grand prix 2021(Ruby bizグランプリ2021)](https://rubybiz.jp/)へエントリーして、ファイナリストに選ばれましたので、今日はそのことに触れてみたいと思います。

## Catallaxyとは
金属加工プラットフォームを提供する2015年創業スタートアップになります。2018年に現在の業態にピボットしたのち、2021年3月にはシリーズAとして約4.1億円を調達しており、現在までに累計約8億円の資金調達をしております。従業員数26名のうち、エンジニア10名、デザイナー1名、エンジニアの業務委託・インターン数名のメンバー構成になっており(2021年9月応募時点)、約半数がプロダクトに関わる業務に携わっています。

## Ruby biz Grand prix
2015年からRuby bizグランプリ実行委員会が開催するRubyを活

元記事を表示

【オブジェクト指向】コンストラクタ

##コンストラクタとは
Rubyのようなオブジェクト指向のプログラミング言語で使われる機能の1つで、オブジェクトを生成した際に1度だけ実行される機能を指す名称。
initialize という名前のメソッドは自動的に private に設定される。

##initialize
– 「new」メソッドが実行された際に自動的に呼び出される

“`ruby
class Sample
def initialize
p ‘初期化処理’
end
end

s = Sample.new
“初期化処理”
=> #
“`

– インスタンスを生成するnewメソッドで引数を指定することで、その値をインスタンス変数に設定することが可能

“`ruby
class Sample
def initialize(name)
@name = name
end

def execute()
p @name + ‘ hello’
end
end

sample1 = Sample.new(‘ka

元記事を表示

BioconductorのAnnotationDbiパッケージの中身のsqliteデータベース取り出してをRubyなど他の言語で利用することを考える

## はじめに

 生命科学のコンピュータによる解析では、R言語が広く使われています。Bioconductorプロジェクトが、品質の高いパッケージ群を支えています。Bioconductorでは、基本的なデータ構造について共通のものを利用することで、一貫したシステムを作り上げています。たとえば、ゲノム範囲を扱うパッケージで[GenomicRanges]()というものがあり、これがBioconductorで最も利用されるパッケージの一つになっています。しかし、他の言語でバイオインフォマティックスを行おうと考えている場合、こういった基盤となるパッケージやライブラリが存在しなくて苦労することがあります。

* [Bioconductor Top75](http://bioconductor.org/packages/stats/) – もっとも利用されているパッケージ75種類。

 Bioconductorを構成するパッケージの中にはデータベースを扱うカテゴリーがあります。これらはAnnotationDataという分類になっています。

http://bioconductor.org/pack

元記事を表示

preload, eager_load, includesについて

# はじめに
株式会社じげんでエンジニアをしているiLLviAです。

パフォーマンス低下につながる「N+1」問題。これを解消するメソッドとしてActiveRecordには`preload`, `eager_load`, `includes`が用意されています。
これらの各メソッドが「どのような挙動をするのか」「どのような場面で使い分けるのか」など理解せず雰囲気で`includes`を多用していたので、理解を深めるためにまとめてみました。

# 関連付け
`Article`は、中間テーブル`ArticleTag`を介して「Ruby」「JavaScript」「PHP」などの複数の`Tag`と紐づいています。
### **Model**

“`ruby
class Article < ApplicationRecord has_many: :article_tags has_many: :tags, through: :article_tags end class Tag < ApplicationRecord has_many: :article_tags has_

元記事を表示

【Ruby のまずいコード】二乗和

# お題

数値配列の要素の 2 乗の和を返すメソッドを定義しよう。

# コード

“`rb
def square_sum(values)
values.inject(0){ |sum, value| sum + value ** 2 }
end
“`

# 改善

もっと簡素に書けます。

総和を求めるのに専用のメソッド [Array#sum](https://docs.ruby-lang.org/ja/3.0.0/method/Array/i/sum.html) を使うとよいのですが,

“`rb
def square_sum(values)
values.map{ |value| value ** 2 }.sum
end
“`

などとせずとも,`sum` のブロック付き用法で,

“`rb
def square_sum(values)
values.sum{ |value| value ** 2 }
end
“`

と書けます。

番号指定ブロックパラメーターの導入された Ruby 2.7 以降なら

“`rb
def square_sum(valu

元記事を表示

「ロジックをモデルに移す」よりシンプルなファットコントローラの解消法【個人開発で学んだこと】

# 記事を読むのにかかる時間
約10分

# 結論
コントローラの記述が膨れ上がってしまう、いわゆる**「ファットコントローラ」**について、
最もオーソドックスな解消法として挙げられる「ロジックをモデルに移す」よりシンプルなのは
**「テーブル設計を工夫し、そもそもコントローラに何も書かなくて良い状態を作る」**
ことだと思います。
今回、個人開発でその体験ができたので共有します。

# この記事から得られること
実装の前段階にあたる**テーブル設計**を工夫することで
コードをシンプルにする方法を一つ知ることができる。

# 必要なRailsの予備知識
・一般的なCRUDのアクション
・多対多の関連付け(`has_many :through`とか`belongs_to`)の概要
・enum

# 目次
[結論](#結論)
[開発したサービス](#開発したサービス)
[テーブル設計で工夫したこと](#テーブル設計で工夫したこと)
[詳しく](#詳しく)
[まとめ](#まとめ)
[最後に](#最後に)

# 開発したサービス

https://bachelor-derby4.herok

元記事を表示

「点字」と「2進法」ッ!この世にこれほど相性のいいものがあるだろうかッ!?

# この記事について

 この記事は、Qiita Advent Calendar 2021[「Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念-」](https://qiita.com/advent-calendar/2021/ruby-challenge)の 2 日目の記事です。何も考えずに空いているところに入れたら改訂版チェリー本の発売日でした。記念すべき日を私ごときが取ってしまい申し訳ありません…

[点字メーカープログラム PR (Qiita Advent Calendar 2021 12/02) by nodai2hITC · Pull Request #2 · JunichiIto/tenji-maker-challenge](https://github.com/JunichiIto/tenji-maker-challenge/pull/2)

# 方針

 まずタイトル(はいそうですジョジョ4部です)にある通り、点の有無で情報を表す「点字」は、「2進法」と非常に相性がいいのではないでしょうか。点の有無をそのまま 1・0 として置き換えることで、点字

元記事を表示

点字メーカープログラムを書いてみる

https://github.com/JunichiIto/tenji-maker-challenge

https://green.adam.ne.jp/roomazi/kunreisiki.html

http://www.naiiv.net/braille/?tenji-sikumi

“`markdown
Run options: –seed 9979

# Running:

……

Finished in 0.001547s, 3878.4745 runs/s, 3878.4745 assertions/s.

6 runs, 6 assertions, 0 failures, 0 errors, 0 skips
“`

### 点字メーカープログラム、試作(いくつかの問題がある)

“`ruby
# frozen_string_literal: true

class TenjiMaker
def to_tenji(*text)
beta = text.to_s.split.join

if beta.match?(/”A”./)

元記事を表示

【IT業界未経験】テックキャンプからエンジニア職に就職するまでの記録

#はじめに
2021年3月から学習を始めて内定をもらうまでの記録をまとめました。
参考にして頂けれる所とこれは参考にならないなど反面教師にして頂ければ幸いです。

| 章 | 内容 |
|—|—|
|簡単な経歴|[自己紹介](https://qiita.com/N396184501/items/88ac98c8e83b47df6187#%E8%87%AA%E5%B7%B1%E7%B4%B9%E4%BB%8B)|
|学習から内定までの道のり|[時系列にまとめています](https://qiita.com/N396184501/items/88ac98c8e83b47df6187#%E5%AD%A6%E7%BF%92%E3%81%8B%E3%82%89%E5%86%85%E5%AE%9A%E3%81%BE%E3%81%A7%E3%81%AE%E9%81%93%E3%81%AE%E3%82%8A)|
|転職活動内容|[実績と面接等について](https://qiita.com/N396184501/items/88ac98c8e83b47df6187#%E8%BB%A2%E8%81%

元記事を表示

【RSpec】JSONの値を確認するテスト

##環境
Ruby 3.0.2
Rails 6.1.4.1

##APIのリクエストテスト
gemを使わずにjsonが期待通りに取れているかのテストを書くとこうなる。

“`ruby
describe “GET /api/v1/fruits” do
subject { get ‘/api/v1/fruits’, headers: headers }
let!(:available_fruits1) { create(:fruit) }
let!(:available_fruits2) { create(:fruit) }
let!(:unavailable_fruits) { create(:fruit, :unavailable) }

it ‘旬の果物を返すこと’ do
subject
json = JSON.parse(response.body)
expect(response.status).to eq 200

# 果物が3つあり、そのうち旬の果物が2つ、旬じゃないのが1つ。jsonで取れるのは果物が2つ

元記事を表示

OTHERカテゴリの最新記事