ヒアドキュメント【here document】ヒア文字列
概要

多くの言語ではプログラム中の文字列リテラルは引用符(クォーテーションマーク)で囲んで記述するが、改行や引用符を含む長い文字列をこの方法で書くとそれらの特殊文字が現れる度にエスケープ記法が必要となり、コードが読みにくくなる。
ヒアドキュメントでは開始位置と終了位置を特定の文字パターンで示し、その間に書いた内容をそのまま一つの文字列として扱うことができる。設定ファイルの内容やHTML、SQL文、メール本文など、ある程度まとまった量のテキストをコード中に直に記述する必要がある場合によく利用される。
構文は言語によって異なるが、共通するパターンがある。ヒアドキュメントの開始を示す記号の直後に終端識別子を指定し、次の行から文字列の内容を記述する。行頭に同じ終端識別子が単独で現れた時点で終了となり、そこまでの内容が文字列として解釈される。終端識別子には任意の文字列を使用でき、慣用的に「EOF」や「END」などがよく用いられる。
例えば、bashなどのシェルスクリプトでは「<<」に続けて終端識別子を記述し、その後の複数行をコマンドの標準入力として渡す。ファイル生成やメッセージ出力、外部プログラムへのデータ受け渡しなどに広く利用されている。PerlやPHP、Rubyにも同様の仕組みがあり、それぞれ独自の構文を備えている。Pythonにはヒアドキュメント構文は存在しないが、三連引用符(「"""」または「'''」)が同様の目的に使われる。
ヒアドキュメント内での変数展開の可否は言語や記法によって異なる。bashでは終端識別子をシングルクォート(')で囲むと展開が抑制され、囲まなければ変数が展開される。この違いを利用して、内容を動的に生成する用途と、記述内容をそのまま保持する用途を使い分けることができる。近年のプログラミング言語ではテンプレート文字列など目的の近い機能も提供されているが、ヒアドキュメントは開始・終端識別子で範囲を囲む方式の構文を指すことが一般的である。