カテゴリ: Ruby 更新日: 2025/12/30

Ruby配列の集計処理をやさしく解説!sum・inject・group_by・tally完全入門

集計処理:sum・inject/reduce・group_by・tally の便利ワザ
集計処理:sum・inject/reduce・group_by・tally の便利ワザ

先生と生徒の会話形式で理解しよう

生徒

「Rubyの配列で、合計を出したり、同じ種類ごとに数えたりできますか?」

先生

「できますよ。Rubyの配列には、集計処理を簡単に書ける便利な方法が用意されています。」

生徒

「集計処理って、そもそも何ですか?」

先生

「合計を出す、数を数える、仲間ごとに分ける、といった作業のことです。では順番に見ていきましょう。」

1. 集計処理とは何か?

1. 集計処理とは何か?
1. 集計処理とは何か?

Rubyの配列における集計処理とは、たくさん並んだデータをまとめて整理することです。 例えば、買い物のレシートを見て合計金額を計算したり、クラスの出席人数を数えたりする作業を思い浮かべてください。 プログラムでも同じように、数値の合計、回数のカウント、グループ分けを行う場面がよくあります。 RubyではArrayクラスに、初心者でも扱いやすい集計用メソッドが用意されているため、難しい計算式を書かなくても大丈夫です。

2. sumで合計を出す基本操作

2. sumで合計を出す基本操作
2. sumで合計を出す基本操作

sumは、配列の中身をすべて足し算してくれるメソッドです。 電卓で数字を一つずつ足していく代わりに、Rubyが自動で計算してくれるイメージです。 数字だけが入った配列であれば、そのまま使うだけで合計値が得られます。


numbers = [10, 20, 30]
total = numbers.sum
puts total

60

このように、sumは「全部足す」という目的に特化しているため、とても読みやすく初心者向けです。 配列 集計 Ruby というキーワードで検索したときにも、必ず登場する基本中の基本です。

3. inject / reduceで自由な集計をする

3. inject / reduceで自由な集計をする
3. inject / reduceで自由な集計をする

injectreduceは、配列の要素を左から順番に処理して、一つの結果にまとめる方法です。 名前は少し難しく感じますが、「前の結果を次に引き継ぐ箱」と考えると理解しやすくなります。 reduceはinjectとまったく同じ意味で、英語の好みの違い程度に思って問題ありません。


numbers = [1, 2, 3, 4]
result = numbers.inject(0) do |sum, n|
  sum + n
end
puts result

10

injectは合計だけでなく、掛け算や文字の結合など、自由な集計処理ができます。 少し慣れてくると、sumではできない複雑な集計にも対応できるようになります。

4. group_byで仲間ごとに分ける

4. group_byで仲間ごとに分ける
4. group_byで仲間ごとに分ける

group_byは、配列の中身を条件ごとに仕分けするメソッドです。 例えば、果物を色ごとに箱へ分けるようなイメージです。 結果は配列ではなく、ハッシュという「キーと値の組み合わせ」で返ってきます。


words = ["apple", "ant", "banana"]
grouped = words.group_by { |w| w[0] }
p grouped

{"a"=>["apple", "ant"], "b"=>["banana"]}

group_byは「分類」「グループ化」「仕分け」といった処理を一行で書けるのが大きな特徴です。 Ruby 配列 group_by 使い方 という検索でも、よく使われる定番テクニックです。

5. tallyで数を数える最短ルート

5. tallyで数を数える最短ルート
5. tallyで数を数える最短ルート

tallyは、配列の中で同じ要素が何回出てきたかを数えてくれるメソッドです。 出席確認やアンケート集計のような場面を想像すると分かりやすいでしょう。 自分でカウンターを作らなくても、一発で結果が出ます。


colors = ["red", "blue", "red", "green", "blue"]
counts = colors.tally
p counts

{"red"=>2, "blue"=>2, "green"=>1}

tallyはRuby配列 集計 処理の中でも特に便利な存在です。 初心者の方でも直感的に使えるため、まず覚えておきたいメソッドの一つです。

関連記事:
カテゴリの一覧へ
新着記事
New1
データベース
SQLの処理が遅くなる原因とは?初心者向けにデータベースパフォーマンス最適化を完全解説
New2
Ruby
RubyのネストHash操作を徹底解説!digとtransformメソッドで複雑なデータも楽々
New3
Rails
Railsインデックス設計の極意!爆速サイトを作るためのスキーマ設計ガイド
New4
データベース
SQLのCOMMITとROLLBACKとは?トランザクション操作を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.2
Java&Spring記事人気No2
Rails
Railsで日本語と時刻の設定をしよう!初心者でも安心のlocale/zone初期設定チートシート
No.3
Java&Spring記事人気No3
Ruby
Rubyのハッシュを徹底比較!シンボルキーと文字列キーの違いと使い分け
No.4
Java&Spring記事人気No4
Rails
Railsマイグレーションの型選びを完全ガイド!初心者が迷わないカラム設計
No.5
Java&Spring記事人気No5
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.6
Java&Spring記事人気No6
Rails
RailsモデルとActive Record基礎|ID戦略を完全理解!AUTO INCREMENT・UUID・ULIDの比較と導入手順
No.7
Java&Spring記事人気No7
データベース
ACID特性とは?データベーストランザクションの信頼性を初心者向けに徹底解説
No.8
Java&Spring記事人気No8
Ruby
Rubyのハッシュ走査を完全マスター!each・each_key・each_valueの使い方