Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

Rubyは短く読みやすいプログラムが書けるスクリプト言語ですが、演算子をうまく組み合わせることで、よりRubyらしいプログラムを書くことが可能です。Rubyのプログラミングスキルをアップしたいなら、演算子をうまく活用するスキルの習得が欠かせません。またRubyの初心者も、ぜひそのような演算子を活用したプログラムを読めるようになりましょう。

今回はRubyの演算子の中でも難しいと感じられる演算子を中心に、その使い方について解説します。

Rubyの演算子は難しい


プログラムとはコンピュータのCPU向けの命令を人が読み易くしたものです。実際にCPUがやっているのは演算ですが、足し算や掛け算だけをやっている訳ではありません。いろいろな演算機能が組み込まれており、Rubyをはじめとするプログラミング言語の多くがその演算機能を組み合わせをプログラムで実現しています。

なかでもRubyは演算子の種類が多く、中には使うのが難しいと感じる方もいるでしょう。次から、なぜRubyの演算子が難しいと感じるかについて紹介します。

種類が多い

Rubyの演算子が難しい原因として、まず挙げられる理由がその種類の多さです。試しに公式サイトで演算子の一覧を探してみてください。一口に演算子と言っても数字の計算に使う演算子や、if文で使う比較演算子など、その目的毎に多くの演算子が用意されています。そのため、全て集めるとかなり多いと感じられるかもしれません。

さらにRubyでは文字列や数字などのクラスにメソッドが用意されており、そのようなメソッドの中には演算子のように使えるものもあります。また、オブジェクト指向のプログラミング言語特有の演算子などもあるので、Rubyにおけるオブジェクトの使い方をまだよく知らない方にとっては、難しいと感じるでしょう。

短いプログラムを書ける工夫

Rubyは短く読みやすいプログラムが書けるプログラミング言語です。そして、短く書ける理由はいろいろありますが、別の方法でも書けるものの、演算子を使うことで短く書けることが多い点も理由の1つです。

例えばif文でも書ける内容を、三項演算子で記述できればより短いプログラムで記述できます。さらにメソッドを組み合わせれば、数行かかるような処理を1行で書くことも可能です。

このような短く書ける方法を知っていると、Rubyらしい短く読み易いプログラムが書けるので、ぜひ、使い方を学んでください。

正規表現が使える

Rubyの特徴の1つとして、プログラムの中に正規表現を埋め込める点が挙げられます。なお正規表現とは、記号を組み合わせて条件に一致する文字列のパターンを表現する方法で、文字列の検索や一致確認などに使われる機能です。

なお正規表現は多くのプログラミング言語でサポートされており、大抵は専用の関数で使って利用します。その点Rubyなら、正規表現用の演算子を使うことでプログラムのソースコードへの埋め込みが可能です。そして正規表現を使うことで複雑な表現をシンプルに表現したRubyらしいプログラムを作れます。

しかしプログラミング初心者にとって、正規表現そのものを扱うのが大変です。そのため、正規表現と演算子の組み合わせを見ると難しいと感じてしまいます。

Rubyの演算子の注意点


短いプログラムが書けるRubyなら、変数と演算子を組み合わせるだけで簡単な処理を作ることが可能です。しかし、演算子にはそれが評価される順序が決まっており、その順序を知らずにプログラムを書いてしまうと、意図したとおりに動作しないこともあります。

次から演算子の評価順序など、Rubyの演算子の注意点を紹介します。

演算子には評価順序がある

先ほど紹介したようにRubyでは演算子の評価順序が決まっています。演算子を組み合わせたプログラムを作る場合は、評価順序に注意してください。

例えば算術演算子を使う場合、足す(+)や引く(-)といっしょにかける(*)や割る(/)を使う場合、かける(*)や割る(/)を先に計算します。またif構文の条件を演算子の組み合わせで作る場合、>や<よりも、否定を意味する!が優先させるなどです。

このような例は簡単ですが、Rubyでは論理和と論理積として、&&と||の他にandとorも使えます。しかしそれらの評価順序は違っており、組み合わせによっては論理が変わってしまうので注意が必要です。

