Ruby関連のことを調べてみた2022年02月07日

Ruby関連のことを調べてみた2022年02月07日

[py2rb] Pandas.DataFrame

# はじめに
移植やってます。
( from python 3.7 to ruby 2.7 )
# pandas (Python)
“`python
import pandas as pd

val = [[1,2,3],[4,5,6],[7,8,9]]
df = pd.DataFrame.new(val, index=[0,2,4], colums=[‘d’,’e’,’f’])

print(df)
print(df.loc[2])
print(df.iloc[2])
print(df[‘e’])
“`
https://www.shoeisha.co.jp/book/detail/9784798160672

現場で使える!pandasデータ前処理入門 機械学習・データサイエンスで役立つ前処理手法 – 148p
# どうすRuby
“`ruby
require ‘pandas’

val = [[1,2,3],[4,5,6],[7,8,9]]
df = Pandas.DataFrame.new(val, index=[0,2,4], colums=[‘d’,’e’,’f’])

元記事を表示

sprintfフォーマットの解説

##そもそもフォーマットとは?
フォーマットとは書式のことです。つまり、文字列や数値をどんな形式で表示させるかというのをきめるんです。
具体例を見ていきましょう

“`
n = 10
sprintf(‘%f’, n)
=> “10.000000”
“`
指示子に、%fをいれると、浮動小数点数(float)を出力します。他にも指示子があるので、[こちらの記事](https://k-koh.hatenablog.com/entry/2019/12/16/105428)を参考にしてみてください

##実際に問題を解いてみましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485775/15264d1a-91d7-e9ec-90bf-15fd1cd88349.png)

問題で出されているコードでは、% 5とあります。これは、指示子ではないので、% 5は無視されます。
そのため、表示されるのは、Helloと表示されるため、選択肢➁が正解です。

###選択肢➂
これは先ほどの説明から不

元記事を表示

Ruby on Rails チュートリアル第1章をやってみて 

#自己紹介
はじめまして。

  
現在情報系の大学2年生で、とある会社で長期インターンをさせてもらえることになりました。プログラミングに関しては、CやPythonなどの基本を触ったことがある程度で、自分で何かを作るなどは特にやったことがないです。
      
  
一応、大学の授業でCSをやったり、去年応用情報を受けたりはしたので(不合格)、簡単な知識はあります。将来の目標としては、ドイツの大学院を出て、ドイツで働けたらなあとは思っております。

今回はインターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。

■第1章
Railsチュートリアルの流れとしては、実際にWebアプリケーションを開発する流れのよう。章を追っていくほど、機能を増やした物を作れるそうだ。面白そう。

  
RubyやRailsさらに必要なツールをすべてインストールするには、ベテランであっても苦労するそう。たしかに、自分で何かインストールする時、サイトによりけりで結構困るイメージ。
  
##実践していく
Rails

元記事を表示

Kernel#loadは何をしているのか

# loadの使い所ってどこなの?

いろいろあって気づいたら年が明けてしまいましたが、Ruby3.1出ています。
関連記事でもいろいろと紹介されている通り、irbやデバッガ周り、ハッシュの省略記法などが入ってますね!

遅ればせながら[プロと読み解く Ruby3.1 NEWS](https://techlife.cookpad.com/entry/2021/12/25/220002)を見ている時に、ふとこの仕様が目に止まりました。

> Kernel#loadの第二引数で任意のモジュールを指定できるようになった
>
> Kernel#load now accepts a module as the second argument, and will load the file using the given module as the top-level module. [Feature #6210]

へえ、このオプション、なぜloadだけに入ってrequireには入らないのだろう?
そもそもどういうユースケースのために作られた機能なの?

そんな疑問をかかえながら、動作を確認し

元記事を表示

自作アプリを作る アカウント有効化のメール送信

Userのメイラーを追加します。
このメイラーはUsersコントローラのcreateアクションで有効化リンクをメール送信するために使います。

“`
ubuntu:~/environment/my_app (account-activation) $ rails generate mailer UserMailer account_activation password_reset
Running via Spring preloader in process 12921
create app/mailers/user_mailer.rb
invoke erb
create app/views/user_mailer
create app/views/user_mailer/account_activation.text.erb
create app/views/user_mailer/account_activation.html.erb
create app/views/user_

元記事を表示

Vue.jsとRailsでユーザ作成時の422 Unprocessable Entityエラー

