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

Rubyのヒアドキュメント完全ガイド!初心者でもわかる<<-と<<~の違いとインデント調整のコツ

ヒアドキュメント完全ガイド:<<- と <<~ の違い・インデントを揃えるコツ
ヒアドキュメント完全ガイド:<<- と <<~ の違い・インデントを揃えるコツ

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

生徒

「Rubyで長い文章をプログラムに書きたいときって、どうすればいいんですか?」

先生

「その場合はヒアドキュメントという便利な書き方を使います。これは複数行の文字列を簡単に表現できる仕組みなんです。」

生徒

「へえ!でもインデントとか揃えるのが大変そうに見えます…。」

先生

「大丈夫。Rubyには<<-<<~という2種類のヒアドキュメントがあって、インデントを揃えやすくできるんです。順番に解説していきましょう。」

1. ヒアドキュメントとは?

1. ヒアドキュメントとは?
1. ヒアドキュメントとは?

ヒアドキュメント(Here Document)とは、Rubyで複数行の文字列を簡単に書くための文法です。長文のメッセージやメール本文、HTMLのようなコードをそのまま埋め込みたいときに便利です。

例えば、次のように書くと複数行をひとつの文字列として扱えます。


text = <<-EOS
これはヒアドキュメントの例です。
改行もそのまま反映されます。
Rubyで長い文章を書くときに使います。
EOS

puts text

これはヒアドキュメントの例です。
改行もそのまま反映されます。
Rubyで長い文章を書くときに使います。

EOSは区切りを示すマーカーで、自由にTEXTDOCなどの名前に変更できます。

2. <<- と <<~ の違い

2. <<- と <<~ の違い
2. <<- と <<~ の違い

ヒアドキュメントには<<-<<~の2種類の書き方があります。両方とも複数行文字列を扱いますが、インデントの扱い方が異なります。

2-1. <<- の特徴

<<-では、終了マーカー(EOSなど)をインデントして書くことができます。ただし、本文のインデントはそのまま出力されるので、ソースコードの見た目と出力結果がズレることがあります。


text = <<-EOS
    インデントもそのまま出力されます。
    プログラムの見た目と結果が揃わないこともあります。
EOS

puts text

    インデントもそのまま出力されます。
    プログラムの見た目と結果が揃わないこともあります。

2-2. <<~ の特徴

<<~では、共通のインデントが自動的に取り除かれます。これにより、ソースコードのインデントを保ちながら、出力結果ではきれいに揃った文章が得られます。


text = <<~EOS
    インデントがあっても
    出力時にはきれいに揃います。
EOS

puts text

インデントがあっても
出力時にはきれいに揃います。

コードを読みやすく保ちつつ、出力結果も美しくしたい場合は<<~を使うのがオススメです。

3. インデントを揃えるコツ

3. インデントを揃えるコツ
3. インデントを揃えるコツ

ヒアドキュメントで複数行を書いていると、プログラムの見た目と出力のバランスを取るのが難しいことがあります。そんなときに役立つのが次のポイントです。

  • 見た目を優先するなら <<~ を使う
  • インデントをそのまま残したいなら <<- を使う
  • マーカー(EOSやDOC)は意味が分かりやすい単語にする

例えば、HTMLを埋め込むときには<<~HTMLと書くとわかりやすいです。


html = <<~HTML
    <div class="box">
      <p>Rubyのヒアドキュメント</p>
    </div>
HTML

puts html

<div class="box">
  <p>Rubyのヒアドキュメント</p>
</div>

4. 実際の活用例

4. 実際の活用例
4. 実際の活用例

ヒアドキュメントは長文のメール本文や説明文をプログラムに埋め込むときにも使えます。


mail_body = <<~MAIL
    こんにちは、Ruby学習者のみなさん。

    今日はヒアドキュメントについて学びました。
    <<- と <<~ を使い分ければ、見やすくきれいなコードが書けます。

    それでは、また次回お会いしましょう。
MAIL

puts mail_body

こんにちは、Ruby学習者のみなさん。

今日はヒアドキュメントについて学びました。
<<- と <<~ を使い分ければ、見やすくきれいなコードが書けます。

それでは、また次回お会いしましょう。

このように、文章をそのままコードに書き込めるので、特にテキストを扱う処理で役立ちます。

まとめ

まとめ
まとめ

