CSV のビューアを作った

仕事でプログラム間の連携を TSV ファイルで行うことが多く、しかも Excel とか仮想マシン上に入ってなかったりすることが多い(し、あっても重くて使いたくない)ので、意を決して CSV ビューアを作りました。

f:id:zetamatta:20191027111947p:plain

先日のツイッタークライアントは、一応自分で使う分には問題ないけど、人に使ってもらうには足りない点がいろいろあって未だ完成していないのですが、こちらは着手から半日くらいであっさり出来ました。もっと早く作ればよかった!

  • セルの表示は背景色を青/黒の繰り返しで表現。
    • ただ、ちょっと目がチカチカするので、もうちょっとよい表現があれば、変えたい
  • 最大桁を12桁
    • それ以上は切り捨てる
    • 全データは最下行に表示する
    • 1セル内の行を複数表示する場所がないので、改行は「⤶」と表示
  • キーバインドは HJKL/Ctrl-FBNP/カーソルキー
  • 使用ライブラリは、いつもの mattn 先生の Go言語コンソール三種の神器go-colorable / go-tty / go-runewidth

開発のプロセスは下記のような感じです。

  1. 最初は上から下に市松模様?に CSV をダンプするだけのプログラムを作る
  2. ライブラリ化して、それを n 行目から画面行数分だけ表示する形に改める。
  3. 指定した行の指定した列のセルだけ色を変えられるようにする。
  4. キー入力させて、そのセルの場所をプラスマイナスできるようにする。
  5. 表示開始位置もカーソル位置に応じて変えられるようにする

ね、簡単でしょ?