# エラー内容
RailsとVue.jsプロジェクトで、ユーザ登録機能を実装した際
「422 Unprocessable Entity」 というエラーが発生し登録できなかった。

エラーメッセージを検索してみたけれど、原因詳細はなかなか探せず。。。
と思っていたところ、下記参考記事を見つけて解決できた。感謝!!

https://qiita.com/baby-0105/items/fd563733d2b6b810a4dc#:~:text=%E5%8E%9F%E5%9B%A0,-CSRF%E4%BF%9D%E8%AD%B7%E3%81%8C&text=%E3%81%93%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E6%80%92%E3%81%A3%E3%81%9F,%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A8%E8%80%83%E3%81%88%E3%82%89%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82

“`Ruby:渡したパラメータ
Started POST “/auth

元記事を表示

Railsの覚えておいた方がいいことを書いておく

## コマンドたち

– rails s 起動(WEBサーバpumaが立ち上がる)
– rails g controller users index コントローラーの作成
– rails g model user name:string age:integer モデルの作成
– rails db:migrate マイグレーションの実行
– rails dbconsole DB構成の確認
– rake routes URLの設定を確認することができる

## 言葉たち

– ERB htmlの中にRubyのコードを埋め込むことができる

## 仕様部分

– インスタンス変数(@)はViewからアクセスできる

元記事を表示

rubyでの正規表現問題の解説

rubyシルバーを勉強していくなかで、rubyの正規表現についてわからなかったので、解説していこうとおもいます。

今回は問題をもとにして、解説していこうとおもいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485775/73888b2b-db40-569c-ce28-830c28ad3642.png)

この問題を解く上で、必要になる知識が
➀破壊的メソッド
➁正規表現

##➀破壊的メソッド
破壊的メソッドとは、オブジェクト自体を変更してしまうメソッドのことです。
破壊的メソッドがあるなら、非破壊的メソッドもあります。
言われてもピンとこないとおもいますので、この2つを比較しながら実際にコードを見ていきましょう

“`
##非破壊的メソッド
string = ‘abcdefgh’
string.delete(‘a’)
=> “bcdefgh”
p string
=> “abcdefgh”

##破壊的メソッド
string = ‘abcdefgh’
string.de

元記事を表示

コードを書けない人が0からコードを書くための3ステップ

#今回の記事の想定
***⚫︎プログラミング学んだけど0からコードが書けない人***向けです。
下の動画をベースに記事を書いて行きます。

#参考動画
この動画をベースに描いて行きます。

#なぜ手が動かないか
理由は***いきなり大きなことをやろうとして何をしたらいか整理できていないことです***。

これを解決するためには?

1.“`日本語でやりたい処理を言語化“`

2.“`言葉にしたことをコードに置き換える“`

3.“`小さく動かす“`

上の3つができれば書けるようになるみたいです。

#実際のコードでやってみる
動画もRubyでやっていますが自分もRubyでやって行きます。
まず以下の前提でコードを書いて行きます。

“`rb

#次のFootball_playerクラス内にdataメソッドを追加し、期待する出力結果になるようにする
class Football

元記事を表示

キレイなMonkeypatchを書きましょう!(Gemの内容を別のGemでMonkeypatchした話)

# RubyのMonkeypatchとは?

身近な言葉のモンキー・パンチ、ではなく、パッチですね。
MonkeypatchはRubyでクラス・モジュールを開いて、その一部・もしくは全部を書き換えるということです。
Rubyの最大の魅力点でもありながら、あまりやらない方がいいとも言われています。

実はRailsに入っているActiveSupportというものがあって、その中にはMonkeypatchがいっぱい集まっています。
Twitter上でこれがいいことかどうかについて時々炎上しています。

### Stringクラスで簡単な例

“`ruby
class String
def neko
replace “cat”
end
end
cat = “neko”
cat.neko
cat
# => “cat”

module CatHelper
def neko
replace “neko”
end
end

String.prepend CatHelper
cat = “neko”
cat.neko
cat
# => “neko”

# String

元記事を表示

更に Ruby で pagepank をやってみた

# はじめに
https://qiita.com/superrino130/items/e3fb622718f0e4c2cf1c

前回の記事を投稿後、Ruby版networkxがあったので、更にやってみた。

https://rubygems.org/gems/networkx/versions/0.1.0?locale=ja
# 問題の整理[再掲]
ノード数`N`の有向グラフがある。
高橋くんはノード1からスタートして100回ランダムな遷移を行います。
遷移後、高橋くんがどのノードにいるかを答えてください。

