【Ruby】配列のサイズを取得するメソッドの使い分け | length/size/count

みなさんこんにちは!

今回の記事は、

悩みを抱えた人
・Rubyで配列のサイズを取得したい
・いくつかメソッドがあるけど、どれを使えばいいの?
・length/size/countメソッドの違いが知りたい

というお悩みを解決する記事になっています。


この記事の内容

・length/size/countメソッドの使い方
・length/sizeメソッドとcountメソッドの違い
・length/sizeメソッドとcountメソッドの使い分け


傍楽たろう
なお、配列の便利なメソッドを用途別にもまとめてありますので、こちらもぜひ合わせてご覧になってくださいね。

>> 配列を初期化する方法
>> 配列に要素を追加する方法
>> 配列から要素を削除する方法
>> 配列の要素を検索する方法


レバテックフリーランス … 業界最大級の案件数業界トップクラスの高単価報酬を誇る最大手のサービスです。実績豊富なコーディネーターが丁寧な対応をしてくれるため、案件の無理な提案はありません。フリーランスで生きていくためにはまず登録しておきましょう。
MidWorks … フリーランス賠償責任保障生命保険の折半など、フリーランスでありながらも正社員並みの保障を受けられるのが特徴です。また、経験豊富なキャリアコンサルタントによる手厚いサポートも受けられるため、安定したフリーランス生活を送りたい方には特におすすめのサービスです。
ポテパンフリーランス … IT業界・技術に詳しいコンサルタントが担当してくれるため、こちらの要望をきちんと理解した上で案件を紹介してくれます。また、案件情報のみならず、フリーランスのイロハについても教えてくれるため、フリーランスとして初めて活動される方には特におすすめのサービスです。

レバテックキャリア … ITエンジニアが利用したい転職エージェントNo.1にも選ばれており、年収600万円以上のハイクラス求人を5,000件以上も保有しています。エンジニアが転職を考えた時にまず初めに登録しておくべきサービスです。
Tech Stars Agent … Tech Stars Agentでは、担当エージェントが全員エンジニア出身のため、スキルやキャリアを見据えたきめ細かな転職支援が受けられます。運営元の株式会社Branding Engineerは、独立支援サービス「MidWorks」も展開しているため、独立を視野に入れたサポートも受けられます
転職ドラフト … 年収UP率93.8%/平均年収UP額126万円と圧倒的な年収UP率を誇るイベント型のエンジニア向け 転職サービスです。毎月1回開催され、厳選された優良IT/Web系企業約150社からダイレクトスカウトを受け取ることができます。年収アップを目指す方は登録必須です。


配列とは

配列とは、任意のオブジェクトを複数まとめた上で、それらを同じように取り扱える/それらに対して同じ処理を加えられるようにしたオブジェクトです。

詳細については以下の記事にて詳しくご説明していますので、「まだ配列のイメージがイマイチ掴めていない…」という方はまずはこちらの記事からご覧くださいね。

おすすめ記事

今回は、Rubyの配列(Array)の基本的な使い方についてご紹介させていただきます。 Webアプリケーションを開発する中で、配列は必ずと言ってよいほど使用することとなるオブジェクトになります。 そのため、今回ご紹介する、基本[…]

プログラミングイメージ

Rubyで配列のサイズを調べるためのメソッドたち

今回ご紹介しようと思っているメソッドは、以下の3種類になります。

  • 1. lengthメソッド
  • 2. sizeメソッド
  • 3. countメソッド

それぞれの主な用途や使い方、そして具体例を交えながらご説明させていただきますね。

lengthメソッド

まずご紹介するのは、lengthメソッドです。

lengthメソッドは、その名の通り、配列の要素の数を返してくれます

irb(main):001:0> array = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):002:0> array.length
=> 5

今回使用しているのは、Arrayクラスのlengthメソッドですが、Stringクラスにもlengthメソッドは存在しています。

Stringクラスのlengthメソッドも使い方自体は全く同じで、文字列に対して呼び出すと、そのレシーバの文字数を返却してくれます。

irb(main):001:0> word = "傍楽ブログ"
irb(main):002:0> word.length
=> 5

同じメソッド名なので、クラスの違いについて意識することは少ないかもしれませんが、せっかくなのでこちらも覚えておきましょうね。

sizeメソッド

続いてご紹介するのは、sizeメソッドです。

こちらのsizeメソッドですが、なんと先述のlengthメソッドと全く同じ動きをします

irb(main):01:0> array = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):02:0> array.size
=> 5

