3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

もちろん俺らは抵抗するで?技術で🤜🤛Advent Calendar 2017

Day 16

Excel目検に抵抗するで🤜🤛

Last updated at Posted at 2017-12-15

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形式に変換しておく必要はあるのでそこは考える余地があるなと思います。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?