“`
入力
N M
A1 B1
.
.
.
Am Bm
“`
“`
入力例
5 7
1 2
1 3
2 4
3 4
3 5
4 5
5 1
“`
# Ruby版networkx
“`ruby
require_relative ‘./networkx_graph’
require_relative ‘./networkx_pagerank’

n, m = gets.split.map(&:to_i)
g = NetworkX::Graph.new
m.times d

元記事を表示

三項演算子で条件式が複数あるとき

##そもそも三項演算子とは?
if文が複数行にわたるとき、一行でそれを記述できるのが三項演算子です。

“`
条件式 A ? Aがtrueのときに出力する値: Aがfalseのときに出力する値;
“`
が基本形です。実際に具体例を見ていきましょう。

“`
a = 10
a > 10 ? ‘hoge’: ‘fuga’;
=> “fuga”
“`
aには10が格納されます。これは10より大きくはないので、falseです。つまり、fugaが出力されます。

これをif文で書くとどうなるでしょうか?

“`
a = 10
if a > 10
puts ‘hoge’
else
puts ‘fuga’
end
=> “fuga”
“`
このように6行で書かれるものが、2行で書けるというのが三項演算子のスゴイところですね。

##三項演算子の条件に複数あった場合はどうすればよいのか?
以下のようなコードがあるんです。

“`
a = 条件式1 ? 条件式2 ? “A” : “B” : “C”;
“`
このとき、以下の表にまとめたものが役に立ちます。

| 条件式1 | 条

元記事を表示

integerを足し引きする方法【Rails】

レコードの値を足し引きするmethodを紹介します

テーブル構造

“`rb
create_table :tests do |t|
t.integer :score
end
“`

### increment(足す)

“`rb
Test.first.score
-> 50

# 50に20を足す
Test.first.increment(:score, 20)

Test.first.score
-> 70
“`

## decrement(引く)

“`rb
Test.first.score
-> 50

# 50から20引く
Test.first.decrement(:score, 20)

Test.first.score
-> 30
“`

## まとめ
足す時は`increment` 引く時は`decrement`です
便利なmethodなので使う時があったら参考にしてみてください〜

元記事を表示

paizaレベルアップ問題を紐解く① 文字と整数の組のソート2 Ruby編

#はじめに
 現在積み上げ学習の一環として、paizaのレベルアップ問題に取り組んでいます。
今回は、連想配列に対してソートをするという実装につまづいたので備忘録としてまとめて見ます。

#問題内容 
 問題内容は以下のとおりです。

**文字と整数の組のソート** 
「1行目に行数を表す整数 n、続く n 行の各行で「文字」と「整数」の組が空白区切りで入力されます。
n 個の組について、「文字」の値が同じ組同士の数値を足しあわせてまとめ、まとめた数値の降順で、文字とまとめた数値の組を出力してください。
この際、まとめた数値は重複しません。」

**入力例**
7
A 1
D 6
C 2
G 4
B 70
A 10
B 5

**出力例**
B 75
A 11
D 6
G 4
C 2

問題文は以上です。
簡単に要約すると
「入力された値を、降順で並べ替える。(同じ文字の場合は数値を加算する)」という問題です。

#つまづいてしまった要因
 今回つまづいてしまった大きな要因としては、連想配列について知識が足りていなかったからです。
具体的には
・連想配列についての知識(格納の仕方、加算

元記事を表示

僕も Ruby と Python で pagepank をやってみた

# はじめに
https://en.wikipedia.org/wiki/PageRank

上記URLにあります、PythonのコードをRubyでやってみようと思います。

“`python:result.py
M = np.array([[0, 0, 0, 0, 1],
[0.5, 0, 0, 0, 0],
[0.5, 0, 0, 0, 0],
[0, 1, 0.5, 0, 0],
[0, 0, 0.5, 1, 0]])
v = pagerank(M, 100, 1)
print(v)

