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

Rubyの複数行文字列とヒアドキュメントの使い方|初心者向け実践パターン

複数行文字列とヒアドキュメント:<<- と <<~ の実践パターン
複数行文字列とヒアドキュメント:<<- と <<~ の実践パターン

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

生徒

「Rubyで複数行の文字列を簡単に書く方法はありますか?」

先生

「はい、Rubyにはヒアドキュメントという便利な機能があります。複数行の文字列をそのまま書けて、コードも読みやすくなります。」

生徒

「ヒアドキュメントってどうやって使うんですか?」

先生

「基本は <<-END という形で始めて、終了ラベルで終わらせます。インデントを考慮する場合は <<~END が便利です。」

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

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

ヒアドキュメント(Here Document)は、複数行にわたる文字列を簡単に書く方法です。通常の文字列は "..."'...' で囲みますが、長い文章やHTMLテンプレートを書く場合は不便です。そこでヒアドキュメントを使うと、開始と終了のラベルで囲むだけで複数行文字列を表現できます。

2. 基本のヒアドキュメント(<<-)

2. 基本のヒアドキュメント(<<-)
2. 基本のヒアドキュメント(<<-)

<<-END を使った基本パターンです。終了ラベルはインデントできますが、ラベル自体は行頭に書く必要があります。


text = <<-TEXT
これはヒアドキュメントの例です。
複数行にわたる文字列を簡単に書けます。
Ruby初心者にもわかりやすいです。
TEXT

puts text

これはヒアドキュメントの例です。
複数行にわたる文字列を簡単に書けます。
Ruby初心者にもわかりやすいです。

ポイントは、文字列中の改行もそのまま保持されることです。

3. インデントをきれいにするヒアドキュメント(<<~)

3. インデントをきれいにするヒアドキュメント(<<~)
3. インデントをきれいにするヒアドキュメント(<<~)

<<~END を使うと、開始ラベルと終了ラベルのインデントを基準に、文字列の先頭の空白を自動で除去できます。これにより、コードを読みやすく整形できます。


def greeting(name)
  message = <<~GREETING
    こんにちは、#{name}さん!
    Rubyのヒアドキュメントを学びましょう。
    複数行の文字列も簡単です。
  GREETING

  puts message
end

greeting("太郎")

こんにちは、太郎さん!
Rubyのヒアドキュメントを学びましょう。
複数行の文字列も簡単です。

このように、インデントを揃えたまま文字列の先頭空白を除去できるので、長いコードでも見やすくなります。

4. ヒアドキュメントの活用例

4. ヒアドキュメントの活用例
4. ヒアドキュメントの活用例
  • 長い文章や説明文をそのまま書く
  • メール本文やHTMLテンプレートを生成する
  • SQL文を複数行で書く場合

例えば、HTMLテンプレートを生成する場合もヒアドキュメントを使うと、タグの階層構造を崩さずに記述できます。


html = <<~HTML
  <div class="container">
    <h1>タイトル</h1>
    <p>本文の内容をここに書きます。</p>
  </div>
HTML

puts html

<div class="container">
  <h1>タイトル</h1>
  <p>本文の内容をここに書きます。</p>
</div>

5. 実践ポイント

5. 実践ポイント
5. 実践ポイント
  • 複数行文字列を扱う場合はヒアドキュメントを活用
  • <<- は基本形、<<~ はインデント整形用
  • テンプレートや文章、HTML生成に便利
  • Ruby初心者でも可読性の高いコードを保てる

ヒアドキュメントをマスターすれば、長い文字列を安全かつ効率的に扱えるようになり、Rubyプログラミングの幅が広がります。

まとめ

まとめ
まとめ

今回は、Rubyで複数行の文字列を扱うときに欠かせない「ヒアドキュメント」について、その仕組みや使い分け、そして実際の活用例まで丁寧に整理してきました。通常のダブルクォーテーションやシングルクォーテーションではどうしても複数行をそのまま書くのが難しく、可読性も低くなりがちですが、ヒアドキュメントを使えば長い説明文やテンプレートをそのままの形で記述でき、コードの見通しが格段に良くなります。特に、文章構造を保ちながら複数行を表現できる点は、Ruby初心者にとっても理解しやすく、実務に近い形で文章やメッセージを扱えるという大きなメリットがあります。

また、ヒアドキュメントには基本形の <<- と、インデントをきれいに整えてくれる <<~ の2つの使い方があり、用途に応じて使い分けることでより読みやすいコードを書くことができます。特に <<~ はRubyの中でも人気が高く、関数の中に複数行文字列を置きたいときや、入れ子になった構造の中でもインデントを揃えて美しく記述したいときに非常に便利です。HTML、メール本文、SQL文、説明文など幅広いケースで活用されるため、この2つの違いを理解しておくと、複雑な文字列でも落ち着いて扱えるようになります。

サンプル:複数行の説明文を整形して表示する


def manual
  text = <<~DOC
    これはRubyで複数行の文章を扱う練習です。
    ヒアドキュメントを使うと、改行を含む文章も
    そのままの形で自然に書くことができます。
    文章の見た目を崩さずに保持できるので、
    ドキュメントの生成や説明文の出力に向いています。
  DOC

  puts text
end

manual

これはRubyで複数行の文章を扱う練習です。
ヒアドキュメントを使うと、改行を含む文章も
そのままの形で自然に書くことができます。
文章の見た目を崩さずに保持できるので、
ドキュメントの生成や説明文の出力に向いています。

このように、ヒアドキュメントを使うと文章の見栄えを崩さずに保持できるため、Webアプリケーションの説明テキストやヘルプ文、テンプレート生成など実務に直結する場面で大いに役立ちます。特に、Rubyは文字列操作が得意な言語のひとつであり、ヒアドキュメントを理解することでより柔軟な文章表現が可能になります。今後テンプレートや長文を扱う場面が増えたとき、「あのとき学んだヒアドキュメントを使えば良い」と自然に思えるようになるでしょう。複数行文字列の扱いは、Rubyの基礎を超えて実践的なスキルのひとつとなるため、ぜひ何度か試しながら身につけてみてください。

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

生徒

「今日のヒアドキュメント、思ったより便利ですね。ふつうの文字列よりも文章を書きやすい気がします。」

先生

「そうでしょう?特に説明文やテンプレートを扱うときには欠かせない機能なんです。複数行をそのまま書けるのは本当に助かりますよ。」

生徒

「インデントを整えてくれる <<~ も便利でした。コードと文章の両方が読みやすくなりますね!」

先生

「その通りです。実務のコードはどうしても長くなりがちなので、見やすさを保つ工夫は大切です。ヒアドキュメントはその強い味方になりますよ。」

生徒

「HTMLやメールのテンプレートにも使えるって知って、応用できる場面がたくさん思い浮かびました!」

先生

「そうなんです。Rubyの魅力のひとつは、文字列操作のしやすさですからね。今日学んだことを色々な場面で試してみてください。」

関連記事:
カテゴリの一覧へ
新着記事
New1
Rails
Rails GoodJob入門!PostgreSQLベースのバックグラウンド処理を初心者向けに完全解説
New2
Ruby
Rubyで学ぶビット演算入門:&・|・^・~・<<・>>の基礎と実例
New3
Rails
RESTとRailsの関係を徹底解説!resources設計と7つの標準アクションを初心者向けにわかりやすく解説
New4
データベース
MySQLアーキテクチャ入門!初心者向けに基本構造と仕組みを徹底解説
人気記事
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関数の使い方を初心者向けに徹底解説