Ruby

Gemfile に書く require: false とは何か

久しぶりに Rails アプリを1から作るにあたり、Rubocop を導入しようとしたらいろいろと疑問が出てきたので調べた。 Rails アプリに Rubocop を入れる文脈で、こんな書き方をよく見かける。 Gemfile gem 'rubocop', require: false gem 'rubocop-rails', req…

Ruby paizaレベルアップ問題集(文字と整数の組のソート2-4)

paizaラーニング(初心者〜中級者向けのプログラミング学習サービス)の問題集をやってみる。 paiza.jp 共通ルール 入力 入力値最終行の末尾に改行が1つ入ります。 文字列は標準入力から渡されます。 出力 最後は改行し、余計な文字、空行を含んではいけま…

命名規則(キャメルケースとかケバブケースとか)

Vue.js の勉強を始めたら、キャメルケースとスネークケース以外にもいろいろな表記ルールがあることを知ったのでまとめておく。 変数名などに複数の単語を組み合わせた名前をつけたいとき、変数名には基本的にスペースを入れられないので、単語の区切りを何…

Ruby tally と dig

先日やった問題で、もっといいやり方を教えてもらったのでやってみる。 masuyama13.hatenablog.com 3. 配列(リスト)の重複カウント (paizaランク D 相当) 指定された配列(リスト)の定義の中で、同じ要素の数をカウントして、その数を出力してください。 …

Ruby paizaレベルアップ問題集(文字と整数の組のソート2-3)

paizaラーニング(初心者〜中級者向けのプログラミング学習サービス)の問題集をやってみる。 paiza.jp 共通ルール 入力 入力値最終行の末尾に改行が1つ入ります。 文字列は標準入力から渡されます。 出力 最後は改行し、余計な文字、空行を含んではいけま…

Ruby paizaレベルアップ問題集(文字と整数の組のソート2-2)

paizaラーニング(初心者〜中級者向けのプログラミング学習サービス)の問題集をやってみる。 paiza.jp 共通ルール 入力 入力値最終行の末尾に改行が1つ入ります。 文字列は標準入力から渡されます。 出力 最後は改行し、余計な文字、空行を含んではいけま…

Ruby paizaレベルアップ問題集(文字と整数の組のソート2-1)

paizaラーニング(初心者〜中級者向けのプログラミング学習サービス)の問題集をやってみる。 paiza.jp 共通ルール 入力 入力値最終行の末尾に改行が1つ入ります。 文字列は標準入力から渡されます。 出力 最後は改行し、余計な文字、空行を含んではいけま…

自作スクリプトをコマンドっぽく実行する

先日、簡単なスクリプトを作ってみた。これを、コマンドっぽく実行できるようにする方法。 Ruby 改行を削除するスクリプト - No Solution for Life 手順 ファイルに実行権限をつける ディレクトリを用意して PATH を通す 詳しいやり方 通常ファイルの実行方…

Ruby 改行を削除するスクリプト

AtCoder の問題文をコピー & ペーストすると、下のようになる。 整数 a , b , c , d が与えられます。 a ≤ x ≤ b , c ≤ y ≤ d を満たす整数 x , y について、 x × y の最大値はいくつですか。 B - Product Max 改行をいちいち削除するのが面倒なので、スクリ…

Ruby paizaレベルアップ問題集(文字列の出力2)

paizaラーニング(初心者〜中級者向けのプログラミング学習サービス)の問題集をやってみる。 Ruby paizaレベルアップ問題集(文字列の出力1) - No Solution for Life paiza.jp 共通ルール 入力 入力値最終行の末尾に改行が1つ入ります。 文字列は標準入力…

Ruby paizaレベルアップ問題集(文字列の出力1)

ハッシュの問題は終わったが、引き続きpaizaラーニング(初心者〜中級者向けのプログラミング学習サービス)の問題集をやってみることにした。 paiza.jp 共通ルール 入力 入力値最終行の末尾に改行が1つ入ります。 文字列は標準入力から渡されます。 出力 …

Ruby paizaレベルアップ問題集(ハッシュ4)

paizaラーニング(初心者〜中級者向けのプログラミング学習サービス)で、ハッシュを使いそうな問題を見つけたのでやってみる。 paiza.jp 以下の記事の続き。 Ruby paizaレベルアップ問題集(ハッシュ3) - No Solution for Life Ruby paizaレベルアップ問題…

Ruby paizaレベルアップ問題集(ハッシュ3)

paizaラーニング(初心者〜中級者向けのプログラミング学習サービス)で、ハッシュを使いそうな問題を見つけたのでやってみる。 paiza.jp 以下の記事の続き。 Ruby paizaレベルアップ問題集(ハッシュ2) - No Solution for Life Ruby paizaレベルアップ問題…

Ruby paizaレベルアップ問題集(ハッシュ2)

paizaラーニング(初心者〜中級者向けのプログラミング学習サービス)で、ハッシュを使いそうな問題を見つけたのでやってみる。 Ruby paizaレベルアップ問題集(ハッシュ1) - No Solution for Life の続き。 paiza.jp 共通ルール 入力 入力値最終行の末尾に…

Ruby paizaレベルアップ問題集(ハッシュ1)

