1
/
5

#ユーザー勉強会|CSVファイル対応編

【この記事について】
メグリでは、主にご契約いただいているお客様を対象とした勉強会を実施しています。今回はその様子をレポート形式でお届けしたいと思います!

【今回の勉強会テーマ】
CSVファイル編」CSVファイルのデータが壊れたなどのトラブルに見舞われたことのある方も、多いのではないでしょうか。勉強会では、そもそもCSVファイルとは?という概要から、トラブルの回避方法まで紹介します!

<目次>
・CSVファイルとは
・なぜCSVファイルではトラブルが起きがちなのか
・もう少しマニアックなお話し
・問題の回避方法

※本ストーリーは、2023年9月にnoteで公開された記事を転載(一部編集)した記事です。

①CSVファイルとは

「CSV」とは、Comma-Separated Valuesの頭文字をとったもので、「カンマで区切られた値」という意味を持ちます。表形式のデータをシステム間でやり取りするために作られたフォーマットで、中身はテキストデータとなっています。また、コンピュータシステムは基本的にどのようなものでもテキストを扱えるため、CSVファイルは非常に古くから使われています。

Excel用のファイル形式ではない

CSVファイルにありがちな誤解として、Excelのファイル形式ではないという点があります。特に、WindowsだとCSVファイルをダブルクリックすると勝手にExcelが開いてしまいますよね。なので、CSVをExcelのファイル形式だと勘違いしてしまっている方も多いのではないでしょうか。また、Excelの仕様で、CSVを開くとExcel形式に作り変えてしまう、というものがあります。この仕様もデータ破損などのトラブルを引き起こす原因かと思います。

次に、以下の2枚の画像をご覧ください。

1.Numbers(Macの表計算ソフト)でCSVを開いた例

2.同じCSVファイルをテキストエディタで開いた例

上記のふたつの画像は、CSVファイルを表計算ソフトまたはテキストエディタで開いた場合の比較画像です。②のテキストエディタで開いた例を見ていただければ分かると思うのですが、中身はテキストファイルのみです。日付などの数字や値があって、カンマで区切られていますよね。これが①の表計算ソフトを使うと、例えば一行目が見出しになっていたり一列目がラベルになっていたりと、表として見やすくなります。

なので、CSVファイルの内容を見るだけであれば表計算ソフトを使って開く、というのは非常に便利です。
ただ、ファイルの内容を修正をしようとすると、色々とトラブルに繋がることがあるので注意が必要です。

②なぜCSVファイルではトラブルが起きがちなのか

区切り文字の種類

CSVファイルは、Comma-Separated(カンマ区切り)と言いつつも、区切り文字の種類がカンマだけではありません。

一つ目が、よく使われている「タブ区切り」です。「Tab-Separated」という形で、項目の間をタブ(※1)で区切ったデータを指します。そうすると、拡張子は「.tsv」になるのでは?という疑問が起こるかと思うのですが、「.csv」の拡張子でタブ区切りという場合も存在します。これが、ユーザーの混乱を招く原因のひとつなのかもしれないですね。
※1 タブ(Tab):ここでは、パソコンのTabキーを押すと入力される記号のことを指す。

二つ目は、最近はあまり使われていない「空白区切り」です。空白、つまり半角スペースを区切り文字として使用しています。

三つ目が、「セミコロン区切り」です。実は、国によって数字の小数点にカンマを使う地域があるのをご存じでしょうか?そうすると、データ内に数字がある場合、小数点代わりのカンマとCSVの区切りを表すカンマの区別がつかない、という事態が発生します。それは良くないね、ということでセミコロンで区切る「セミコロン区切り」という仕様が誕生しました。これもトラブルが起きがちな区切り方ではあります。

基本的には、CSVファイルの中身が「カンマ区切り」か「タブ区切り」であれば問題はありませんが、トラブルがゼロになる訳ではないので注意は必要です。

文字コードによる問題

実は、OSやソフトウェアによって、使用している文字コード(※2)の種類が異なるのをご存じでしょうか?
※2 文字コード:文字をコンピュータの中で扱う際に、各文字に固有の認識番号を振り分けたもの。

Windowsだと主に「Shift_JIS(シフト ジス)」という文字コードを使っていて、独自仕様が多く機種依存文字の元凶となっています。あとは、サーバー等でよく使われていた「EUC-JP(イーユーシー ジェーピー)」という文字コードですね。UNIX(※3)で日本語を扱うために作られた文字コードです。
※3 UNIX(ユニックス):古くから大規模なコンピュータシステムやワークステーション等で使われてきたOS。マルチタスク・マルチユーザーを実現しており、多くのOSの源流となっている。現在でもサーバ用途にはUNIX系のOSがよく使われている。

また、最近では標準的な仕様となりつつあるものに「UTF-8(ユーティーエフ エイト)」があります。
これは、Unicode(※4)で定められた文字をコード化したものです。文字コードとしては世界的に標準化されており、現状では最も汎用的に使えるのではないかなと思っています。
※4 Unicode(ユニコード):世界的に標準規格となっている文字コードのこと。

