Rails

【Rails】Railsでよく使う%記法まとめ(%i, %I, %w, %W, %q, %Q, %s, %x, %r)

Rails

 

今回はRailsでよく使用する%記法(パーセント記法)についてまとめたので紹介したいと思います。%記法を使用すると記述量を減らすことができるため、使用できる箇所では積極的に用いることをおすすめします。

%記法まとめ

%i(小文字)

%i(小文字)は要素がシンボルの配列を書くことができる記法になります。

%i[apple banana kiwi peach orange]
=> [:apple, :banana, :kiwi, :peach, :orange]

 

ストロングパラメータを記述する際などに使えそうです。

# %iを使用しない場合
params.permit(:apple, :banana, :kiwi, :peach, :orange)

# %iを使用した場合
params.permit(%i[apple banana kiwi peach orange])

%I(大文字)

%i(小文字)と同じくシンボルの配列を作成しますが、%I(大文字)はそれに加えて式展開を行うという特徴を持ちます。

red_fruits = "apple"

%I[#{red_fruits} banana kiwi peach orange]
=> [:apple, :banana, :kiwi, :peach, :orange]

 

%i(小文字)との違いを見比べると以下のようになります。

# %i(小文字)の場合
red_fruits = "apple"
%i[#{red_fruits} banana kiwi peach orange]
=> [:"#{red_fruits}", :banana, :kiwi, :peach, :orange]

# %I(大文字)の場合
red_fruits = "apple"
%I[#{red_fruits} banana kiwi peach orange]
=> [:apple, :banana, :kiwi, :peach, :orange]

%w(小文字)

%w(小文字)は要素が文字列の配列を書くことができる記法になります。

%w[apple banana kiwi peach orange]
=> ["apple", "banana", "kiwi", "peach", "orange"]

 

色々な使い方がありますが、whereで複数検索をかける際などに使えそうです。

# %wを使用しない場合
Fruit.where(color: ["yellow", "green", "blue"])

# %wを使用した場合
Fruit.where(color: %w[yellow green blue])

%W(大文字)

%w(小文字)と同じく文字列の配列を作成しますが、%W(大文字)はそれに加えて式展開を行うという特徴を持ちます。

red_fruits = "apple"

%W[#{red_fruits} banana kiwi peach orange]
=> ["apple", "banana", "kiwi", "peach", "orange"]

 

%w(小文字)との違いを見比べると以下のようになります。

# %w(小文字)の場合
red_fruits = "apple"
%w[#{red_fruits} banana kiwi peach orange]
=> ["#{red_fruits}", "banana", "kiwi", "peach", "orange"]

# %W(大文字)の場合
red_fruits = "apple"
%W[#{red_fruits} banana kiwi peach orange]
=> ["apple", "banana", "kiwi", "peach", "orange"]

%q(小文字)

%q(小文字)は対象をシングルクォートで囲んでくれる記法になります。

fruits = %q(apple banana kiwi peach orange)
puts fruits
=> apple banana kiwi peach orange

 

シングルクォートで囲っているため式展開は行われません。

red_fruits = "apple"
fruits = %q("#{red_fruits}" banana kiwi peach orange)
puts fruits
=> "#{red_fruits}" banana kiwi peach orange

%Q(大文字)

%Q(大文字)は対象をダブルクォートで囲んでくれる記法になります。

fruits = %Q(apple banana kiwi peach orange)
puts fruits
=> apple banana kiwi peach orange

 

%で記述しても同等の結果が得られます。

fruits = %(apple banana kiwi peach orange)
puts fruits
=> apple banana kiwi peach orange

 

ダブルクォートで囲っているため、%q(小文字)と違い式展開が行われます。

# %q(小文字)の場合
red_fruits = "apple"
fruits = %q("#{red_fruits}" banana kiwi peach orange)
puts fruits
=> "#{red_fruits}" banana kiwi peach orange

# %Q(大文字)の場合
red_fruits = "apple"
fruits = %Q("#{red_fruits}" banana kiwi peach orange)
puts fruits
=> "apple" banana kiwi peach orange

%s

%sは対象をシンボルとして生成してくれる記法になります。

%s(RubyonRails)
=> :RubyonRails

%s(テスト)
=> :テスト

%x

%xは出力コマンドを実行してくれる記法になります。

# railsのバージョン確認
%x(rails -v)
=> "Rails 6.1.4.1"

# 明日の日時を表示
%x(date -d tomorrow)
=> "Fri Dec 10 00:37:43 JST 2021"

%r

%rは正規表現リテラルである/を省略できる記法です。

%r(test)
=> /test/

%r(test test)
=> /test test/

 

URLの正規表現を記述する際に使えそうです。

# %rを使用しない場合
/https:\/\/techtechmedia.com\//

# %rを使用した場合
%r(https://techtechmedia.com/)

参考

Ruby 3.0.0 リファレンスマニュアル

 

 

今回はRailsでよく使用する%記法(パーセント記法)について紹介しました。記述量を減らすことができるため、%記法を導入できそうな箇所ではぜひ使ってみてください。