山本ゆうごブログ

山本ゆうごの仕事メモ

CSVサンプルを使ったデータ中心アプローチ設計

企業間のデータのやり取りはCSV形式でのデータのやりとりが多いです。 なんでCSVがいいのかってとこのメモ。

CSVのいいところ

エンジニアも非エンジニアも読める

エンジニアにとってCSV出力はさほど難しくありません。 非エンジニアにとってもCSVの読み書きはエクセルでできるレベルの操作です。

データとドキュメントの違いを理解してもらえる

稀にエクセルベースでのデータ納品をするケースもあります。「同じ値が続くときにはセル結合をお願い」されるケースがあります。当然データとしては壊れてしまうのでお断りをすることにはなるのですが、「それがエクセルドキュメントの常識」という考えからすると、なぜ断ってるのかが伝わりにくいです。

Officeドキュメントはあくまでドキュメントであってデータではないです。エクセルは表計算ソフトではあるものの、ドキュメントでもあるため、「加工済みデータ」です。単なるデータとして扱うにはオーバースペックです。むしろエクセルファイルをデータファイルとして扱う方が誤解を生むことになります。

そこでCSV形式でやりとりすることで、データとドキュメントの違いを際立たしてくれます。 エクセルでCSVファイルを作ることもできるので啓蒙・学習ともに可能です。

データ指向でシステム全体を設計できる

「どのCSVをどの会社が作って、どのCSVをどの会社が読む」という取り決めでシステム全体が設計されます。クラス図とかじゃなくて、CSVサンプルが要件定義段階で飛び交います。UMLでいうところの「オブジェクト図」に近いものですが、サンプルのCSVの方がより実業務のプロトタイプとなります。

弊社ではお見積り段階でサンプルCSVを作りそれを見てもらうことで、「必要な項目が揃っているか」と「意味のあるデータの偏りがあるか」を見ていただいています。

情報システムで大事なのは「情報」であって、「データの量・顔ぶれ」が何よりもユーザ体験の本体です。

CSVを見るための機能は今やTableauなどのBIツールで済ませるケースも増えています。BIツールは基本的には参照専用。あちこちでデータが作成されたり更新されたりするのが何よりも設計が難しいのだけれど、「全てのデータはTableuに集まる」という業務フローができあがると、あとはTableau様に食わせるCSV作り師が重要になってきます。「今のデータの偏りをみて次のアクションを決める」これが情報システムのやるべきことであって、それまでのデータはただの中間生成物に過ぎません。

CSVを加工したダッシュボードはまさに「ダッシュボード」であって、計器が並んでおり、計器をみて車体・機体の状況を把握し、ハンドル・操縦桿を操作するという経営そのものとなります。

データ中心アプローチは非エンジニアでも設計できる

紙の書類であってもベースでもデータ中心アプローチで業務設計されます。伝票がレコード、インデックスが台帳です。 紙ではない場合であっても複数のエクセルファイルを使ってデータ中心設計はできています。「誰がどのタイミングでそのエクセルファイルを触ってもいいか」は業務設計のなかで決められます。 エクセルファイルを直接触るのでは、複数人が登録できないなどの問題があるときに、データベースを使ったデータ中心アプローチに変更が可能です。

データ中心アプローチで何もしないと、「一つのテーブルを修正するのに複数のプログラムや画面が発生する」というところがデメリットとされてはいますが、そもそもCRUDマトリックスを作る段階で「一つのテーブルを寄ってたかって修正するの?まじで?」ということがわかるので、「じゃぁ一箇所からしか更新できないようにしようか」という整理をします。混乱しているということがわかるのがCRUDマトリックスです。DOAでデータの上流下流を整理できない人が他のアプローチをとっても別の混乱を生むだけでしょう。

エンジニアでなくても、求人サイトや不動産情報サイトも1万件くらいのCSVをダウンロードさせてよというのがある程度のITリテラシーをもったビジネスパーソンのニーズです。

CSVのつらいところ

エンジニアがエクセルが苦手

そもそもエンジニアの方がOfficeリテラシーが低いケースが散見されます。CSVをエクセルで文字化けせずに読み込むということがひと手間かかります。ひと手間ではあるものの慣れが必要です。「vlookupでテーブルのJOIN的なことができる」「ピボットテーブルでgroup by的なことができる」ということを知ってないと、業務とシステムの翻訳ができません。

さらに言えば、SQLもプログラミング言語の中では第二外語的なポジションで避けて通るエンジニアも多いです。「たくさんのデータが入ったエクセルを集計」「たくさんのデータが入ったDBをSQLで集計」ということが独学ではなかなか習熟しません。

「まずはサンプリングしてクロス集計をしてデータの偏りを見ましょう」がデータサイエンスの基本であるはずが、いきなり機械学習モデルを作ってしまうケースもあります。

ITエンジニアを標榜するものの「Tecnologty」にばかり目がいって「Infomation」の方がおざなりになりがちです。

エンジニアがCSVの仕様を理解してない

\" でESCAPEできると思ってる人もいます。

自前でパーサーを作ってしまって、フィールド内にカンマが発生することや、フィールド内の改行を考慮しないケースもあります。

UTF8のCSVが未だに市民権を得てない

UTF8の.csvのファイルをダブルクリックすると、エクセルはSJISだと解釈して起動します。ひと手間かければUTF8も読めますが、そのひと手間がダブルクリックに負けます。