.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. Ruby
  5. Rubyの範囲オブジェクトとは?繰り返しや比較など使い方を解説

Rubyの範囲オブジェクトとは?繰り返しや比較など使い方を解説

  • Ruby
  • プログラミング言語
公開日時:   更新日時:
Rubyの範囲オブジェクトとは?繰り返しや比較など使い方を解説
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>

    システム
    エンジニア
    Rubyのコードで日付を指定通りに扱う方法はありますか。

    プロジェクト
    マネージャー
    数値や日付を扱うときには、範囲オブジェクトを使ってみましょう。

    そもそもオブジェクトとは


    オブジェクトとは、オブジェクト指向という言葉で頻繁に利用される言葉です。

    オブジェクト指向というのは、共通点や関連性があるデータやメソッドをまとめて管理して行う管理手法です。操作対象に重きを置いた設計のことをオブジェクト指向言語と呼び、Rubyはオブジェクト指向言語です。

    今はオブジェクト指向言語が主流なので、Rubyを学んでおいて損はありません。

    Rubyの範囲オブジェクトについて

    Rubyにおける範囲オブジェクトとは、最初の値と最後の値の範囲を示すものです。範囲は数値の範囲から文字の範囲、日付の範囲などを指定できます。

    範囲オブジェクトを指定する場合は、Range.new もしくは「..」、「…」という範囲式を使用することで簡単に連続する値が作成できます。「..」の場合は終端を含みますが「…」の場合は終端を含まないという違いがあります。

    範囲オブジェクトが使われるケース

    順番に値を取得する場合や、値が範囲内に含まれているかどうかの確認などに利用されます。

    for文による繰り返し処理にも使用可能で、例えば

    を実行することで

    という結果が得られます。

    Rubyの範囲オブジェクトの使い方


    ここからはRubyの範囲オブジェクトの具体的な使い方を紹介します。範囲オブジェクトの作成や範囲オブジェクトの繰り返し処理、範囲オブジェクトの要素数、範囲オブジェクトの比較について説明します。

    コード例も載せているので、自分で実際に書いてみて学んでいきましょう。

    範囲オブジェクトの作成(..)

    Rubyの範囲オブジェクトは「first..last」で作成できます。firstは範囲開始値、lastは範囲終了値で、firstからlastまでの値の範囲を表します。また、firstとlastは大小の比較ができるものでなければなりません。そのため、数値・文字・日付の範囲などを扱えます。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    Rubyに正しく認識されていることが分かります。

    また、範囲オブジェクトは「…」でも作成できます。
    この場合、lastはオブジェクトに含みません。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    このように、Rubyの範囲オブジェクトは「..」または「…」で作成できます。

    範囲オブジェクトの作成(new)

    Rubyの範囲オブジェクトは、Rangeクラスの「new」メソッドで作成できます。
    以下のように記述します。
    Range.new(first, last[, exclude_end])

    exclude_endは、範囲にlastを含むか否かを指定する引数で、省略できます。
    ・true : lastを含まない
    ・false : lastを含む
    省略した場合は、falseと同じです。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    このように、Rubyの範囲オブジェクトはRange.new()でも作成できます。

    範囲オブジェクトの繰り返し処理(each)

    範囲オブジェクトは、each文で繰り返し処理ができます。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    このように、each文で繰り返し処理ができます。
    また、eachの代わりにreverse_eachを使用すると、逆順に繰り返し処理ができます。

    範囲オブジェクトの繰り返し処理(for)

    範囲オブジェクトは、for文で繰り返し処理ができます。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    exclude_endにtrueを指定しているので、lastが含まれていないことが分かります。このように、for文で繰り返し処理ができます。

    範囲オブジェクトの要素数(size)

    範囲オブジェクトの要素数は、sizeメソッドで取得できます。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    sizeメソッドはfirst、lastのいずれかのオブジェクトがNumericクラスのオブジェクトではない場合、nilを返します。そのため、range1~range3の要素数のみが出力されます。

    範囲オブジェクトの比較(include?)

    範囲オブジェクトに要素が含まれているか否か、include?で比較できます。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    このように、範囲オブジェクトに要素が含まれているか否か、include?で比較できます。

    数値・文字・日付のどれにでも適用可能

    Rubyのinclude?メソッドは数値、文字、日付のどのRangeオブジェクトでも適用可能です。

    例えば、数値のRangeオブジェクトにinclude?メソッドを利用した場合、

    こちらの実行結果は

    となります。また、日付のRangeオブジェクトにinclude?メソッドを利用した場合のコード例は、

    で、実行すると

    という結果で出力されます。

    範囲オブジェクトの比較(===)

    範囲オブジェクトに要素が含まれているか否か、「===」でも比較できます。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    このように、範囲オブジェクトに要素が含まれているか否か、「===」でも比較できます。

    Rubyの範囲オブジェクトで覚えておくと便利なもの2選


    Rubyの範囲オブジェクトで覚えておくと便利なものが2つあります。日付の作成方法とsuccメソッドについて紹介します。

    具体的なコードも紹介しているので、ぜひ自分で書いて学んでみてください。

    1:日付の作成方法

    Rubyの範囲オブジェクトを扱うことで、連番の日付が生成できます。

    例えば2021-06-01から2021-06-10まで生成したい場合、

    で実行結果が

    となります。

    2:succメソッド

    Rubyで使用できるsuccメソッドは、指定した整数や文字列の次に当たる整数や文字列を返すメソッドです。

    例えば、”a”..”g”というRubyの範囲オブジェクトを作成している状態で

    を実行すると

    という出力結果が得られます。

    システム
    エンジニア
    範囲オブジェクトで指定すれば、日付を数字の順に並べることも可能になるのですね。

    プロジェクト
    マネージャー
    範囲オブジェクトの繰り返しを処理など、ソースコードを参考にして活用しましょう。

    Rubyの範囲オブジェクトを理解しよう


    Rubyの範囲オブジェクト(Rangeオブジェクト)は、範囲を表すためのオブジェクトで、その作成方法や扱い方について説明しましたが、いかがでしたでしょうか。

    作成した範囲オブジェクトに対して、繰り返し処理や検索処理ができます。ぜひご自身でソースコードを書いて、Rubyについて理解を深めてください。

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    Ruby新着案件New Job