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

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

Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念- 18日目

## 概要
本記事は[Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念- Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ruby-challenge)に、18日目として参加したものです。
ローマ字で与えられる入力値を点字に変換し出力するプログラムを作成しました。問題の詳細は[こちら](https://github.com/JunichiIto/tenji-maker-challenge)をご確認ください

## PR
私のPullRequestは[こちら](https://github.com/JunichiIto/tenji-maker-challenge/pull/25)になります

## コードの解説
ざっくりと書いたコードについて解説していきます。
まずもって、今回実装対象のto_tenjiメソッドに関わる実装は以下のとおりです。

“`ruby
class TenjiMaker
# 点字配列のindex順は、ドメインとしての点字のナンバリングと同じ順で扱う
TENJI_

元記事を表示

paiza(PHP)でよく使う処理をまとめてみた

#はじめに
rubyからスタートして約4か月。最近は次の仕事でよく使われるPHPを勉強している。paizaでよく使われる入力値の仕方をまとめてみました。

###➀入力値の取得
####ruby
“`
hoge = gets
“`
####PHP
“`
$hoge = fgets(STDIN);
“`

###➁空白や改行が与えられる場合
####ruby
“`
hoge = gets.chomp
“`
####PHP
“`
$hoge = trim(fgets(STDIN));
“`

###➂➁を配列で取得したい場合
####ruby
“`
hoge = gets.chomp.split
“`
###PHP
“`
$hoge = explode(” “,trim(fgets(STDIN)));
“`

##おわりに
学習していくうちに追加していこうと思います。
間違っていたらご指摘お願いします(笑)

てかセミコロンのつけ忘れてしまう。。

元記事を表示

【Ruby のまずいコード】数値が全て一定範囲に収まっているか

# お題

引数として浮動小数点数(Float オブジェクト)の配列を受け取り,それらの数値がすべて 0 以上 1 以下であるかどうかを返すメソッドを書いてください。

# コード

## コード 1

“`rb
def all_ge0_lt1?(numbers)
numbers.each do |number|
unless (0..1).cover?(number)
return false
end
end
true
end
“`

メソッド名は「greater than 0, less than 1」から名付けました。もっと良い名前があるかもしれませんが,本記事では命名については不問とします。

## コード 2

“`rb
def all_ge0_lt1?(numbers)
numbers.all?{ |number| (0..1).cover?(number) }
end
“`

# 講評

## コード 1

素朴な(ある意味で素直な)コードですね。
一つでも範囲外の要素が見つかったらそれ以降の要素については調べる必要が

元記事を表示

【初級者向け】RubyのStringとHashのeach系メソッドを体系的に整理

# 最初に

[Ruby Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ruby) Part2の18日目の記事です。
昨日は著名なigaigaさんの「[Ruby3.0キーワード引数仕様変更に伴う書き換えをしたので調べたことのまとめAdd Star](https://igarashikuniaki.net/diary/20211217.html)」でした!

RubyのアドベントカレンダーのPart2は枠が余ってたし、備忘用に書いたものがあったこともあり、編集して公開してみることにしました。
StringやHashのeach系のメソッドが体系化されて説明された記事を読んだことがないし、他の人も読んだことがなさそうだと思ったので、そういった内容です。
ちょっと表にしたり、ちょっと歴史的な流れを説明したりって感じですけど。

# Stringのeach系メソッドについて

配列(Array)やハッシュ(Hash)には`each`というインスタンスメソッドがあります。
対して、今の文字列(String)には`each

元記事を表示

refinarycms-blogの使い方

# 概要
refinarycms-blogの使い方について説明します
この内容について書かれている記事が少なかったので助けになれば幸いです
# 前提
既にrefinarycmsを導入したサイトにblog機能を追加する形で実装していきます
その実装方法については[こちらの記事](https://qiita.com/nanaho_mu/items/11c3c76b50217d4ad1be)で紹介しています
# 実装

## install
作成したrefinerycmsを導入したサイトのgemfileを開いて、一番下の行に下のコードを追加します。

“` :Gemfile
gem ‘refinerycms-blog’, git: ‘https://github.com/refinery/refinerycms-blog’, branch: ‘master’
“`

その後ターミナルで`bundle install`をしてください

※うまくいかない場合は`bundle update`をするとうまくいくことがあります

次にターミナルで以下のコマンドを実行して、blogのbackend

元記事を表示

refinarycmsの使い方

# 概要
・refinarycmsについての記事が少ない
・versionによってうまく動かない方法が多い
 などの理由で使い方を習得するのに苦労したので作成方法をまとめます

#準備
RefineryはImageMagickに依存するので、まずそれからインストールします。
OSXの場合一番簡単なのはHomebrewを利用する方法です。必要な作業は以下のコマンドを実行するだけです。

“` :terminal
$ brew install imagemagick
“`
# 実装
## install
Refinery gemをインストールします。

“` :terminal
$ gem install refinerycms
“`
## create application
新規のRefineryアプリケーションを作成するために、refinerycmsコマンドをアプリケーション名を指定して実行します。

“` :terminal
$ refinerycms refinary_sample
“`
※refinary_sampleはアプリ名なので自由に変えてください

#

元記事を表示

M1 MacでGCP Cloud RunのQuickstart(ruby版)試したので詰まったポイントをメモ

技術選定のため、

* GCP Cloud RunのQuickstartを
* M1 Macの環境で
* プログラミング言語はRubyで

試してみる。
基本的にはquickstartの手順通りやっていくが、詰まった点の解消方法を書く。

https://cloud.google.com/run/docs/quickstarts/build-and-deploy

なお、GCPの中でWebサービスをする上で初期の低負荷なフェーズであれば、Cloud RunのほうがGoogle App Engineよりもコストが安く上がるらしい。

https://dev.to/pcraig3/cloud-run-vs-app-engine-a-head-to-head-comparison-using-facts-and-science-1225

# 環境構築

* Python(Cloud SDKの動作のため)
* Cloud SDK
* Ruby(開発用)

## Python

cloud sdkのインストールにはバージョン3.5以上のPythonが必要である。(2.7.9も使えるけどもはや

元記事を表示

[Ruby on Rails]MVC仕組みについて「ひと言」「簡単に要約」(初心者)

###はじめに
初学者でたくさんのことを学ぶ中で忘れていたり、言語化してアウトプットするのが苦手なため書かせていただいております。

#まずMVCの各役割を説明

###Mについて

**要約**

“`
Modelは、データベース管理に関する役割
データベース内の該当するテーブルに対して、データの保存や保存されているデータの取得。
“`

###Vについて

**要約**

“`
Viewは、ブラウザに表示される見た目の役割
クライアントサイドに画面上に表示される見た目の事
“`

###Cについて

**要約**

“`
Controllerは、モデルやビューに処理を指示する橋渡しとなる役割
クライアントサイドからのリクエスト内容に基づきレスポンスを用意する。
“`

#MVCのメリット
###3点あります

“`
1,それぞれの役割が明確 (どこに何を書けばいいのかはっきりしている)
2,保守性が高い (処理の流れを把握しやすくエラーなどが起きた時に原因を特定しやすい)
3,チーム開発がしやすい (MVCによって分けるなど、効率的な開発ができる)
“`
#MVCの

元記事を表示

VSCode で学ぶ define_method

# はじめに
https://qiita.com/superrino130/items/6e745547d398de82187c#comment-0933984d65fe6197b8b9

この記事のコメントで@kts_h さんに教えていただいた`define_method`を`VSCode`で理解する。
# define_method
“`ruby
def my_decorator(meth)
orig = method(meth)
define_method(meth) do |*args, **kwargs, &block|
puts “Calling decorated method”
orig.call(*args, **kwargs, &block)
end
end

def example
puts “Called decorated method”
end

my_decorator(:example)

example
“`
https://docs.ruby-lang.org

元記事を表示

[py2rb] namedtuple

# はじめに
移植やってます。
# namedtuple (Python)
“`python
Protein = namedtuple(‘Protein’, (‘description’, ‘sequence’))
“`
https://www.shoeisha.co.jp/book/detail/9784798163642

**独習Python**では、辞書やクラスでも代替できると書いてあります。
# Struct (Ruby)
“`ruby
Protein = Struct.new(:Protein, :description, :sequence)
p1 = Protein.new(‘abc’, ‘setumei’, ‘ATGC’)
puts p1.description
“`
https://qiita.com/jnchito/items/fb4ed2238ee3404b4403

**【初心者向け】順番に意味がある配列はハッシュに置き換えよう**に親切な解説があります。

ただし今回は、これだとp1.p2…p99とか大量発生しそうな気も
# Hash (Ruby

元記事を表示

Rails 7.0 のリリースノートまとめ

## はじめに
2021年9月15日、Rails 7 のアルファ版がリリースされました。
通常、Rails のアルファ版リリースは行わないのですが、フロントエンドに大きな変更が加わることによって、慎重に検証する必要があると判断したみたいです。

ちょうど社内で Rails 7 についてアウトプットする場があり、良い機会なので情報をまとめてみたいと思います。

## 1. フロント面のリニューアル
まず Webpacker が廃止され、フロント面がリニューアルされます。
ES6 / ESM のブラウザサポートの進歩、HTTP/2 の普及、importmap の新標準に対応するためです。
具体的には、Turbllinks と Rails UJS が Stimulus と Turbo の Hotwire コンビに置き換わります。
node_modules、bundler の設定に依存せず、フロントの開発にありがちな問題も発生しません。

また、Rails と JavaScript + CSS bundler の統合も劇的に改善されたそうです。
Rails の新しい JavaScript と

元記事を表示

【Ruby のまずいコード】リストにある文字列を抽出

# お題

テキスト中から,リストで与えられた文字列をすべて抽出することを考えます。
たとえば

“`txt:検索対象のテキスト(日本国憲法前文)
日本国民は、正当に選挙された国会における代表者を通じて行動し、われらとわれらの子孫のために、諸国民との協和による成果と、わが国全土にわたつて自由のもたらす恵沢を確保し、政府の行為によつて再び戦争の惨禍が起ることのないやうにすることを決意し、ここに主権が国民に存することを宣言し、この憲法を確定する。そもそも国政は、国民の厳粛な信託によるものであつて、その権威は国民に由来し、その権力は国民の代表者がこれを行使し、その福利は国民がこれを享受する。これは人類普遍の原理であり、この憲法は、かかる原理に基くものである。われらは、これに反する一切の憲法、法令及び詔勅を排除する。
日本国民は、恒久の平和を念願し、人間相互の関係を支配する崇高な理想を深く自覚するのであつて、平和を愛する諸国民の公正と信義に信頼して、われらの安全と生存を保持しようと決意した。われらは、平和を維持し、専制と隷従、圧迫と偏狭を地上から永遠に除去しようと努めてゐる国際社会において、

元記事を表示

最近追加されたrubocop規則を確認してみる?‍♀️?

最近追加されたrubocop規則を確認してみる?‍♀️?

## みんな大好きrubocop
みなさんrubocop?‍♀️?は好きですか?
新しい書き方や効率的な書き方が発見できるし
チームでコーディングスタイルを統一でき、レビューがストレスにならないので僕は良いgemだなと思っています

そんなrubocopですが日々アップデートされ新しい規則が増えています
[リリースノートはこちら](https://github.com/rubocop/rubocop/releases)

最近新しいプロジェクトで最新版のrubocopを入れて実行してみたのですが
Waringがたくさん表示されてびっくりしました

本日は新しいルールで怒られてしまった物を紹介しようと思います

## versionを0.92から1.23にして怒られていたもの

### Style::HashConversion (from 1.12.0)

“` ruby
# bad
Hash[ary]
# good
ary.to_h

# bad
Hash[key1, value1, key2, value2]
# g

元記事を表示

点字には法則がある!Rubyの点字メーカプログラム

ファイル名

この記事はアドベントカレンダー[Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念- Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ruby-challenge)の12/17の記事になります。

## はじめに

皆さん、点字って読めますか?
私は読めません。(でした)

点字とは視覚障害者が文字を読んだり、書いたりするために使う文字です。
エレベータ、電車の券売機、家電等あらゆる生活で見かけることがありますよね。

実はこの点字、ちょっとした法則があることに気づきました。
この記事では点字の法則を解説して、点字を出力するRubyの点字メーカプログラムについて紹介したいと思います。
Rubyのプログラムも

元記事を表示

【備忘録】モーダルで非同期投稿のできる簡単な日記アプリの作成(新規投稿、削除、編集)

![gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341484/7d3500e3-7ce0-e3ca-e436-bd5003d49eb5.gif)
実装環境
Rails 5.2.6
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]

#1.アプリの作成

任意の名前のアプリを作成

“`ruby:ターミナル
rails new sample(アプリ名)
“`

#2.Modelの作成

“`ruby:ターミナル
rails g Sample(モデル名) title:string content:text
“`

上記コマンドを実施後に次のファイルができていることを確認

“`ruby:YYYYMMDDXXXXXX_create_アプリ名
class CreateRecipes < ActiveRecord::Migration[5.2] def change create_t

元記事を表示

AWSでrailsを使うときの環境設定

AWSのCloud9で環境設定をする方法についてまとめました。
手っ取り早く環境設定したい人向けなので、コマンドの意味などは省略してあります。

#コマンド
“`
$echo “gem: –no-document” >> ~/.gemrc
“`

“`
$gem install rails -v 6.0.3
“`

“`
$gem install bundler -v 2.2.17
“`

これだけです。Cloud9を利用しているのでとても簡単に環境構築ができますね。
あとは`rails new`を実行すればOKです。

“`
$rails _6.0.3_ new app_name
“`

元記事を表示

艦番号から艦名を調べるAPIを作ってみた

# はじめに

数ヶ月前に、職場の後輩が体調不良になりました。
部署は違えども心配になって聞いてみると、どうやら「いつまでも終わらない受託案件」に心が折れてしまったようでした。

私は良いアドバイスが出来るような立派な人間ではありませんし、このコロナ禍のご時世だとランチに誘うことも憚られます。
それでも自分なりに何か出来るのではないかと色々と考えてみた結果、後輩の好きな海上自衛隊の艦船に絡めたプログラムを作ろうと思い立ちました。

# 仕様

* パラメーターとして艦番号を渡すと、その艦番号に該当する艦名などの情報を返すAPIです。
* 私の実力だとこの程度が限界です…
* APIの仕様はいたって単純で、使えるパラメーターは艦番号を示す`code`ただ1つです。

`https://{APIのドメイン}?code={艦番号}`

* 返却されるデータはJSON形式で、以下のように単純な構造となっています。

“`json:レスポンスのJSONの例
{
“code”: “183”,
“name”: “いずも”,
“class”: “「いずも」型”,
“hullCode”:

元記事を表示

点字メーカープログラムの動画レビュー Part 3 – Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念-

## この記事は何?
Qiita Advent Calendar 2021「Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念-」で投稿してもらったコードを出題者である僕、伊藤淳一が動画でコードレビューしてみました。この記事はその第3回です。

https://qiita.com/advent-calendar/2021/ruby-challenge

第1回と第2回のレビュー動画はこちらです。

https://qiita.com/jnchito/items/26e8bd7c635e3d32e620

https://qiita.com/jnchito/items/d5f71c9ad90f2890647e

### アドベントカレンダー参加者のみなさんへ

ネタバレになってしまうので、自分の投稿が完了するまでこちらの記事(動画)は見ないようにお願いします〜 :pray:

### レビュー対象の記事はこちら!

今回レビューさせてもらったのは以下の11日目から15日目の記事です。投稿してくれたみなさん、どうもありがとうございました!

@universato さ

元記事を表示

[Rails]Cookieとセッションの違い

#はじめに
現在プログラミングスクールに通っています。
就活を始めるにあたって質問されそうなことを言語化しておきたく自分なりにまとめました。

“`
① 簡単な説明
② 1行に要約する
③ 3行に要約する
“`

#Cookieとは

WebサーバーがクライアントPC(クライアントサイド)に預けておく小さなファイルのことです。
クライアントPCが、あるWebサーバーに初めて接続した際に、Webサーバー(サーバーサイド)がクライアントPCの中に、そのWebサーバー専用のCookieファイルを作成します。

クライアントPCがWebサーバーに接続したときには、WebブラウザがそのCookieをWebサーバーに送信します。このような仕組みによって、Webサーバーは、個々のクライアントコンピュータが前回使用していた情報を読み取ることができるようになります。

###Cookieには、Webサーバーによってどのような情報でも格納できる
**例**
・ユーザー名などの接続情報
・ショッピングサイトなどで購入する商品を一時的に保管する“買い物かご”の情報
・氏名や住所、電話番号などの一度登録し

元記事を表示

病院なび AMP化への道

事の発端はGoogleが「2021年6月からCWV(コアウェブバイタル)の評価をランキングシステムに導入する」とアナウンスしたことでした。そのアナウンスにより「病院なび[^1]」でもCWVの向上が優先課題として上がり、その解決策として、病院なびのAMP化を実施致しました。

この記事では、なぜAMPにしたのか、AMPへの切り替えを、どのように進めたのかを記します。
(病院なびではRailsを使っているので、RailsでのAMP化方法となります)

[^1]: 「病院なび」は、全国23万件以上の医療機関・薬局・薬店を検索できる医療機関検索サイトです。https://byoinnavi.jp

# なぜAMP?
まず、AMP(Accelerated Mobile Pages)」とは、Googleが推進しているコンテンツを高速に表示されるための手法で、CWVに優れています。が、その分、制限も多いです。

> AMP はウェブサイトを高速かつユーザーファーストにし、収益化するシンプルかつ堅牢なフォーマットです。AMP は一般的なプラットフォームへの配布を実現し、運用コストと開発コストを削

元記事を表示

OTHERカテゴリの最新記事