Help us understand the problem. What is going on with this article?

Excel目検に抵抗するで🤜🤛

More than 1 year has passed since last update.

Excel目検に抵抗

表計算ソフトの歴史

Excelとプログラマの戦いの歴史は長い。Excelというものの本質は表計算ソフトであり、表計算ソフトの元祖は 1979年の VisiCalcというテキストユーザインタフェース (TUI) ベースのツールに遡る。

  • Screenshot of VisiCalc running on an Apple II computer

image.png

やりたいこと

  • 何らかのツール(DB, Apache POI, プログラム)で表を出力した際に、その出力に異常がないか調べたい
  • というのは、DBのデータと出力に幅があるのでテストをするにしても起こりうるパターンが多く、結果として出力される例外的なデータの検出が難しいがそれを見つけたい
  • もう少し抽象化して書くと、ある規定された機能についてテストするのではなく異常検知・変化検知を行いたいということ
  • あるデータベースの規定された機能に対してのテストは次回やり方を提案する

結果として人の目でExcelを見たりすることになるのだが、自分はプログラマなのでそれは嫌である。

もちろん俺らは抵抗するで?🤜🤛 ツールで

Excel差分検出ツール

ExcelMerge

最近Excelどうしの比較を行うすばらしいツールが出た

ぶっちゃけこれを使っておけば、どこに差分が出たか一目でわかる。けっこう重たいファイルでも余裕で差分チェックしてくれるようだ。プログラム側に改修を加えた際にどこか異常がないかどうかについては、これで十分事足りる。

INQUIREアドイン

そのほかに 2つのファイルを比較できるINQUIRE などがある。

DiffkitでCSV比較

データの比較を少し行うぐらいだとExcelMergeでいいのですが、定期的にCIを回すような形でテストを行いたい場合どうすればいいのか?これについてはDiffkitというオープンソースのツールがあったので紹介したい。

Diffkit

image.png

手っ取り早くテーブル形式のCSVファイルを比較して結果を出す

  • Gemfileを作る
$ vim Gemfile
source "https://rubygems.org"

gem 'daff'
  • gemをインストールして比較を実行
  • この例では2つのCSVを比較して diff.csv を出力し
  • diff.csv から OUTPUT.html を出しています
$ bundle install --path vendor/bundle
$ bundle exec daff.rb diff --output diff.csv test9.lhs.csv test9.rhs.csv
$ bundle exec daff.rb render --output OUTPUT.html diff.csv

Diffkitを使う場合、Excelフォーマットから事前にCSV形式に変換しておく必要はあるのでそこは考える余地があるなと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away