全角・半角変換ツールの使い方
本ツールは、テキストエリアに入力された文字をリアルタイムで全角から半角、または半角から全角へ変換します。画面上部のタブで変換方向(「全角 → 半角」「半角 → 全角」)を切り替え、チェックボックスで変換対象(英数字・記号、カタカナ)を選択できます。変換処理はすべてブラウザ上の JavaScript で完結し、サーバーへのデータ送信は一切行いません。個人情報や機密データを含むテキストでも安心してご利用いただけます。変換結果はワンクリックでクリップボードにコピーでき、そのまま他のアプリケーションに貼り付けられます。
全角と半角とは
「全角」と「半角」は、日本語コンピューティングにおける文字幅の概念です。この区別は1970年代の日本語文字コード規格に起源を持ちます。JIS X 0201(1969年制定)では英数字とカタカナが1バイト(半角幅)で定義され、JIS X 0208(1978年制定)では漢字・ひらがな・全角カタカナなどが2バイト(全角幅)で表現されました。
現在主流のUnicodeでは、文字のバイト数と表示幅は直接対応しませんが、歴史的経緯から全角・半角の区別は残っています。Unicode上では全角英数字は U+FF01〜U+FF5E(Fullwidth Forms)に配置され、対応する半角文字(U+0021〜U+007E、いわゆるASCII)との間にはコードポイント差 0xFEE0 が存在します。半角カタカナは U+FF65〜U+FF9F に配置されています。Unicode正規化形式のNFKC(Normalization Form KC)を適用すると、全角英数字は対応する半角ASCII文字に変換されます。
全角半角変換が必要なケース
実務では以下のような場面で全角半角の統一が求められます。
- フォーム入力のバリデーション — ユーザーが全角で入力した電話番号やメールアドレスを半角に正規化し、正しい形式チェックを行う。
- データの正規化・名寄せ — 顧客データベースで「東京都」と「東京都」のように全角半角が混在すると重複判定が困難になるため、統一処理を行う。
- 住所・電話番号の表記統一 — 郵便番号や電話番号のハイフン、番地の数字を半角に揃えることで、帳票出力や外部システム連携時の不具合を防ぐ。
- CSV・Excelデータのクレンジング — 複数ソースから集めたCSVデータで全角数字と半角数字が混在する場合、集計・ソート・フィルタリングが正しく動作しない。事前に半角へ統一することでデータ品質を担保する。
- 検索精度の向上 — 全文検索エンジンのインデックス構築時に文字幅を正規化することで、「ABC」と「ABC」を同一トークンとして扱い、検索漏れを防止する。
対応する文字種と変換例
本ツールが対応する文字種と、それぞれの変換例は以下の通りです。
| 文字種 | 全角 | 半角 |
|---|---|---|
| 英大文字 | A B C … Z | A B C … Z |
| 英小文字 | a b c … z | a b c … z |
| 数字 | 0 1 2 … 9 | 0 1 2 … 9 |
| 記号 | ! @ # $ % | ! @ # $ % |
| スペース | (U+3000) | (U+0020) |
| カタカナ | アイウエオ ガギグ | アイウエオ ガギグ |
カタカナの濁音・半濁音は特に注意が必要です。全角では「ガ」(1文字)ですが、半角では「ガ」(基本文字+濁点の2文字)となり、文字数が変わります。本ツールではこの結合処理も正しく行います。
プログラミングでの全角半角処理
開発者が全角半角変換をコードで実装する場合、主に2つのアプローチがあります。
1. Unicodeコードポイントのオフセット計算 — 全角英数字・記号(U+FF01〜U+FF5E)と対応するASCII文字(U+0021〜U+007E)の差は一律 0xFEE0 です。JavaScriptでは str.charCodeAt(i) - 0xFEE0 で半角化、str.charCodeAt(i) + 0xFEE0 で全角化できます。全角スペース(U+3000)は個別に半角スペース(U+0020)へマッピングします。
2. 正規表現とマッピングテーブル — カタカナは濁点・半濁点の結合処理が必要なため、単純なオフセット計算では対応できません。全角カタカナから半角カタカナへの変換テーブル(例:「ガ」→「ガ」)を用意し、正規表現 /[ァ-ヶ]/g でマッチさせて置換するのが確実な方法です。Pythonでは unicodedata.normalize('NFKC', text) を使うことで、全角英数字の半角化とカタカナの全角化を一括で行えます。
よくある質問(FAQ)
全角と半角の違いは何ですか?
全角文字は日本語フォントで1文字分の幅を占め、主にJIS X 0208規格に由来します。半角文字はその半分の幅で、ASCII文字やJIS X 0201のカタカナが該当します。Unicodeでは全角英数字はU+FF01〜U+FF5Eに、半角カタカナはU+FF65〜U+FF9Fに割り当てられています。
なぜ全角半角変換が必要なのですか?
Webフォームのバリデーション、データベースの検索精度向上、CSVやExcelデータのクレンジング、住所・電話番号の表記統一など、多くの実務場面で全角半角の統一が求められます。文字幅が混在するとデータの重複判定や並び替えに不具合が生じるため、正規化処理が不可欠です。
全角カタカナと半角カタカナの違いは何ですか?
全角カタカナ(ア〜ン)はUnicodeのU+30A0〜U+30FFに含まれ、濁点・半濁点が1文字として表現されます。半角カタカナ(ア〜ン)はU+FF65〜U+FF9Fに含まれ、濁音・半濁音は基本文字+濁点記号の2文字で表現されるため、文字数が異なる場合があります。
プログラムで全角半角変換を行う方法は?
JavaScriptではString.prototype.charCodeAt()とString.fromCharCode()を使い、Unicodeコードポイントのオフセット(0xFEE0)を加減算して変換できます。Pythonではunicodedataモジュールのnormalize('NFKC', text)で半角化が可能です。カタカナは濁点結合の処理が必要なため、専用のマッピングテーブルを用いるのが確実です。
全角スペースと半角スペースはどう違いますか?
全角スペース(U+3000)は日本語の1文字分の幅を持ち、半角スペース(U+0020)はその半分です。HTMLやプログラムのソースコードでは半角スペースが標準ですが、日本語文書では全角スペースが使われることがあり、データ処理時には統一が必要です。