演算子を組み合わせたプログラムを作る場合は、公式のマニュアルなどを参照し、演算子の優先順位をチェックするようにしましょう。

ポテパンダの一言メモ

公式マニュアルの演算子式のページ
演算子式 (Ruby 3.1 リファレンスマニュアル)

代入の非破壊的と破壊的の違い

Rubyでは文字列の連結を演算子で行えます。ただし、非破壊的結合と破壊的結合とがあるので、利用する際には注意してください。具体的には、2つの文字列を+演算子で結合した場合、結合された文字列を格納した新たなオブジェクトが作られます。これが非破壊的結合です。

非破壊的な結合の例

str1 = "ポテパン"
str2 = "スタイル"
out = str1 + str2 # "ポテパンスタイル"という新しいオブジェクトoutが作られます

一方、破壊的結合には<<演算子を使い、<<の左側の文字列を、右側の文字列を連結した文字列に書き換えます。

破壊的な結合の例

str1 = "ポテパン"
str2 = "スタイル"
str1 << str1  # str1の内容が"ポテパン"から"ポテパンスタイル"に書き換えられる

変わった比較演算子

if文などでよく使われる比較演算子ですが、他のプログラミング言語でも使える「==、!=、<、>、<=、>=」の他に、Rubyでは===演算子と演算子も使えます。

===演算子とは主にcase文で使われるオブジェクトの同等性をチェックする演算子です。機能は==演算子と同じですが、ゆるいチェックで評価してしまうので通常は==演算子を使ってください。

演算子は比較した結果によって-1,0,1を返す演算子です。他の比較演算子はtrueまたはfalseを返すので主にif文で使われますが、演算子は配列クラスのsortメソッドでよく利用されます。

演算子を使った例

ary.sort{|a, b| a.to_i  b.to_i 

この例では、配列オブジェクトaryに対してsortメソッドを用い、要素を数値とみなし、2つの要素を演算子で比較して並び替えています。

正規表現演算子の使い方

Rubyでは、プログラムの中にスラッシュ(/)で正規表現の文字列を囲むことで、正規表現を利用することが可能です。そして、スラッシュ(/)で囲った正規表現で文字列を評価する際に、=~演算子または!~演算子を使います。なお、=~演算子は正規表現とマッチするのをチェックする演算子で、!~演算子は正規表現とマッチしないのをチェックする演算子です。

正規表現演算子の例

if /^regex/ =~ strs then  # 正規表現とマッチするのをチェック

if /^regex/ !~ strs then # 正規表現とマッチしないのをチェック

Rubyのプログラムで正規表現を使う場合、上記の例のようにスラッシュ(/)で直接指定もできますが、Regexpクラスを用いると、文字列からスラッシュ(/)で囲った正規表現を作ることも可能です。

Regexpクラスを用いた例

reg_string = "^regex"
reg = Regexp.new(reg_string)
if reg =~ strs then
  puts "OK"
end

インクリメント演算子は無い


Rubyの演算子には、++や–といったインクリメント演算子が用意されていません。なお、インクリメント演算子とは、変数に続けて++や–を記述することで、その変数の値に1を加える演算子です。例えば、C言語では次のように記述します。

i++;

インクリメント演算子は無い理由とは、Rubyのプログラムで使われる変数は全てオブジェクトのためです。具体的にはC言語では、変数に1を加えるとは、変数に格納さえれた値に1を加えることです。しかしRubyの変数はオブジェクトのため、C言語のようなことはできません。

同じ処理を作りたい場合は、一旦数字として値を算出し、それを変数に代入することによってオブジェクトに格納させる、という処理を作ります。そしてこの処理は、+=演算子で実現可能です。

Rubyで実現できるインクリメントの例

i += 1

まとめ


これまで紹介したようにRubyには多くの演算子があり、それらを組み合わせることでRubyらしい短いプログラムを作れます。しかし演算子の中にはRuby特有のものもあり、全ての演算子を使いこなすのは大変です。今回紹介したポイントに注意して、Rubyのプログラムで演算子を使えるようになってください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。