ここまで、Rubyで長文を扱うときに欠かせないヒアドキュメントの基礎から、実際の活用方法まで一つひとつ詳しく確認してきました。文章や複数行の文字列を扱う処理は、初心者にとってとてもハードルが高いように見えることがあります。しかし、Rubyには複数行の文字列を直感的に扱える便利な構文が用意されており、コードを整えながら読みやすく記述できる魅力があります。特に、<<- と <<~ の違いを理解することで、プログラムの見た目と実際の出力結果をきれいに揃えながら、効率よく文章を管理することができます。 それぞれの書き方には向き不向きがあるため、状況に合わせて適切に選ぶことが大切です。インデントをそのまま残したい場面では <<- を、見た目を整えながら扱いたい場面では <<~ を使うとよいでしょう。また、文章だけでなく、HTMLやメール本文、説明文などの複雑なテキストも簡潔に記述できるため、実務の中でも頻繁に利用されます。コードの可読性を高める工夫としても非常に役立ち、複雑なロジックを組む際にも無駄な処理を省き、スッキリしたコードを維持できます。 ヒアドキュメントの使い方をしっかり身につけることで、Rubyでのテキスト処理の幅が大きく広がり、ひとつ上のステップに進みやすくなります。実際に自分でさまざまな文章を埋め込みながら、出力の変化やインデントの扱い方を試してみると、理解が深まり応用も自然とできるようになります。Rubyを活用するうえで欠かせない表現方法なので、ぜひ今回の知識を積極的に使っていきましょう。

ヒアドキュメントをより深く理解するサンプル

次の例では、文章に変数を埋め込んだり、インデントを調整しながら整った出力を得る方法を確認できます。


name = "太郎"
lesson = "ヒアドキュメント"

message = <<~TEXT
    こんにちは、#{name}さん。

    今日はRubyの#{lesson}について学びました。
    <<- と <<~ の違いを理解すると、
    長い文章を扱うときの自由度が大きく高まります。

    自分でも色々試して、Rubyでの文章処理に慣れていきましょう。
TEXT

puts message

こんにちは、太郎さん。

今日はRubyのヒアドキュメントについて学びました。
<<- と <<~ の違いを理解すると、
長い文章を扱うときの自由度が大きく高まります。

自分でも色々試して、Rubyでの文章処理に慣れていきましょう。

このように、ヒアドキュメントは文章をそのまま記述できるだけでなく、変数展開も自然に使えるため、可読性が高く柔軟な書き方が可能となります。特に、文章の途中に動的な値を挿入したい場合にとても便利で、テンプレート処理のような用途でも力を発揮します。

先生と生徒の振り返り会話

生徒

「ヒアドキュメントって便利なんですね!特に <<~ のインデント調整がすごく分かりやすかったです。」

先生

「そうですね。Rubyでは文章を扱う場面が多いので、ヒアドキュメントを使いこなせるとコードの見た目もきれいになり、作業しやすくなりますよ。」

生徒

「なるほど!長い説明文やメールのテンプレートを作るときにも使えそうだと思いました。」

先生

「その通りです。実務でも本当によく使うので、今日学んだことを忘れずに、いろいろな文章で試すと理解がもっと進みますよ。」

生徒

「はい!さっそく自分のコードにも取り入れてみます。ありがとうございました!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Rubyのヒアドキュメントって何ですか?どんな場面で使いますか?

Rubyのヒアドキュメント(Here Document)は、複数行の文字列を簡単に扱える書き方です。メール本文やHTMLなどの長文テキストをコード内にそのまま書きたいときに使います。特に改行や空白を含んだ文字列を保持したいときに便利です。
関連記事:
カテゴリの一覧へ
新着記事
New1
Ruby
“すべてはオブジェクト”を体感!初心者向けRubyのオブジェクト指向入門【irbで学ぶ】
New2
Ruby
Rubyの標準入出力を完全ガイド!puts・print・pの違いとデバッグ活用法
New3
Ruby
Gemとは?RubyGemsとBundlerを初心者向けに完全解説!依存関係管理も図解でわかりやすく理解
New4
Ruby
Rubyの文字エンコーディング入門!UTF-8・マジックコメント・外部/内部エンコーディングを完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
Rubyのreduceとinject入門!合計計算や集計を初心者向けに分かりやすく解説
No.2
Java&Spring記事人気No2
Ruby
Rubyの文字列エンコーディング完全ガイド!Encoding・force_encoding・encodeを初心者向け解説
No.3
Java&Spring記事人気No3
Ruby
Rubyの始め方ガイド:インストールから最初のHello Worldまで(Windows/Mac/Linux)
No.4
Java&Spring記事人気No4
データベース
PostgreSQLのWHERE句を徹底解説!初心者でもわかるSQLデータ抽出の基本
No.5
Java&Spring記事人気No5
Ruby
Rubyのfind/detect/find_indexを徹底解説!目的のデータを素早く探す方法
No.6
Java&Spring記事人気No6
Ruby
Rubyのselect/reject/filterの使い方を完全解説!初心者向けの条件抽出レシピ
No.7
Java&Spring記事人気No7
Ruby
Rubyで比較演算子を完全解説!==・===・<=>・eql? の使い分け
No.8
Java&Spring記事人気No8
データベース
PostgreSQLで順位付け!ROW_NUMBER関数の使い方を初心者向けに徹底解説