ヒアドキュメントとは?Rubyで使う方法まとめ


こんにちは。Tomoyuki(@tomoyuki65)です。

 

ヒアドキュメントって聞いたことありますか?

私はシェルスクリプトでは使ったことがありましたが、Rubyでも使えることがわかりました。

 

ヒアドキュメントは、長い文字列を作成する場合は便利なので、使い方を覚えておいた方が良いでしょう。

この記事では、Rubyでヒアドキュメントを使う方法を解説します。

 



ヒアドキュメントとは?

ヒアドキュメント(行指向文字列リテラル)とは、ヒア文字列やheredocなどとも呼ばれ、文字列リテラルをシェルスクリプトやプログラミング言語に埋め込むための一つの方法です。

 

改行や空白などが書いた通りに適用されるため、複数行に渡る長い文字列を作成する場合にスッキリ書くことができます。

 

ヒアドキュメントは、次のように使います。

<<識別子

1行目

2行目

3行目

識別子

識別子は自由に付けられますが、記述する文字列の中に含まれない文字列を使って下さい。

 

基本的な使い方

まずは基本的な使い方を覚えましょう。

Rubyでは以下の3つの方法があります。

 

<<識別子

text = <<EOF
ヒアドキュメントで、
長い文字列を作成します。
EOF

puts text

 

実行結果

ヒアドキュメントで、
長い文字列を作成します。

 

<<-識別子

-を使うと、最後の識別子(以下の例では下のEOF)がインデントさせることができます。

text = <<-EOF
            ヒアドキュメントで、
            長い文字列を作成します。
          EOF

puts text

 

実行結果
            ヒアドキュメントで、
            長い文字列を作成します。

 

<<~識別子

Ruby 2.3以降では、「<<~識別子」を使うことが可能です。

~を使うと、内部の文字列をインデントさせても先頭の空白が無視されます。

text = <<~EOF
    ヒアドキュメントで、
    長い文字列を作成します。
  EOF

puts text

 

実行結果

ヒアドキュメントで、
長い文字列を作成します。

 



ヒアドキュメントの式展開

ヒアドキュメントの中では式展開が可能です。

name = 'Tanaka'
text = <<EOF
こんにちは。#{name}さん。
今日はいい天気ですね!
EOF

puts text

 

実行結果
こんにちは。Tanakaさん。
今日はいい天気ですね!

 

<<‘識別子’の場合

<<‘識別子’のように識別子をシングルクォーテーションで囲むと式展開を無効にすることができます。

name = 'Tanaka'
text = <<'EOF'
こんにちは。#{name}さん。
今日はいい天気ですね!
EOF

puts text

 

実行結果
こんにちは。#{name}さん。
今日はいい天気ですね!

 

<<“識別子”の場合

<<“識別子”のように識別子をダブルクォーテーションで囲むと式展開を有効になります。

つまり、<<識別子と同じです。

name = 'Tanaka'
text = <<'EOF'
こんにちは。#{name}さん。
今日はいい天気ですね!
EOF

puts text

 

実行結果
こんにちは。Tanakaさん。
今日はいい天気ですね!

 

その他の使い方

「<<識別子」は、式として評価されます。

そのため、「<<識別子」をメソッドの引数として渡したり、メソッドを呼び出したりすることが可能です。

# メソッドの引数として渡す場合
def output(val)
  puts val
end

output(<<EOF)
  このように、
  引数として渡せます。
EOF

# メソッドを呼び出す場合
a = <<EOF.upcase
abc
def
EOF

puts a

 

実行結果
  このように、
  引数として渡せます。
ABC
DEF

 

まとめ

  •  ヒアドキュメントは、改行や空白を書いた通りに適用され、複数行の長い文字列を書くのに便利
  •  基本的な書き方として、「<<識別子」、「<<-識別子」、「<<~識別子」の3つがある
  •  「<<識別子」または「<<“識別子”」の場合は式展開が可能で、「<<‘識別子’」の場合は式展開が無効になる
  •  「<<識別子」は、式として評価されるため、メソッドの引数として渡したり、メソッドを呼び出したりすることができる

 

  •  関連記事

【無料あり】Ruby入門サイトおすすめ3選!初心者向けの学習方法を解説

2017年10月24日

 

The following two tabs change content below.

Tomoyuki

SEを5年経験後、全くの未経験ながら思い切ってブロガーに転身し、月間13万PVを達成。その後コロナの影響も受け、以前から興味があったWeb系エンジニアへのキャリアチェンジを決意。現在はWeb系エンジニアとして働きながら、プロゲーマーとしても活躍できるように活動中。








シェアはこちらから


【2024年】おすすめのゲーミングPC

モンハンワイルズの発売日とPC版(Steam版)の推薦スペックが公開されたので、おすすめのゲーミングPCをご紹介!


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です