Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

文字列リテラル(文字列リテラル)とは | 意味や読み方など丁寧でわかりやすい用語解説

文字列リテラル(文字列リテラル)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

文字列リテラル (文字列リテラル)

英語表記

string literal (ストリングリテラル)

用語解説

プログラムにおいて、値そのものを直接記述したものを「リテラル」と呼ぶ。例えば、数値「123」や真偽値「true」などがリテラルである。その中でも、テキストデータを表現するために用いられる特定のリテラルが「文字列リテラル」だ。プログラムコードの中に、人間が読み書きできるテキスト情報を、決まった形式で直接埋め込む際に使用される。具体的には、画面に「Hello World」と表示させたり、ユーザーからの入力メッセージを保存したり、ファイルパスを指定したりする際に不可欠な要素となる。プログラミング言語では、これらの文字列リテラルを、通常はダブルクォート(")やシングルクォート(')で囲むことで表現する。これにより、コンパイラやインタプリタは、それがプログラムの命令文ではなく、あくまでデータとしてのテキストであると区別できる。文字列リテラルは、現代のソフトウェア開発において、ユーザーインターフェースやデータ処理の根幹をなす、極めて基本的ながら重要な概念である。

文字列リテラルの記述方法は、プログラミング言語によって若干異なるが、多くの言語では引用符で囲むのが一般的だ。ダブルクォートで囲む例としては、C言語、Java、JavaScript、Pythonなどがある。"Hello, world!" のように記述する。シングルクォートで囲む例としては、JavaScript、Python、Rubyなどがあり、'hello' のように記述する。言語によっては、どちらの引用符を使っても同じ文字列リテラルを表現できる場合も多い。例えばPythonやJavaScriptでは、"abc" も 'abc' も同じ文字列を表す。特定のケースでは、一方の引用符が文字列内に含まれる場合に、もう一方の引用符を使うことで、文字列の記述を簡潔にできる。例えば、"He said 'Hello!'" のようにシングルクォートを内包する文字列をダブルクォートで囲む、あるいはその逆の使い方ができる。

さらに、JavaScriptやPython、Rubyなどの一部の言語には、バッククォート()で囲む特殊な文字列リテラルが存在する。これは「テンプレートリテラル」や「ヒアドキュメント」などと呼ばれ、複数行にわたる文字列を記述したり、文字列の中に直接変数や式の値を埋め込んだりする機能を持つ。例えば、これは\n複数行の\n文字列です。のように改行コードを使わずに行を分けることができたり、JavaScriptでは ``Hello, ${name}!`` のように変数name` の値を埋め込むことができる。これにより、複雑な文字列生成がより直感的になる。

文字列リテラルを記述する際には、特別な意味を持つ文字を扱う必要がある場合がある。例えば、文字列の中に引用符自体を含めたい場合や、改行、タブといった制御文字を含めたい場合だ。このような時に使われるのが「エスケープシーケンス」である。エスケープシーケンスは、通常バックスラッシュ(\)に続けて特定の文字を記述することで表現される。代表的なものとしては、改行を表す \n、タブを表す \t、バックスラッシュ自体を表す \\、ダブルクォートを表す \"、シングルクォートを表す \' などがある。例えば、"彼は "こんにちは" と言った。" と記述することで、出力時には 彼は "こんにちは" と言った。 と表示される。エスケープシーケンスは、文字列の柔軟な表現を可能にする上で非常に重要な要素である。

文字列リテラルは、多くのプログラミング言語において「文字列型」(String型)というデータ型として扱われる。この文字列型は、文字の並びをデータとして保持するための型だ。重要な特性の一つに「不変性(immutable)」がある。これは、一度作成された文字列リテラルの内容は、その後変更できないという性質を指す。例えば、"Hello" という文字列リテラルがメモリ上に生成された後、その内容を直接 "World" に変更することはできない。もし文字列の一部を変更するような操作を実行しようとすると、実際には新しい文字列がメモリ上に生成され、元の文字列はそのまま残るか、ガベージコレクションの対象となる。この不変性は、プログラムの安定性を高め、マルチスレッド環境でのデータ競合を防ぐなどの利点がある。

プログラミング言語によって、文字列リテラルの内部的な扱いは異なる。C言語のような低水準言語では、文字列リテラルは実際には char 型(文字型)の配列として扱われ、その終端には自動的にヌル文字(\0)が付加される。これはC言語の文字列が「ヌル終端文字列」と呼ばれる理由であり、文字列の終わりを識別するために不可欠だ。C言語では、文字列リテラルは読み取り専用のメモリ領域に配置されることが多く、その内容を変更しようとすると実行時エラー(セグメンテーション違反など)を引き起こす可能性があるため注意が必要だ。一方、JavaやPython、JavaScriptのような高水準言語では、文字列リテラルはより抽象的な「Stringオブジェクト」として扱われ、文字列操作のための豊富なメソッド(文字の検索、置換、部分文字列の抽出など)が提供される。

プログラムにおいて、複数の文字列リテラルや変数を結合して一つの長い文字列を生成する操作は頻繁に行われる。これは「文字列連結」と呼ばれる。多くの言語では + 演算子を用いて文字列連結を行うことができる。例えば、JavaScriptでは "Hello, " + "World!" は "Hello, World!" となる。また、言語によっては、join メソッド(Python)や concat メソッド(Java, JavaScript)など、専用の関数やメソッドが用意されている場合もある。

システムエンジニアを目指す初心者にとって、文字列リテラルはプログラムの基本的な構成要素であり、その正確な記述方法、エスケープシーケンスの利用、そして不変性といった特性を理解することは非常に重要である。これらを適切に扱うことで、ユーザーインターフェースの構築からデータ処理、ログ出力に至るまで、様々な場面で正確かつ意図通りのテキスト操作が可能となる。

関連コンテンツ

関連IT用語