データのインポート処理などで、進捗具合を確認するためにwatchコマンドで処理を定期実行させることが多いのだけど、その際に以下の点が気になっていた。

  • 実行履歴が記録されないので、どのタイミングでどのような変動があったのか確認できない
  • 出力結果がターミナルのサイズより行数が多い場合、スクロールできないので見切れてしまう
  • 差分確認時に前回の出力と比較ができない

一応、実行コマンドでいろいろと工夫すれば変動のあった差分のみファイルに出力させることも可能なのだけど、こんなんいちいち覚えていられないし、やはり面倒。

で、前にGolangでツール作ったのだけど、これについては今も普通に使えてるし、結構勉強になることが多かった。ということで、せっかくだから今回もツールを作ってみようと思い、やってみることにした。 前回はGolangだったので、今回はよく比較対象になっているRustでやってみることにした。

…正直、思ってたより苦戦した(´・ω・`)。 途中で「Rustにするのやめときゃよかったかな…」とか考えたけど、一応動くとこまでいったので良かった(´・ω・`)。

watchの出力は上下キー、historyの選択はShift + 上下キー(Mac(のiTerm2)では動作確認してるけど、まだ不安定なので環境によっては動かないかも)を使って行う。 diffのタイプを切り替える場合はdキーで切り替えができる。

まだ完成したと言えない(ANSIカラーコードに対応してなかったり、tmux上で利用できなかったり。。。)状態だけど、一応は形になる状態までは持っていけた。 ちょこちょこいじってみることにしよう。