こんきつね🦊の技術ばなし

🔔 このサイトでは、WEBクライアント技術のプログラム開発で学んだことを共有していきます!

✒️ ファイル形式に関する誤解

最近、「システムやプログラム」とのファイル連携がうまくいかないという話をよく耳にします。「ファイルでの読み込みだとズレてしまうので、その手直しに大変な時間がかかる。」といった声もあります。

ほとんどのシステムやプログラムがCSVファイル、XMLファイル、JSONファイルといったファイルでの外部入力や外部出力に対応しています。 これらの機能は、大量のデータを効率よく入出力できるように、「システムやプログラム」に用意された便利な機能です。

人と「システムやプログラム」との連携のみならず、メーカーの違う「システムやプログラム」間の連携においても、便利に活用されています。

皆様もその恩絵にあずかっている方も多々おられるとおもいます。しかし、連携がうまくできず、困っている人がいるのも確かです。

なぜ、このような問題が発生しているのでしょうか。そこには、ファイルデータ連携という技術に対する誤解が存在しているのかもしれません。

昨今は、AIを使えば、音声や映像を使ってデータ連携することも増えてきました。しかし、大量のデータ(例:名簿、売り上げデータ、仕入データなど)を連携しようとすると、ファイルを使うことの方が多いと思います。

人が作成したデータファイルを「システムやプログラム」に取り込んでもらうという方法です。

データファイルは、キーボード手打ちで作成してもかまいませんし、データベースから読み込んで、必要な項目を抜き出してファイルにしてもかまいません。

いずれにしても、人と「システムやプログラム」の間にファイルを介在させ、データのやりとりを行います。

さて、このファイルですが、「システムやプログラム」はどのようにして、このファイルに書かれているデータを理解しているのでしょうか。

例えば、下記のような中身のファイルが存在した場合、

    林檎 読み方りんご 赤 丸い
    黄 丸い みかん 読み方みかん 甘い
    細長い ふさ バナナ 甘い 読み方ばなな 

人であれば、このようなメモをみせられた時、ほとんどの方は下記のように苦も無く理解できると思います。

    1つ目の行は「林檎」のことを示していて、
       読み方は「りんご」
       色は「赤」
       特徴は「丸い」
    2つ目の行は「みかん」のことを示していて、
      読み方は「みかん」
       色は「黄」
       特徴は「丸い」「甘い」
    3つ目の行は「バナナ」のことを示していて、
       読み方は「みかん」
       色は「黄」
       特徴は「細長い」「ふさ」「甘い」

では、「システムやプログラム」は、これらを正しく理解できるでしょうか。最近のAIは、よくできていて、この程度のものであれば人間よりも正しく理解するのかもしれません。しかし、AI機能を搭載していない「システムやプログラム」においては、それは難しく、例えAIであっても、もっと複雑化して情報量が増えたデータの場合、その正確性は怪しくなってきます。

なぜか、1行目~3行目までを見比べてみてもらえるとわかるように、データの並びがバラバラで、データの項目数もまちまちです。人であっても間違う可能性は高いです。

そこで、下記のように、あるルールを決めて、その形式でやりとりを行うこととします。こうすることで、人が意図した形でデータを受け渡すことが可能になります。

    名前,  読み方, 色, 味,  特徴
    林檎,  りんご, 赤, ,   丸い
    みかん, みかん, 黄, 甘い, 丸い
    バナナ, ばなな, 黄, 甘い, 細長い、ふさ

ここでは、CSVファイルをイメージして、下記のようなルールで、データを記述しています。

    ・ 1行目は題名とする
    ・ データは「名前」「読み方」「色」「味」「特徴」の5つとする
    ・ データは「名前」「読み方」「色」「味」「特徴」の順とする
    ・ データの間は","で区切る
    ・ 1行に、1データだけとする

CSVファイル、XMLファイル、JSONファイルなどは、このようなファイルの書き方のルールの一種で、その記述方法を規定したものとなります。上記の例だと、下記の3つが、該当します。

    ・ 1行目は題名とする
    ・ データの間は","で区切る
    ・ 1行には、1データだけとする

ここで、疑問がわきます。あれ?下記の2つが含まれていない。。。

    ・データは「名前」「読み方」「色」「味」「特徴」の5つとする
    ・データは「名前」「読み方」「色」味」「特徴」の順とする

この2つの条件が変わると、データを正しく読み取るのが難しくなります。(厳密には、XMLファイルやJSONファイルは構造化ファイルの為、データの並びには影響されません。)

例えば、下記のように、データの順序が題名とあっていない場合、 「読み方」「名前」「特徴」「色」「味」を本来、意図した形で、「システムやプログラム」に伝えるのは難しくなります。

読み方, 名前,  特徴, 色,  味,
林檎,  りんご, 赤,  ,   丸い
みかん, みかん, 黄,  甘い, 丸い
バナナ, ばなな, 黄,  甘い, 細長い、ふさ

ここで、もうおわかりだと思います。

CSVファイル、XMLファイル、JSONファイルはファイル形式(データの書き方)を規定したもので、中に含まれるデータについては何も規定していないのです。

その為、データ連携にCSVファイルを使用とうたわれているA社とB社のプログラムがある場合、同じCSVファイル形式と規定されていても、A社のプログラムとB社のプログラムでは、扱えるデータも違うことから、データ連携でやりとりされるCSVファイルのデータは、全く異なるものとなります。

正しくファイルデータ連携を行いたい場合、「システムやプログラム」がどのファイル形式に対応しているかだけではなく、それに加えて、どのデータが扱えるのか、データの並び順に規定があるのか、データの数字は半角か全角か、どちらでもいいのか等といった細かい点まで抑えたうえで、連携したい「システムやプログラム」にファイルの中身を合わせなることが重要になってきます。

まず、この点が違っていると冒頭にあるようなうまくいかないという問題の発生率が高くなります。

一覧