データ型

文字列型 もじれつがた

文字列Stringテキストデータ型エンコーディングUnicode
文字列型について教えて

簡単に言うとこんな感じ!

文字列型は、コンピューターが「文字や文章」を扱うためのデータの種類だよ!「山田太郎」「hello@example.com」みたいな名前やメールアドレスなど、数字じゃなくて”文字”として扱いたいデータはぜんぶこれに入れるってこと!


文字列型とは

文字列型(String型) とは、プログラムの中で「文字の並び(=文字列)」を格納するためのデータ型です。名前・住所・メッセージ・URLなど、テキストとして扱いたいあらゆる情報がこのデータ型に分類されます。コンピューターは内部的にすべてを数値で処理していますが、文字列型を使うことで「これは文字として扱ってください」とプログラムに伝えられます。

文字列型は、整数型(int)や浮動小数点型(float)などの数値型 と並んで、プログラミングで最も頻繁に使われるデータ型のひとつです。システム開発の現場では、フォームへの入力・データベースへの保存・APIでのデータのやり取りなど、あらゆる場面で文字列型が登場します。

重要なのは、たとえ「123」という数字に見えても、文字列型として定義すれば「文字の “1”・“2”・“3” の並び」として扱われる点です。そのため、文字列の “123” に数値の 1 を足しても “1231” になる(連結)か、エラーになる言語がほとんどで、データ型の意識は発注・設計時に欠かせません。


文字列型の基本的な性質と構造

特性説明
不変性(Immutable)Pythonやのように「一度作った文字列は変更できない」言語が多い
文字の連結"Hello" + " World""Hello World" のように結合できる
長さ(Length)文字列に含まれる文字数を取得できる(例: len("abc") → 3)
インデックス参照先頭を0として何番目の文字かを指定できる(例: "abc"[0]"a"
部分文字列(Substring)一部を切り出す操作(スライス)が可能
比較操作2つの文字列が同じかどうかを比較できる

文字列の表記方法(言語別)

プログラミング言語によって、文字列の書き方(クォートの種類)が異なります。

Python:  name = "山田太郎"   または  name = '山田太郎'
Java:    String name = "山田太郎";
PHP:     $name = "山田太郎";
SQL:     name = '山田太郎'   (シングルクォートが一般的)
JSON:    "name": "山田太郎"  (ダブルクォートのみ)

文字列長の上限(主要DB・言語の比較)

環境型名最大長
MySQLVARCHAR(n)最大65,535バイト
MySQLTEXT約65KB
MySQLLONGTEXT約4GB
PostgreSQLVARCHAR(n)最大10,485,760文字
JavaString約21億文字(理論値)
Pythonstrメモリの許す限り
SQL ServerNVARCHAR(MAX)約2GB

歴史と背景

  • 1960年代 — 初期のプログラミング言語(FORTRANなど)では文字列の扱いは非常に限定的。固定長の文字配列が主流だった
  • 1964年 — BASIC言語が登場し、$ 記号を末尾に付けた変数(例: NAME$)で文字列を扱う方式が普及
  • 1970年代C言語が「文字の配列(char[])」として文字列を表現する方式を確立。末尾に \0(ヌル文字)を置いて文字列の終端を示す方式(ヌル終端文字列)が広まる
  • 1980年代〜 — Pascal系言語では先頭バイトに長さを格納する「Pascal文字列」方式も使われた
  • 1991年 — Python登場。文字列をオブジェクトとして扱い、豊富なメソッドを提供する設計が後の言語に影響を与える
  • 1991年Unicode(文字コードの国際標準)が策定され、世界中の文字を統一的に扱うための土台ができる
  • 2000年代〜 — Java・C#・Pythonなど多くのモダン言語が文字列をUnicodeベースで扱うようになり、多言語対応が標準化される
  • 現在 — WebAPIやデータベースでのJSONやりとりでは文字列型が最重要データ型のひとつ。文字コード(UTF-8など)への理解がシステム設計に必須となっている

文字列型と文字コードの関係

文字列型を正しく扱うには、文字コード(エンコーディング) の理解が欠かせません。文字コードとは「どの文字にどの数値を割り当てるか」の規則集です。文字コードの不一致が「文字化け」の原因になります。

文字列「あ」が保存・転送される流れ 文字列型変数 "あ" エンコード UTF-8変換 E3 81 82 バイト列 0xE3 0x81 0x82 主な文字コード比較 文字コード 特徴 主な用途 UTF-8 世界の文字を可変長バイトで表現 Webの標準・JSON・Linux UTF-16 2〜4バイトで全文字を表現 Java・Windows内部・Word Shift_JIS 日本語向け独自規格 古い日本のシステム・CSV ASCII 英数字・記号のみ128文字 プログラムコード・設定ファイル

実務での注意ポイント:文字化けを防ぐには

システム発注・設計時に「文字コードをUTF-8に統一する」と明示することが、文字化けトラブルを防ぐ最短経路です。データベース・アプリ・ファイル転送の3つすべてで文字コードが一致していないと、特に日本語・中国語・絵文字などが文字化けします。


関連する規格・RFC

規格・RFC番号内容
RFC 3629UTF-8の仕様を定めた標準(8ビット形式のUnicode変換フォーマット)
RFC 20ASCII文字コードの定義(7ビット符号化文字集合)
RFC 5646言語タグ(文字列の言語属性を示すフォーマット)の標準

関連用語

  • 整数型 — 小数点を持たない整数値を扱うデータ型
  • 浮動小数点型 — 小数や非常に大きな数値を扱うデータ型
  • データ型 — データの種類・性質を定義する概念の総称
  • Unicode — 世界中の文字を統一的に表現するための国際文字コード規格
  • 文字コード — 文字と数値の対応関係を定めたルール(UTF-8・Shift_JISなど)
  • NULL値 — 「値が存在しない・不明」を表す特別な状態
  • バリデーション — 入力された文字列が正しい形式かどうかを検証する処理
  • 正規表現 — 文字列のパターンマッチングを行うための記述ルール