ヒアドキュメントとは?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入門サイトはどれ?Rubyの学習方法をまとめる

2017.10.24

 

The following two tabs change content below.
Tomoyuki

Tomoyuki

好きなことで生きたくて、SEを辞めてブロガー&ゲーム実況で活動中。パソコン、ネット、ゲームが大好き。YouTubeのチャンネル登録&Twitterのフォローもぜひお願いします!








シェアはこちらから


本を、聴こう。

オーディブルなら、プロの声優やナレーターが朗読した本(音声コンテンツ)を、耳で聴いて楽しめます。



資産運用ならウェルスナビがおすすめ!

ウェルスナビなら誰でも簡単に自動で資産運用を始められますよ!
まだ資産運用を始めてない人は、ぜひ一度チェックしてみて下さいね。


コメントを残す

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