両者はエイリアスの関係で中身は全く同じ実装になっていますので、使いやすい方を使っていく形で問題ありません(私的にはsizeの方がしっくりきます)。

また、lengthメソッドと同様に、Stringクラスにも実装されていますので、同じ使い方で文字列の長さを取得することも可能です。

irb(main):001:0> word = "傍楽ブログ"
irb(main):002:0> word.length
=> 5

countメソッド

最後にご紹介するのは、countメソッドです。

countメソッドは、これまでのlengthメソッド/sizeメソッドとは違って、引数やブロックを取ることができます。

ここからは、以下の3種類の使い方について順に解説していきます。

  • 引数を指定せず使用する
  • 引数を指定して使用する
  • ブロックを渡して使用する

引数を指定せず使用する

まずは、引数を指定せずにcountメソッドを使用する場合です。

こちらはlengthメソッドやsizeメソッドと同じで、引数を指定しなかった場合には、配列内の要素の数を返却してくれます。

irb(main):001:0> array = ["Ruby", "Rails", "Javascript", "Go", "PHP", "Ruby", "Java"]
irb(main):002:0> array.count
=> 7

引数を指定して使用する

続いては、引数を指定して使用する場合です。

引数を指定すると、その引数に合致した要素の数を返却してくれます。

irb(main):001:0> array = ["Ruby", "Rails", "Javascript", "Go", "PHP", "Ruby", "Java"]
irb(main):002:0> array.count("Ruby")
=> 2

上記の通り、配列内の特定の要素の数が知りたい場合には、countメソッドの引数を設定するようにしましょう。

ブロックを渡して使用する

最後は、ブロックを渡して使用する場合について解説します。

先ほどは、単に引数を渡していましたが、countメソッドにはブロックを渡すことも可能で、ブロックを渡すことで、少し複雑な条件に合致した要素の数を取得することができるようになります。

例えば、下記の例では、文字数が4文字の要素の数を取得する処理を実装しています。

irb(main):001:0> array = ["Ruby", "Rails", "Javascript", "Go", "PHP", "Ruby", "Java"]
irb(main):002:1* array.count do |name|
irb(main):003:1*   name.size == 4
irb(main):004:0> end
=> 3

length/sizeメソッドとcountメソッドの違いは?

さて、ここで一つ疑問が生じますよね。

そう、「length / sizeメソッドとcountメソッドって、”配列内の要素の数を数える”っていう機能は基本的に同じだから、色々な使い方ができるcountメソッドだけ覚えていたらいいんじゃない?」と思いませんか?

結論から申し上げると、単純に「配列内の要素の数を数える」だけであれば、length / sizeメソッドを使用するようにしましょう

それは、処理速度の違いにあります。

length / sizeメソッドは配列の持っている要素情報を直接参照している一方で、countメソッドはeachメソッドを介して数を数えているため余計なプロセスが一つ多く、その処理速度も必然的に遅くなってしまうのです。

よって、配列のサイズを取得する際のメソッドに困った場合には、以下の基準で選択しましょう。

メソッドシチュエーション
lengthメソッド配列のサイズを知りたい場合
sizeメソッド同上
countメソッド特定の条件に合致する要素の数を知りたい場合

お仕事の途中ですが、少し一休みして、転職独立について考えてみませんか🙌?

現役エンジニアが選ぶおすすめの転職エージェント11選【成功談・失敗談もあります】

レバテックフリーランスの評判ってどう?【現役エンジニアが徹底解説します】

MidWorks(ミッドワークス)の評判ってどう?【現役エンジニアが徹底解説します】

日々の業務に追われて自分を見失わないよう、
定期的にキャリアを振り返るようにしておきましょう🤲

最後に

さて、本記事では、配列のサイズを調べるためのメソッドとして、lengthメソッド、sizeメソッド、countメソッドの3つをご紹介してきました。

最後の章でもご紹介した通り、countメソッドが便利だからと言ってそればかり使用していると、思わぬところで処理速度の低下を招いてしまいますので、注意しておきましょうね。

なお、Rubyの配列処理についてもう少し踏み込んで知りたい方は、以下の記事にて便利なメソッドをまとめてありますので、よければこちらもぜひご覧くださいね。

おすすめ記事

今回は、Ruby初心者の方々に向けて、配列(Array)を扱う際に最低限知っておくべきメソッドをご紹介させていただきます。 Webアプリケーションを開発する中で、配列は必ずと言ってよいほど使用することとなるオブジェクトになります。 […]

プログラミングイメージ

このブログを通じて少しでも「傍(はた)を楽(らく)にする」ことができていれば嬉しく思います。

最後まで読んで頂きありがとうございました。