UnWeeklyAlteryxTips#120 BOMとの付き合い方

Alteryx

AlteryxのTipsを不定期にお届けしている週刊(?)AlteryxTipsです。

今回はBOMについてです。データ出力ツールで、「BOMを書き込む」というオプションがありますが、デフォルトではチェックが入っているかと思います。これが一体なんなのか、紹介していきます。

BOMとは?

BOMは「Byte Order Mark」の略ですが、文字コードに関わるものです。Unicodeという形式で扱われるテキストデータの場合にこれがどのような符号化を行っているか、というのを識別するために使われます。

BOMは、メモ帳などのテキストを扱うソフトでは、基本的に見えません(というか、その部分をカットして見せています)。そのため、BOMのありなしはめちゃくちゃ気づきにくいものです。

また、基本的にはUTF-8/16/32といった文字コードでのみ使われるもので、日本語のWindows標準の日本語ShiftJIS形式の場合はAlteryxではBOMのオプションは無視されます。

実際どのようなものか少し見てみましょう。Alteryxのデータ出力ツールの設定で、BOMを書き込んだ場合、書き込まない場合を比べてみましょう。

バイナリデータを見るためには、Alteryxの場合、Blob入力ツールで読み込み、Blob変換ツールで「HEXでエンコードされたバイナリデータに変換する」オプションを使うことで見ることができます。これは、いわゆるバイナリエディタというジャンルのソフトで見る場合と同じ方法です。

Blob例えば、UTF-8の場合、Blob入力ツールで読み込み、Blob変換ツールを使うと、以下のように見えます。

EFBBBF4669656C64310D0AE38386E382B9E383880D0A

この頭の3バイト(6文字分)「EF BB BF」がBOMです。それ以降がUTF-8エンコードされた文字列です。メモ帳などでこの元のファイルを開くと、頭の6文字は無視して開かれる、ということです。

ちなみに、BOMなしで保存した場合、以下のようになります。

確かに頭の6文字がありません。

BOMによりどのような影響がありますか?

CSVファイルは、Excelで見ることが多いと思いますが、ExcelはなんとBOMなしの場合、文字化けします。逆に、BOMがあれば文字化けしないので、Excelで扱う時はBOMをつける方が扱いやすいと思います。

一方で、連携先のシステムがBOMがあるとエラーが起きることがあります。ですので、何らかのシステムにアップロードする際は、アップロード先のシステムがBOM付きのCSVを受け付けるかどうか(そもそも受け入れ可能な文字コードがUTF-8形式なのか?)をしっかり調べておきましょう。

Alteryxでその他気をつけること

JSON形式のファイルは、ネットワーク送信する際は、BOMはつけない、と決まっています。Alteryxのデータ出力ツールの場合BOMオプションはありません(BOMなし)。しかし、自力でJSON形式にした場合、データ出力ツールでCSVとして出力することがあると思いますが、その場合BOMのあり・なしでJSON送信先で扱えるかどうか、ということがあるので、基本的にはBOM無しで使ったほうが無難です。

まとめ

  • BOMについて簡単に解説しました
  • Alteryxでは、UTF-8/16で出力する場合のみ利用できるオプションです(それ以外の文字コードの場合は無視されます)
  • BOMをつけると頭にバイトオーダーがつきます。出力したファイルを利用するシステムがBOMあり・なし、どちらが良いかしっかりチェックして出力方法を決めましょう
  • Excelで利用するCSVはBOMをつけた方が文字化けが起きません
  • 連携先システムがBOM付きUTF-8ファイルを受け入れるかどうかは事前に調べ、受け入れ不可能な場合はBOMをつけないで保存してください
  • JSONを自力でパースしてCSVとして保存する場合は、BOMなしが推奨です
  • XMLなどの場合は処理系次第です(が、ない方が良いかも)
  • HTMLはBOM無しが基本です

サンプルワークフローダウンロード

コメント

タイトルとURLをコピーしました