1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rubyのリテラルとは?newとの違いを初心者向けにわかりやすく解説

1
Posted at

はじめに

ChatGPT Image 2026年7月11日 18_37_39.png

Rubyの学習をしていると、

  • 「リテラルを使いましょう」
  • 「newよりリテラルの方がRubyらしい」
  • 「文字列はString.newではなく"hello"で書こう」

といった説明を見かけることがあります。

私は最初、

リテラルって何?
String.newと何が違うの?

と思っていました。

この記事では、Ruby初心者向けに

  • リテラルとは何か
  • newとの違い
  • どんなときにnewを使うのか

をわかりやすく解説します。

リテラルとは?

リテラルとは、
プログラムの中にそのまま書ける値
のことです。

もっと簡単に言うと、
「書いた瞬間に使えるデータ」
になります。

リテラルの例

数値リテラル

10
3.14

数値をそのまま書いています。


文字列リテラル

"こんにちは"
'hello'

文字列をそのまま書いています。


配列リテラル

[1, 2, 3]

ハッシュリテラル

{name: "Mark", age: 25}

newとの違いは?

Rubyではオブジェクトを生成するときに new を使います。

例えば次のようなコードです。

String.new("hello")
Array.new([1, 2, 3])

一方で、多くの場合は次のようにも書けます。

"hello"
[1, 2, 3]

つまり、

String.new("hello")

より

"hello"

の方がシンプルということがわかります。

なぜリテラルが推奨されるの?

理由は大きく2つ

理由① コードが短くなる

例えば文字列の場合。

"hello"

String.new("hello")

を比べると、前者の方が圧倒的に読みやすいことがわかるかと思います

理由② Rubyらしい書き方だから

Rubyは

「人間が読みやすいコードを書くこと」

を大切にしている言語です。

そのため、
リテラルで表現できるものはリテラルで書くのが一般的です。

ではnewはいつ使うの?

リテラルでは表現できない作り方をしたいとき

にnewを使います。

① 配列を指定サイズで作りたいとき

例えば3個分の空要素を持つ配列を作る場合。

Array.new(3)

結果

[nil, nil, nil]

このような書き方はリテラルではできません。

② 同じ値で埋めたいとき

Array.new(3, "a")

結果

["a", "a", "a"]

リテラルでも書けますが、

要素数が増えると大変になります。

["a", "a", "a"]

③ 動的に値を作りたいとき

Array.new(3) { |i| i * 2 }

結果

[0, 2, 4]

要素を計算しながら生成できます。

これはリテラルでは表現できません。

④ 空のオブジェクトを作りたいとき

String.new
Array.new
Hash.new

後から値を追加したい場合に利用します。

⑤ 自分で作ったクラスのインスタンスを生成するとき

実務ではこれが最も重要です。

class User
  def initialize(name)
    @name = name
  end
end
user = User.new("Mark")

これはリテラルでは書けません。

クラスからオブジェクトを生成するときはnewが必要になります。

イメージで理解!

リテラルとnewの違いを料理で例えるとこんな感じです。

リテラル

完成品をそのまま買う

🍛 コンビニのカレー

new

材料から作る

👩‍🍳 自分好みにカレーを作る


つまり、

既に完成しているものならリテラル、

特別な作り方をしたいならnew、

というイメージです。


使い分けまとめ

リテラルを使うケース

値が既に決まっている場合

"hello"
[1, 2, 3]
{name: "Ruby"}

newを使うケース

特別な生成方法が必要な場合

Array.new(10)
Array.new(3) { |i| i * 2 }
User.new("Mark")

まとめ

リテラルとは、

プログラムの中にそのまま書ける値

のことです。

Rubyでは、

  • 数値
  • 文字列
  • 配列
  • ハッシュ

などはリテラルで書くのが一般的です。

一方でnewは、

  • 特別な初期化をしたい
  • 動的に生成したい
  • クラスのインスタンスを作りたい

ときに使います。

迷ったらまずは、

「リテラルで書けるならリテラルを使う」

と覚えておくと、わかりやすいかと思います

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?