paizaラーニング(初心者〜中級者向けのプログラミング学習サービス)で、ハッシュを使いそうな問題を見つけたのでやってみる。 paiza.jp 共通ルール 入力 入力値最終行の末尾に改行が1つ入ります。 文字列は標準入力から渡されます。 出力 最後は改行し、…

Ruby puts の返り値は nil

毎週日曜日に参加しているパーフェクトRails輪読会。9月6日に、gsubの話が出ていて、自分も頭が混乱したので、整理してみる。 第5回パRails輪読会ノート(2020-09-06) - HackMD String#gsub (Ruby 2.7.0 リファレンスマニュアル) gsubは、文字列を置き換える…

Ruby Array・Hash の練習問題(後半)

Ruby Array・Hash の練習問題(前半) - No Solution for Life の続き。後半の5問目〜8問目。 attracie.hatenablog.com Q5 [:a, :b, :c] # を [ { a: 1 }, { b: 2 }, { c: 3 } ] # に変換する 自分の解答 p [:a, :b, :c].map.with_index(1) { |s, i| { s => …

Ruby Array・Hash の練習問題(前半)

ハッシュを使う機会が少なく使いこなせる自信がないので、この前紹介してもらった練習問題をやってみる。 attracie.hatenablog.com Q1 { a: 1, b: 2, c: 3, d: 4 } # 上のHashから [:a, :b, :c, :d] # という結果を得てください。 自分の解答 hash = { a: 1,…

Ruby リファレンスマニュアルの読み方2(返り値)

Ruby リファレンスマニュアルの読み方1(メソッド) の続き。返り値について詳しく見ていく。 返り値の型 「bool」は真偽値 例)Integer#even? 「Array」か「[クラス名]」は配列 例1)Array#shuffle 例2)String#chars 例3)Integer#digits 「object」は任意…

Ruby リファレンスマニュアルの読み方1(メソッド)

https://www.ruby-lang.org/ja/documentation/ Ruby をやるなら一番お世話になるのが、公式ドキュメントである Ruby リファレンスマニュアル。愛称は「るりま(rurema)」。るりまを読むシリーズをブログで始めようかなと思っている。 docs.ruby-lang.org 日…

Ruby require と require_relative の違い

Gem やファイルを読み込むために使う require と require_relative。違いは以下の点だけかと思ったら、そこまで単純でもないらしい。 require はカレントディレクトリからのパス(絶対パス)で指定する require_relative は実行ファイルからのパス(相対パス…

Ruby 「true」と「真」、「false」と「偽」の違いを考える

これまで「true」と「真」、「false」と「偽」を特に区別せずに使うことが多かったが、たまにモヤモヤすることがあった。テストを書き始めてそこら辺が気になってきたので、この機会にはっきりさせてみることにした。 結論から言うとこういうこと(注:Ruby …

Ruby refute と assert_not の違いを調査

Rails のテストと Minitest を学習していて、refute と assert_not は同じものなのか違うものなのか気になったので調べてみた。 アサーション アサーション(assertion)とは、オブジェクトや式を評価して、期待された結果が得られるかどうかをチェックする…

Ruby test-unit でテストを書いてみる(FizzBuzz)

FizzBuzz 問題を題材に TDD(テスト駆動開発)を学んだので、実際に動画の流れに沿って、Ruby でテストを書いてみた。 (動画はこちら:TDD Boot Camp 2020 Online #1 基調講演/ライブコーディング - YouTube) Ruby 標準のテスティングフレームワークである…

Ruby %記法

%記法を使うと、要素の中にクォーテーション記号が入っている場合にエスケープせずに書けるなど、便利な場面がある。 基本的な書式 %w!文字列など! %w(文字列など) 要素を囲む記号は!以外に?や()、[]など英数字以外の記号を使うことができる。 種類 記号 文…

Ruby returnとexit

「オブジェクト指向の達人を目指す人のための公開ペアプロ会」(関連記事)で質問したreturnの話。 returnがいるのか? def メソッド if suica.balance < price return nil end def ... ... ... end こんな感じでメソッドの最初にif文があって、returnは必要…

RubyでJSONファイルを更新する

JSONファイルを更新するには、全てを読み込んで更新したデータを丸ごと上書きすることになる。追記や削除、一部変更というのはできない。 JSONの構造についてはこちらの記事。 JSONの読み込みについてはこちらの記事。 JSONファイルの更新手順 JSONファイル…

RubyでJSONを読み込む

RubyでJSONファイルを読み込む 値を取り出す ファイルではなくJSON文字列の場合 (6/16追記)普通にファイルを読み込んだらだめなのか JSONの構造についてはこちらの記事。 JSONファイルをRubyで読み込むには、JSONライブラリをrequireした上でJSON.load("fi…

Ruby よく発生するエラーと原因例

自分でプログラムを書いて実行してみると、想定と違って英文がずらずらと表示されることがある。エラーだ。最初はびっくりするが、発生したときにはそのメッセージを読むことで解消できることも多い。 エラーとその原因 よく発生するエラー(例外クラス)と…

Rubyファイルを実行する

以前irb(コマンドからRubyを動かす)だけ書いて、ファイルの実行方法を書いていなかった。 Rubyのファイルは、慣習として拡張子を.rbにする。 rubyコマンドで実行する Macのターミナルから実行するときは、rubyコマンドを使う。 例)$ ruby file.rb <hello.rb> puts "</hello.rb>…