# output
[[0.26658293]
[0.13322816]
[0.13322816]
[0.20009761]
[0.26686313]]
“`
ここでは、ダンピング・ファクターを`1`とします。
# 問題の整理(AtCoder風)
ノード数`N`の有向グラフがある。
高橋くんはノード1からスタートして100回ランダムな遷移を行います。
遷移後、高橋くんが

元記事を表示

【厳選】Railsで管理画面開発をする時のおすすめライブラリ集

管理画面をさくっとつくる場面が増えてきました。
その際に高頻度で使うおすすめのライブラリをまとめてみました。
なので、便利だけど管理画面に限らず使われるようなものは省略します。
正直、オススメ上位は超ド定番です。

# オススメ度: ★★★★★

## 【[ransack](https://github.com/activerecord-hackery/ransack)】 検索
検索を秒殺してくれるすぐれものです。有名すぎるので説明は不要ですが。。。
これ無しで検索をつくろうとすると、model層はかなり肥大化するのではないでしょうか。
まずは、ransackの機能で収まる範囲の検索をつくるのが吉だと思います。

https://github.com/activerecord-hackery/ransack

## 【[kaminari](https://github.com/kaminari/kaminari)】 ページネーション
ページネーションをviewも含め簡単に実装できます。
ransackを入れるなら迷わず入れておきましょう。
bootstrapなどのUIフレームワークに

元記事を表示

【Ruby】attr_accessorってなんや

#はじめに
物の本によると、「attr_accessor」とはインスタンス変数へのアクセスを可能にするメソッドだそうです。
いまいちピンとこなかったので、順を追って復習しました。
ちなみに「attr」は「attributive」という単語の短縮系のようです。
意味は「属性」や「性質」といった感じです。

# インスタンス変数とは
そもそもの話です。
インスタンス変数とは、クラス内の全メソッドで共有できる変数のことです。
変数名に「@」をつけます。
原則として、クラスの外から操作することはできません。

“`rb
#インスタンス変数は外部から呼び出せない
class User
def initialize(name) #インスタンス変数を定義
@name = name
end
end

user = User.new(‘taro’)
p user.name
# => undefined method ‘name’
“`

外部から呼び出すには、呼び出すためだけのアクセサメソッドを作る必要があります。

“`ruby
class User
def initiali

元記事を表示

&& || & |の使い方

##よく使われる&&と||の違い
この2つの違いは右辺が実行されるかどうかが重要なんです。
まず、&&演算子は左辺がtrueのとき、右辺が実行されるんです。
対して、||演算子は左辺がtrueのとき、右辺は実行されないんです。

そして、最後に実行されたコードの値を返すんです
論より証拠ということで、実例を見ていきましょう

##具体例

###&&

“`
If user_signed_in? && user.name == hoge
puts “fuga”
end
“`

このコードでは&&が使われています。先ほども述べたように、&&は左辺がtrueなら右辺を実行します。

このコードでいえば、ユーザーがログイン中であるなら、左辺のuserインスタンスのnameがhogeであるかを調べるんです

そしてuser.name == hogeがfalseなら、falseが返ってきて、trueならfugaが返ってくるんです

user_signed_in?がfalseなら右辺のコードは実行されません

###||

“`
If user_signed_in? || user.nam

元記事を表示

[py2rb] Ruby#Array -> Python#Tuple

# はじめに
移植やってます。
( from python 3.7 to ruby 2.7 )
# どうすRuby
`Ruby`の配列から、`Numpy.array`を作成します。

“`ruby
dtype = [[‘score’, Numpy.int8], [‘label’, Numpy.str_, 1], [‘pep’, Numpy.float64], [‘is decoy’, Numpy.bool_]]
psms_ = Numpy.array(PSMS.map{ |s, l, p| [s, l, p, @is_decoy.call([s, l, p])] }, dtype: dtype)

# error
RuntimeError: Wrapped undumpable exception for: PyCall::PyError: : Field elements must be 2- or 3-tuples, got ‘[‘score’, ]’
“`
`tuble`で渡せと。

https:/

元記事を表示

[個人開発]コンビニ食品でダイエットできるサービスを作りました

# はじめに
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702672/fd55a232-b978-65d5-0c31-fdc63d675a6d.png)

普段みなさんはどれぐらいコンビニを利用しますか?
[ある統計](https://vropencafe.video-research.jp/figures/figureofmonth-29.html)では、1ヶ月に1回以上コンビニを利用する人は94.6%という結果が出ていました。

最近は「たんぱく質が摂れる」といった、健康志向の高まりに合わせた食品が出ている印象を受けますね
中には、**「たんぱく質が摂れる食品を選べば痩せられる!」**という人もいるでしょう
 

ただ、みなさんご自身に適した摂取カロリーはご存知ですか?
健康的な食品を選択しても、ご自身のカロリーを上回る量を摂取していたら台無しです
 
 
そこで、**Macro Store(マクロストア)**というサービスを開発しました。
**※スマートフォン推奨**

ht

元記事を表示

OTHERカテゴリの最新記事