見出し画像

RustでCSVをベタッと表示するツールを作ってみた

Rust を覚えましょうということで地道に勉強してます。あんまりペースは早くない…。

さて、今回は Rust で CSV をベタッと表示するツールを作ってみたので日記に記録しておきます。

EC 関係の仕事をしているとしょっちゅう CSV というフォーマットのデータを見ます。
商品などの情報を CSV という形式を使ってやり取りする方式で動いているシステムが多いからです。

CSV をなんらかの手順で作成したり取得したときに中身をちょこっと確認したいなと思って、例えばメモ帳などで開くと、CSV の定義に従って書き込まれた文字情報がそのままの形で見れます。これはこれでエラーチェック時などには重宝する表示方式ですが、単に確認したい・ちょっと読みたい、という用途には正直向いていません。

「そもそも CSV なんだからエクセルとかの表計算ソフトで開くのが妥当では?」と思う人が多いと思いますし、実際そうしている人が大半だと思います。
一般的にはそれで正解です。

僕が多分極端にせっかちで怠け者なだけです。
僕の場合の「パッと開いて確認したい」というのは catless コマンドのようにターミナル上でマウスなどを使わずにファイルを開いて、必要に応じて grep などの別のコマンドにパイプできることを意味します。

なので、メモ帳などで生 CSV を開いたビューと表計算ソフトで視認しやすくしたビューの間をとって、コンソール上にテキストとして CSV 内のデータを表示する(標準出力に吐く)という需要は個人的にはそこそこあります。

これまで Python などで同様の用途のスクリプトを作って使っていたのですが、今回 Rust の練習のために作り直してみました。

リポジトリはこちら。

とりあえず動くものは作れました。

まだまだ改善点はあります。
でも、自分で課題を設定して自分で作ってみるってホント大事だなぁと思います。
本で勉強しているだけだとどうしても受け身になりますからね。
自発的に調べたり試したりしてみることが大事です。

ちなみに、CSV 全体をプリントするコマンドだけだと非力です。
1レコードか数レコードの小さな CSV で項目も絞られていれば有効ですが、ほとんどの場合、CSV のデータ量はもっと大きく、項目の構成はもっと複雑(というより雑多)です。

なので、このプリントするだけのコマンドに渡す前に、必要なレコードに絞り込んだり、不要な項目を削除したりするコマンドが必要になります。
これらも実際に業務で Python 製のものを使っているので、また時間のあるときに Rust で書き直してみたいと思います。

Rust でコマンドラインツールを作っていく中で学んだ専門的な点はまた機会があれば書きたいと思います。結構あります。

SN

この記事が気に入ったらサポートをしてみませんか?