「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

バイトオーダーマーク(BOM)

pointこの用語のポイント

point「Unicodeで書かれているよ~」な目印だよ

pointテキストファイルの先頭に付くよ

point付いていない場合もあるよ

pointデータの並び順(エンディアン)が書いてあるよ

point「BOM」と表現された場合は「Byte Order Mark」の略だよ

スポンサーリンク

簡単に書くよ

バイトオーダーマーク(BOM)(英:byte order mark)とは

Unicodeで書かれたテキストファイル(中身が文字だけのファイル)の先頭に付ける「このファイルはUnicodeで書かれていますよ~」を示す目印データのこと
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として

テキストデータ
テキストファイル
Unicode


について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

テキストデータは「なんの装飾もされていない文字だけのデータ」です。
人間様が読んで全貌を解明できるようになっています。
メモ帳ソフトで開いて中身が分かるデータ」と解釈しても かまいません。

バイトオーダーマーク(BOM)

テキストファイルは「中身がテキストデータなファイル」です。

バイトオーダーマーク(BOM)2

Unicodeは「UTF-8とかUTF-16とか」です。

……すみません。
豪快にウソを書きました。

バイトオーダーマーク(BOM)3

「Unicodeが何か?」を説明しようとすると、その前に予備知識を いっぱい説明する必要があります。
そのため、このページで全部 説明するのは諦めます。
ちゃんとした意味が知りたい人は、用語「Unicode」の説明を ご覧ください。

バイトオーダーマーク(BOM)4

雰囲気を感じ取れれば満足な人は(ちょっと間違った説明ですが)ファイルが何語で書かれているかだと思ってください。

(本当は違いますが)英語で書かれたファイル」や「日本語で書かれたファイル」と似たようなイメージです。
UTF-8で書かれたファイル」や「Shift_JISで書かれたファイル」などと出てきたら「『UTF-8』語で書かれたファイル」や「『Shift_JIS』語で書かれたファイル」と読み替えてください。
それで何となくのイメージは つかめるはずです。

バイトオーダーマーク(BOM)5

以上を踏まえて

Unicode語で書かれたテキストファイルの中身の最初にくっついている「これはUnicodeだからね!」を示す目印

が「バイトオーダーマーク」です。

バイトオーダーマーク(BOM)6

一般的には「Byte Order Mark(バイト・オーダー・マーク)」を省略して「BOM(ボム)」と表現されます。

バイトオーダーマーク(BOM)7

※「Byte Order Mark」を何となく日本語にすると「バイトの順序の印」となります。[詳細]

注意点として、Unicodeのファイルなら必ずBOMがくっつくわけでは ありません。
BOMがくっついていないやつも普通にあります。
BOMをくっつけるか否かの判断はケース・バイ・ケースです。
本題とズレるので、ここで説明するのは止めておきますね。

「それじゃあ、なんで わざわざ そんなものをくっつけるの?」と疑問に感じる方もいるかもしれませんね。

……聞いちゃいます?
BOMをくっつける理由を聞いちゃいますか?

1つは

「このファイルはUnicodeだぜ!」と熱く主張するため

です。
英語や日本語があるように、Unicode以外にも「Shift_JISShift-JISSJIS」とか「EUC-JP」とか似たようなポジションの奴らが いっぱい います。
そいつらに負けないように「俺はShift_JISでもEUC-JPでもなくUnicodeだからね!」と主張しているマークなのです。

もう1つは

エンディアンバイトオーダは、これだから」という情報を示すため

です。
BOMの中でエンディアンが指定されています。

……さらっと書いた「エンディアン」ってなんだよ?と思いますよね。
エンディアンは、サクっと説明すると「マルチバイトなデータの並び順」です。
バイトオーダはエンディアンの別の呼び名です。

例えば、そうですね。
「あ~、腹減ったな~。何か食べたいな~」と書くとしましょう。

このとき「主語→述語」の順で

腹が減った。ご飯が食べたい。

と書いても伝わりますし「述語→主語」の順で

減ったよ、腹が。食べたいよ、ご飯が。

と書いても伝わりますよね。

同じように、Unicodeで2バイトのデータを書くときは

1バイト目→2バイト目

の順番で書くやり方(最初から書くやり方:ビッグエンディアン

2バイト目→1バイト目

の順番で書くやり方(最後から書くやり方:リトルエンディアンがあるのです。

バイトオーダーマーク(BOM)8

ここで、ファイルの中身を読み取る方の気持ちになって考えてみてください。
「最初から書くやり方」で書かれているのか「最後から書くやり方」で書かれているのか分からないと困りますよね。
どっちから読めば良いのか判断できません。

そこでBOMの中に「どっちから読んでね!」を示す情報を入れておくのです。


image piyo2

一言でまとめるよ

まぁ「バイトオーダーマーク(BOM)」って単語が出てきたら「Unicodeのファイルに付く目印なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像037
書籍画像017

おまけ

■訳してみるよ

「byte(バイト)」はIT用語の「バイト」です。
「order(オーダー)」の意味は「注文」とか「順序」とか「指令」とか「整列」とかです。
「mark(マーク)」の意味は「印」とかです。
何となく くっつけると

バイトの順序の印

となります。


■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
つくって、壊して、直して学ぶ Git&GitHub 入門
実務で役立つ ログの教科書 基礎知識から収集方法・分析手法・トラブルシューティング・パフォーマンス最適化・機械学習での活用まで
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】