平文 (プレーンテキスト)
暗号化されていない、人間が直接読める形式のテキストデータ。
平文 (プレーンテキスト) とは、暗号化や特別なエンコーディングが施されていない、そのまま読める状態のテキストデータです。この用語は 2 つの文脈で使われます。暗号化の分野では暗号化前の原文データを指し、テキスト処理の分野では書式情報 (フォント、色、レイアウトなど) を含まない純粋な文字列データを意味します。
セキュリティの観点では、パスワードや個人情報を平文のまま保存・送信することは重大なリスクです。データベースにパスワードを平文で保存すると、データ漏洩時に全ユーザーのパスワードが即座に露出します。現代のベストプラクティスでは、パスワードは bcrypt や Argon2 などのハッシュ関数で不可逆に変換してから保存します。また、通信経路でも平文の HTTP ではなく HTTPS (TLS) を使用し、データを暗号化して送受信することが標準となっています。
テキスト処理の文脈では、プレーンテキストは書式情報を一切含まない純粋なテキストデータを意味します。拡張子 .txt のファイルが代表例で、HTML、Markdown、リッチテキスト (RTF)、Word 文書 (.docx) などの書式付きテキストと対比されます。プレーンテキストはどのテキストエディタでも開くことができ、プログラムによる処理も容易です。設定ファイル、ログファイル、CSV データなど、多くのシステムがプレーンテキスト形式を基盤としています。
よくある誤解として、「プレーンテキスト = ASCII のみ」と考えるケースがあります。実際にはプレーンテキストは文字エンコーディングに依存しており、UTF-8 でエンコードされたプレーンテキストは日本語や絵文字も含むことができます。重要なのは書式情報の有無であり、文字種の制限ではありません。同時に、プレーンテキストはどのエンコーディングで書かれたかを自分自身の中に示す仕組みを持たないため、受け手が推測を誤ると文字化けします。ファイルを受け渡す際にエンコーディングと改行コードを取り決めておくのが実務上の定石です。
プレーンテキストと Markdown の関係も理解しておくと有用です。Markdown はプレーンテキストに軽量な書式記法を加えたもので、そのままでも人間が読める点が特徴です。一方、HTML はタグによる構造化が前提であり、ソースコードの可読性はプレーンテキストに劣ります。メールの世界では text/plain と text/html の 2 形式が併用されており、受信者の環境に応じて表示が切り替わります。
文字数カウントにおいて、プレーンテキストは最もシンプルな計測対象です。HTML 文書の文字数を数えるときはタグを除外する前処理が必要ですが、プレーンテキストならその工程が不要で、ファイルの中身をそのまま数えられます。
ただし「プレーンテキストなら見た目の文字数と数えた文字数が一致する」とは限りません。書式情報が無いことと、1 文字の境界が自明であることは別の問題です。家族を表す絵文字 👨👩👧👦 は、JavaScript の length では 11、コードポイント単位 (Array.from) では 7 と数えられ、見た目どおりの 1 になるのは書記素クラスタ単位で数える Intl.Segmenter だけです。結合文字も同様で、見た目が同じ「が」に、合成済みの 1 文字 (U+304C) と「か」+ 結合文字の濁点 (U+304B U+3099) という 2 文字の形の両方があり得ます。プレーンテキストで省けるのはタグ除去までで、数える単位と正規化形をどう揃えるかは別に決める必要があります。