ヒアドキュメントとは?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

2018年1月1日に開業したプロブロガー1年目です。 元EBSエンジニア(SE)で、今はブログ運営とゲーム配信をしています。 Rubyを中心としたWeb開発情報や仮想通貨について情報発信中です!








シェアありがとうございます、


時代の変化とともに、多様な生き方へ

仕事がAIや自動化で無くなっていく時代を生き抜くために、
モノ創りと多様な生き方を示します。



ビットコインを買うならZaif取引所がおすすめ!

Zaif取引所は他の主要取引所と比べて手数料が安いのが特徴。
ビットコインの他、イーサリアム、モナーコイン、ネムも購入可能です。


コメントを残す

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