3つほど文字コードをご紹介しましたが、それぞれの文字コードには互換性がありません。文字ごとに割り振られている番号も異なります。そのため、文字コードが異なるCSVファイルを読み込むことで文字化けが発生してしまうのです。特に文字化けが起きがちなのは、WebサイトからダウンロードしたCSVファイルや、Macで作られたCSVファイルをWindowsで読み込んだ場合です。Webサイトで生成されたものやMacの場合、UTF-8で作られていることが多く、それをWindowsで取り込むときにShift_JISのつもりで読み込むことで、結果的に文字化けとなってしまいます。


Excelの仕様による問題

CSVファイルをExcelで開いたときに、閲覧するだけであれば問題ないのですが、そのファイルを編集して保存するときに多くの問題が発生しがちです。

Excelのお話に入る前に、Excelの仕様を理解する上で必要な知識である「改行コード」について説明しますね。「改行コード」とはテキストデータの行を変えるよう指示を出す文字コードのことで、文字化けのトラブルに次いで改行コードによる問題もよく見られます。基本的には、キーボードのエンターを押すと行が改行されるのですが、実はWindowsとMacで改行コードが異なるんです。そのため、例えばWindowsのメモ帳を使ってCSVファイルを開くと、改行されていないテキストファイルが開かれてしまうことがあります。改行コードは、先ほど紹介した通りWindowsとMacで異なります。

Mac等では、改行コードを「LF(ラインフィード)」という文字コードのみで表すことが多いのですが、Windowsの場合は「CR(キャリッジリターン:行頭に復帰する意味)」と「LF」の2文字の組み合わせで表す形になっています。そのため、Mac等で作られたデータをWindowsで読み込むと、LFのみでは改行として認識できないので、延々と改行されないテキストファイルのように見えてしまうのです。

Excelで問題なく開くための工夫

吐き出すときのCSVファイルそのものを「BOM付きUTF-8」というファイル形式にして保存すると、トラブルが起こりづらいです。これは「このファイルはUTF-8で書かれているよ」ということをきちんと伝えてくれるファイル形式なんですね。このBOMという情報があると、Excelがファイルを正しく認識して開いてくれるようになります。

ちなみに、MGReからクライアント様へ提供しているCSVファイルも、基本的にはBOM付きUTF-8を採用しています。Excelで開いても基本的に文字化けなどのトラブルが起きないような工夫ですね。

また、開いたCSVファイルをExcelからさらに保存したりエクスポートをしたりする時にも注意が必要です。保存の文字コードをきちんとUTF-8にしないと、今度はファイルの受け入れ側で文字化け等が発生する可能性があります。これを防ぐために、「CSV UTF-8(カンマ区切り)」という保存形式を選んでください。

③もう少しマニアックなお話し

エスケープ文字による問題

ここで、少しマニアックなお話しをしますね。ちょっと専門的な言葉に「エスケープ文字」というものがあります。これは、エスケープ処理(※5)に使われる文字のことで、与えられた文字の意味を無効にしたり、文字に特別な意味を与えるために使われる文字のことです。ここでは、「なんだか特殊な文字なんだな」という認識で問題ありません。
※5 エスケープ処理:文字列に対して、与えらえれた文字の意味を無効にしたり、文字に特別な意味を与えるために行う処理のこと。元々の処理や意味表現を「回避」する目的のためエスケープと呼ばれている。

エスケープの仕様はソフトウェアごとに独自である場合があり、その結果CSVファイルのトラブルの原因のひとつになっています。例えば、表計算のソフトなどで値段を扱うことがあると思うのですが、カンマが3桁ごとに入っていますよね。これをExcelなどの他アプリケーションでCSVにすると、値の中にカンマが含まれているので、数字のカンマか区切り文字のカンマかが区別できなくなってしまうんです。

これを回避するために必要なのがエスケープ処理です。CSVを書きだす際に「“ ”(ダブルクォーテーション)」で囲うことで間に書かれた文字が1つの値だと示すことができ、この間にあるカンマは区切り文字ではなく数字の桁区切りのカンマであることが間違いなく識別できます。

もう一つよくあるのが、Excelなどでセル内改行を使う場合に起こるトラブルです。セルの中で改行があるデータというのは、そもそもCSVでは想定をしていません。そのため、CSVでは単に行が変わったという認識になり、意図していないところで改行をしてしまいます。その行のデータがそこで終わっている、と勘違いしてしまうんですね。その際も、先ほど紹介した「“ ”(ダブルクォーテーション)」で囲うことで、改行トラブルを回避するのですが、改行コードがOSによって違うため、さらにトラブルが起きる原因となっています。

この辺のルールを考慮してシステムを組まないと、トラブルに繋がってしまうので注意が必要です。

数字なのか文字なのかわからない問題

Excelのような表計算ソフトは、一つ一つのセルごとに「数値」「文字列」「日付」など、それぞれの属性値を持っています。属性値とは、セルに対して「これは数値ですよ」「文字列ですよ」「日付ですよ」というのを仕分けできる裏の値のことです。一方で、CSVは全てテキストなので、属性値の区別がありません。そのため、Excel的に文字列として読み込ませたい数値があったときに問題が起きることが多いです。

