BOMとは?IT初心者にもわかる文字コードとの関係と役割を解説
はじめに
プログラミングやファイル編集の現場で「BOM付きUTF-8」や「BOMなしUTF-8」という言葉を見たことはありませんか?
BOM(ビーオーエム)は、文字コードの世界で重要な役割を持つ概念のひとつです。
しかし、BOMとは何か、なぜ必要なのか、あるいはなぜ「BOMなし」を推奨する場面があるのか――
意外と理解されにくい部分でもあります。
この記事では、BOMの意味・仕組み・使いどころについて、初心者にも分かりやすく解説します。
1. BOMとは?
**BOM(Byte Order Mark)とは、
テキストファイルの先頭に付加される「文字コードの種類やバイト順序を示す目印(マーク)」**のことです。
簡単に言うと、BOMは「このファイルはどんな形式で文字を表現しています」という情報をパソコンに伝える旗印のような存在です。
2. どんな時に使われるのか
BOMは主にUnicode(ユニコード)系の文字コードで使われます。
特にUTF-8やUTF-16などのファイルで、エンコーディング(文字コードの表現方法)を識別するために付けられます。
● 代表的な文字コードとBOMの対応
| 文字コード | BOMの有無 | 用途例 |
|---|---|---|
| UTF-8 | 任意(BOM付き/BOMなし) | Web・プログラムファイル |
| UTF-16(LE/BE) | 必須 | Windows・日本語文書 |
| UTF-32 | 必須 | 特殊なシステム用途 |
3. BOMの中身(バイト列)
BOMは実際には「数バイトの特殊なデータ」です。
たとえばUTF-8の場合、ファイルの先頭に次の3バイトが入っています。
EF BB BF
この「EF BB BF」を見たとき、コンピュータは「このファイルはUTF-8形式だな」と判断します。
他の文字コードの場合:
| 文字コード | BOMのバイト列 | 説明 |
| UTF-8 | EF BB BF | 一般的に任意 |
| UTF-16LE | FF FE | リトルエンディアン形式 |
| UTF-16BE | FE FF | ビッグエンディアン形式 |
| UTF-32LE | FF FE 00 00 | 4バイトのリトルエンディアン |
| UTF-32BE | 00 00 FE FF | 4バイトのビッグエンディアン |
4. BOMの役割
BOMの主な目的は、文字コードの自動判別を助けることです。
たとえば、あるファイルをアプリで開いたときに、
「UTF-8なのかUTF-16なのか」を判断できなければ文字化けが発生します。
そこで、BOMが付いていればソフトウェアは正しい文字コードを自動認識できるのです。
5. BOMのメリットとデメリット
● メリット
- 文字コードを自動判別できる
→ 開くアプリやシステムがBOMを見て適切に文字を表示できる。 - 異なる環境間で文字化けを防ぎやすい
→ 特にWindowsなどUnicodeベースのシステムでは有効。
● デメリット
- 一部のアプリやWeb環境では不具合の原因になる
→ 例:BOM付きのUTF-8ファイルをWebページとして扱うと、
先頭に「不可視の文字」が出力され、PHPやJSONなどでエラーを引き起こすことがあります。 - 他のシステムとの互換性が下がる
→ UNIX系やLinuxの世界では「BOMなしUTF-8」が標準とされています。
6. 「BOM付き」と「BOMなし」の使い分け
| 目的・環境 | 推奨形式 | 理由 |
| Webページ(HTML、CSS、JavaScript) | BOMなしUTF-8 | 先頭文字のエラー防止のため |
| Windows用テキスト(メモ帳など) | BOM付きUTF-8 | 自動判別による文字化け防止 |
| プログラムソースコード(Python、PHPなど) | BOMなしUTF-8 | 実行時エラー回避のため |
| Excel・Wordなどの文書 | BOM付きUTF-8またはUTF-16 | Microsoft製品の互換性を考慮 |
7. BOMの確認と変換方法
● ファイルのBOMを確認するには
- VSCode:右下の文字コード表示から「UTF-8(BOM付き/なし)」を確認・変更可能
- Notepad++:メニューの「エンコーディング」から確認
- Linuxコマンド:
hexdump -C ファイル名 | headで先頭にef bb bfが見えればBOM付きです。
● BOMを削除(変換)するには
- **VSCodeやNotepad++**で「UTF-8(BOMなし)」に変換して保存
- Linuxで変換する場合
iconv -f UTF-8 -t UTF-8 -o 出力.txt 入力.txt
まとめ
| 項目 | 内容 |
| 定義 | ファイルの先頭にある「文字コードを示すマーク」 |
| 主な目的 | 文字化け防止・エンコーディング識別 |
| メリット | 自動判別・互換性向上 |
| デメリット | Webやプログラムでは不具合の原因になることも |
| 推奨設定 | Web・プログラミングでは「BOMなしUTF-8」推奨 |
BOMとは、文字コードの世界を裏で支える小さな存在です。
普段は意識しないかもしれませんが、**「BOMの有無」**を理解することで、
文字化けやプログラムエラーを防ぎ、より安定したシステム運用ができるようになります。


