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

Ruby配列の重複を消す完全ガイド!uniq・uniq!・to_setでユニーク化【初心者向け】

重複を消す・ユニーク化:uniq/uniq!/to_set の活用パターン
重複を消す・ユニーク化:uniq/uniq!/to_set の活用パターン

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

生徒

「配列に同じ数字や文字がたくさん入ってしまいました…消せますか?」

先生

「Rubyには、配列の重複をまとめて消すための便利な機能があります。」

生徒

「手で一個ずつ消さなくていいんですか?」

先生

「はい。uniqやto_setを使えば、一瞬で整理できますよ。」

1. 配列の重複とは何か?

1. 配列の重複とは何か?
1. 配列の重複とは何か?

重複とは、同じ値が何度も配列の中に入っている状態のことです。 例えば、出席名簿に同じ名前が二回書かれていたり、 買い物リストに同じ商品が何度も並んでいる状態を想像すると分かりやすいです。

プログラミングでは、重複したデータがあると、 集計結果がずれたり、表示が見づらくなったりします。 そのため、配列をユニーク化する作業がよく必要になります。

ユニーク化とは、「同じものは一つだけ残す」という意味です。

2. uniq:重複を取り除いた新しい配列を作る

2. uniq:重複を取り除いた新しい配列を作る
2. uniq:重複を取り除いた新しい配列を作る

uniqは、配列から重複した要素を取り除き、 新しい配列を作るための命令です。 元の配列はそのまま残るので、初心者でも安心して使えます。


numbers = [1, 2, 2, 3, 3, 3]
p numbers.uniq

[1, 2, 3]

同じ数字が何回出てきても、結果では一回だけ残ります。 「整理したコピーを作る」というイメージを持つと理解しやすいです。

3. 元の配列は変わらない点に注意

3. 元の配列は変わらない点に注意
3. 元の配列は変わらない点に注意

uniqを使っても、元の配列の中身は変わりません。 これは「破壊的ではない処理」と呼ばれます。 難しく聞こえますが、「元データを壊さない処理」という意味です。


numbers = [1, 1, 2]
numbers.uniq
p numbers

[1, 1, 2]

元の配列を残したまま整理結果だけ使いたいときに便利です。

4. uniq!:配列そのものを書き換える

4. uniq!:配列そのものを書き換える
4. uniq!:配列そのものを書き換える

uniq!は、配列の中身を直接書き換えて、 重複を取り除く命令です。 名前の最後に「!」が付いているメソッドは、 配列を直接変更することが多いです。


numbers = [1, 2, 2, 3]
numbers.uniq!
p numbers

[1, 2, 3]

元の配列をもう使わない場合や、 メモリを節約したい場合によく使われます。 ただし、元に戻せないので注意が必要です。

5. uniqとuniq!の使い分け

5. uniqとuniq!の使い分け
5. uniqとuniq!の使い分け

初心者のうちは、基本的にuniqを使うのがおすすめです。 「安全に整理する」感覚で使えます。

uniq!は、配列を直接変更しても問題ないと 分かっているときだけ使いましょう。 ノートを消しゴムで消すイメージに近いです。

6. to_set:集合として重複を許さない考え方

6. to_set:集合として重複を許さない考え方
6. to_set:集合として重複を許さない考え方

to_setは、配列をSetという特別な箱に変換します。 Setは「同じものを二つ入れられない箱」です。 そのため、自然に重複が消えます。

集合とは、「重複を持たないデータの集まり」という意味です。 数学の集合をイメージすると分かりやすいです。


require 'set'
numbers = [1, 2, 2, 3]
set_numbers = numbers.to_set
p set_numbers

#<Set: {1, 2, 3}>

表示は少し違いますが、重複が消えているのが分かります。

7. Setを使う場面と注意点

7. Setを使う場面と注意点
7. Setを使う場面と注意点

Setは、「含まれているかどうか」を調べるのがとても速い特徴があります。 大量のデータを扱うときに向いています。

ただし、配列とは見た目や使い方が少し違うため、 初心者はまずuniqで慣れてから使うと安心です。

8. 重複削除を理解するコツ

8. 重複削除を理解するコツ
8. 重複削除を理解するコツ

重複削除は、「同じものは一つでいい」という考え方が基本です。 名簿整理やチェックリストを思い浮かべながら学ぶと、 配列とユニーク化の仕組みが自然に理解できます。

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
Rails
RailsモデルとActive Record基礎|クエリログの読み方を理解してEXPLAIN・joins・includesの違いを学ぼう