シングルクォーテーション(')は、プログラミングで文字列を囲むときに使う記号です。実務でつまずきやすいのは「ダブルクォーテーションとどう使い分けるのか」「言語によって挙動がどう違うのか」「クォートが原因でエラーが出る」という3点ではないでしょうか。この記事では、記号の基礎から主要言語での使い分け、よくあるエラーの対処までを実務目線で整理します。
この記事でわかること
- シングルクォーテーションの読み方・意味と、似た記号との違い
- プログラミングでの「文字列を囲む」役割
- 主要言語(Python / JavaScript / PHP / SQL / Excel)での使い分け早見表
- クォートが原因で起こるエラーと対処法
シングルクォーテーションとは
シングルクォーテーション(single quotation)は、文字を1つの点で囲む引用符「'」のことです。日本語では「一重引用符」とも呼ばれます。テキストの世界では引用や強調を示す記号ですが、プログラミングの世界では主に文字列を囲む記号として使われます。
読み方・記号の意味(半角と全角)
読み方は「シングルクォーテーション」または「シングルクオート」。コードで使うのは原則として半角の「’」です。全角の「’」「’」やキーボードの「‘ ’」(カーリークォート)は見た目が似ていても文字コードが異なるため、プログラムに貼り付けるとエラーになることがあります。コードに使うのは必ず半角と覚えておきましょう。
アポストロフィ・バッククォートとの違い
シングルクォーテーションと混同されやすいのが、次の2つの記号です。役割がまったく違うため、ここで切り分けておきます。
| 記号 | 名称 | 主な役割 |
|---|---|---|
' |
シングルクォーテーション | 文字列を囲む(一重引用符) |
' |
アポストロフィ | 英語の省略・所有格(I’m など)。規格上は「’」と同一視される |
` |
バッククォート | 別物の記号。JavaScriptのテンプレートリテラルやMarkdownのコード表記に使う |
特に注意したいのがバッククォート(`)です。キーボードでの位置が近く見た目も似ていますが、シングルクォーテーションとは完全に別の記号で、用途も異なります。「文字列を囲んだはずなのに動かない」というときは、バッククォートと取り違えていないか確認すると解決することがあります。
ダブルクォーテーションとの基本的な違い
点が2つの「"」はダブルクォーテーション(二重引用符)です。シングルとダブルはどちらも文字列を囲めますが、どちらを使うべきか・両者で挙動が変わるかは言語によって異なります。この「言語ごとの差」が実務で最も重要なポイントなので、次章で早見表にまとめます。
プログラミングでの役割 ― 文字列を囲む
プログラムの中で「これは数値や命令ではなく、ただの文字の並び(文字列)です」とコンピュータに伝えるために、文字列はクォーテーションで囲みます。これを文字列リテラルと呼びます。
文字列リテラルの例
message = 'Hello' # 'Hello' という文字列
number = 100 # こちらは数値(クォート不要)
多くの言語ではシングルとダブルのどちらで囲んでも文字列として扱われます。「ではどちらを使えばいいのか」は、言語ごとの慣習や挙動の違いで決まります。
【早見表】主要言語でのシングル/ダブルの使い分け
実務で迷いやすい主要5環境について、シングルとダブルの使い分けを一覧にまとめます。まず全体像を表で確認し、続いて言語ごとに要点を補足します。
| 言語 / 環境 | シングルとダブルの扱い | 使い分けの目安 |
|---|---|---|
| Python | 挙動は同じ | 慣習的にシングルが好まれる。文字列内の引用符で使い分け |
| JavaScript | 挙動は同じ | プロジェクトの規約次第。変数の埋め込みはバッククォート |
| PHP | 挙動が異なる | シングルは変数を展開しない/ダブルは展開する |
| SQL | 役割が異なる | 文字列はシングルが標準。ダブルは識別子(列名など) |
| Excel / VBA | 用途が異なる | セル先頭の「’」は文字列化の指示。VBAの文字列はダブル |
Python ― 挙動は同じ、慣習でシングル
Pythonではシングルとダブルに機能差はなく、どちらで囲んでも同じ文字列になります。コーディング規約(PEP 8)でも特に強制はありませんが、慣習としてシングルを使う場面が多めです。文字列の中にシングルを含めたいときはダブルで囲む、という使い分けがスマートです。
Python
a = 'hello'
b = "hello" # a と b は同じ
c = "It's fine" # 中に ' を含むのでダブルで囲むと楽
JavaScript ― どちらでも可、埋め込みはバッククォート
JavaScriptもシングルとダブルに機能差はありません。どちらを使うかはチームの規約(ESLintなど)で揃えるのが一般的です。変数を文字列に埋め込みたいときは、シングルでもダブルでもなくバッククォート(テンプレートリテラル)を使います。
JavaScript
const name = 'Taro';
console.log('Hello ' + name); // 連結
console.log(`Hello ${name}`); // バッククォートで埋め込み
PHP ― シングルとダブルで挙動が変わる(最重要)
PHPは使い分けが挙動に直結する代表例です。シングルで囲むと変数は展開されず文字どおり出力され、ダブルで囲むと変数が値に置き換わって展開されます。意図せぬ表示崩れの原因になりやすいので、変数を埋め込みたいのかどうかで選びます。
PHP
$name = 'Taro';
echo 'Hello, $name'; // 出力: Hello, $name(展開されない)
echo "Hello, $name"; // 出力: Hello, Taro(展開される)
SQL ― 文字列はシングル、ダブルは識別子
SQLでは役割がはっきり分かれます。文字列(値)を囲むのはシングルが標準で、ダブルは列名やテーブル名といった識別子を囲む用途です(この扱いはデータベース製品によって差があります)。文字列にシングルを使う点を押さえておけば、まず困りません。
SQL
SELECT * FROM users WHERE name = 'Taro'; -- 値はシングル
Excel / VBA ― 先頭の「’」は文字列化の指示
Excelのセルでは、先頭に半角の「’」を付けると、その内容を強制的に文字列として扱う指示になります。電話番号や「001」のような先頭ゼロを消したくないときに便利です。この「’」は表示上は見えず、数式バーにだけ現れます。なお、VBAのコード内で文字列を囲むのはダブルクォーテーションです。
Excel / VBA
セル入力: '001 # 「001」と文字列で表示(先頭ゼロが消えない)
VBA: msg = "Hello" # VBAの文字列はダブル
よくあるエラーと対処法
シングルクォーテーションは、文字列の中にクォートが混ざったときにエラーを起こしがちです。代表的なつまずきと対処を整理します。
文字列の中にクォートを含めたい
文字列の中に同じ種類のクォートが現れると、そこで文字列が終わったと解釈され、エラーや意図しない動作になります。対処は主に2つ。バックスラッシュでエスケープする(\')か、囲む側をもう一方のクォートに変えるかです。SQLでは「’」を2つ続ける('')二重化で表現します。
クォートを含める3つの方法
'It\'s ok' # エスケープ(\')
"It's ok" # 囲む側をダブルに変える
'It''s ok' # SQLは '' で二重化
SQLでクォートが原因のエラー
入力値にシングルが含まれると、SQL文が途中で切れてエラーになります。これは見た目の不具合にとどまらず、SQLインジェクションという脆弱性の入り口にもなります。値を文字列連結で直接埋め込むのではなく、プレースホルダ(バインド変数)を使うのが安全な対処です。
Excelで先頭の「’」が消える/表示される
Excelで入力した先頭の「’」が見えなくなるのは、文字列化の指示として正しく機能している証拠です。逆に「’」がセルにそのまま残って見えてしまう場合は、全角の「’」を入力していたり、セルの書式が文字列に設定されていたりすることが原因です。半角で入力しているかを確認しましょう。
全角・半角の違いで動かない
最も多いつまずきが、全角の「’」やカーリークォート「‘ ’」をコードに使ってしまうケースです。見た目は似ていても別の文字なので、プログラムは文字列の開始として認識しません。Webページからコードをコピーすると自動で全角や装飾付きクォートに変換されることがあるため、貼り付け後は半角の「’」に置き換えるのが確実です。
まとめ
この記事の要点
- シングルクォーテーション(’)は文字列を囲む一重引用符。コードでは必ず半角を使う
- アポストロフィやバッククォート(`)と混同しないこと
- Python・JavaScriptは挙動が同じ、PHPは変数展開の有無で挙動が変わる
- SQLは文字列にシングル、Excelは先頭の「’」で文字列化
- クォートを含めたいときはエスケープ(\’)か囲む側の変更、SQLは二重化(”)
よくある質問
シングルとダブル、どちらを使うべきですか?
PythonやJavaScriptでは挙動が同じなので、プロジェクトの規約に合わせれば問題ありません。一方PHPでは、変数を展開したいならダブル、文字どおり出力したいならシングルと使い分けます。SQLでは文字列にシングルを使うのが標準です。
アポストロフィとシングルクォーテーションは同じ記号ですか?
本来は別の記号ですが、形がほとんど同じことから、コンピュータ上では同一視され「’」(半角)が両方の用途で使われています。文字列を囲む記号として使う分には同じものと考えて差し支えありません。
全角の「’」でもプログラムは動きますか?
動きません。全角クォートやカーリークォート(‘ ’)は半角の「’」とは別の文字なので、文字列の開始として認識されずエラーになります。コードには必ず半角を使ってください。
バッククォート(`)との違いは何ですか?
バッククォートはシングルクォーテーションとは別の記号です。JavaScriptでは変数を埋め込むテンプレートリテラルに、Markdownではコード表記に使います。文字列を囲む一般的な用途で使う記号ではありません。
研究をシェア!