MGReでもよくある典型的なトラブルだと、例えば会員証の番号が13桁になっていて、頭に6つほど0が続いているような場合ですね。いわゆる「ゼロ埋め文字列」と言われるものなのですが、これをExcelで読み込むと、頭にある0は数字だから要らないよね、という判断になり自動で消されてしまいます。この問題は、最近のExcelバージョンアップによって対応された、という話を聞いていますが、今までは長いこと起きがちなトラブルとして認識されていました。

あとは、日付のつもりで「1/4」と入力したデータが、数字的に「0.25」になってしまうといった問題もありますね。また、欧米だと年度を最後に書くという日付形式(例:2-8-2023)のため、日本形式(例:2023-8-2)で入力してしまうと、システムがうまく解釈できずトラブルになることもあります。

④問題の回避方法

「Power Query(パワークエリ)」を使った回避方法

Excelで開く際は、上記で紹介した問題が発生する可能性がある点を考慮した開き方をしていただく必要があります。問題回避の具体的な一つ目の方法は、Excelにある「Power Query(パワークエリ)」という機能を使うことです。

①「mac OS版」のExcelを使用している場合

新規でブックを作成し、リボンの「データ」からデータファイル指定(Power Query)を選択します。

引用:【サポート情報】CSVファイルをMicrosoft Excelで文字化けせずに開く方法

次に、元のファイルを「UTF-8」、区切り文字を「コンマ」に指定します。下にある表は、「これは日付のデータだよ」「これは時間のデータだよ」などを細かく指定したものになります。見ていただければ分かる通り、1列ごとに細かく指定することが可能です。

ちなみに、Mac版Office365では、 データ>外部データの取り込み>テキストから(レガシ)
を順番に選択することで、テキストファイルが簡単にインポートできる機能である「テキストファイルウィザード」が使えます。これを使うのも一つの手ですね。

②「Windows OS版」のExcelを使用している場合

Excelで新しいブックを開いていただき、リボンの「データ」から「データの取得」を選択します。
そこからさらに、ファイルから>テキストまたはCSVから(T)を順に選択し、読み込ませたいCSVファイルをインポートします。

読み込ませたいCSVファイルをインポートしたら、元のファイル形式「UTF-8」、区切り記号「コンマ」を選択し「データの変換」をクリックします。

そうすると「Power Query エディター」が開くので、任意の箇所を編集することができます。

もし、CSVのファイルの編集が不要で中身だけ見たいのであれば、「データの変換」ではなく「読み込み」をクリックすることで可能です。このように、Power Queryを使うと、取り込みたいCSVデータを間違いなくExcel上で読み込めるので、おすすめ方法のひとつです。

CSV専用ソフトを使った回避方法

CSV専用ソフトは、CSVを編集・保存するための専用ソフトなので、こちらを使っていただくとより安全です。CSV専用エディタについては、記事でまとめられているものがあるので、そちらを紹介しますね。
もし詳しい内容が気になる方は、以下をご参照ください。
「Excel以外でCSVファイルを編集したい」全部無料!おすすめのCSV専用エディター"3選"
Excel風UIのフリーCSVエディタ「CSV+」登場 MacやLinuxにも対応

CSV専用ソフトを使うと、CSVで読み込んだものをCSVで保存できるので、データが破損したり意図しない内容に上書きされたりといったトラブルが起きづらいです。個人的には、CSV専用ソフトを使うのが一番安全かなと思っています。

さいごに

勉強会のまとめになります。

■CSVファイルの中身はすべてテキストデータ。文字コードや改行コードの違いを意識する必要がある
CSVファイルの中身はテキストデータなので、文字コードや改行コードの違いを意識する必要があります。

■CSVはExcel用のファイル形式ではないので、Excelで扱うときは開くときも保存するときも注意が必要ExcelでCSVファイルを開く際は、まずは「Power Query」を使って、ファイル形式「UTF-8」、区切り記号「コンマ」をきちんと指定した形で保存してあげるということが大事です。

■Excelを使わずCSVエディターを使って編集・保存するのが比較的安全
Excelなどのツールを使わず、CSVエディターを使って編集・保存をするのが比較的安全かなと思います。可能であれば、専用ソフトをご利用ください。

<今回の勉強会の話し手>
メグリ株式会社 プランナー 篠田 健吾
2014年 入社。メグリが受託開発を中心に行っていた頃からWebサイト・アプリの分析および企画を担当。『MGRe』のサービス開始後は営業担当として新規案件の提案業務に注力。現在は『MGRe』のプロダクト開発チームでプランニング担当として新機能の企画や改善検討に勤しむ日々。
▶︎Wantedlyアカウント|https://www.wantedly.com/id/shinokichi


Invitation from メグリ株式会社
If this story triggered your interest, have a chat with the team?
メグリ株式会社's job postings

Weekly ranking

Show other rankings
Like Kengo Shinoda's Story
Let Kengo Shinoda's company know you're interested in their content