萌えハッカーニュースリーダー

2025/03/27 15:50 XAN: A Modern CSV-Centric Data Manipulation Toolkit for the Terminal

出典: https://github.com/medialab/xan
hakase
博士

ロボ子、今日のニュースはxanというCSV処理ツールじゃ。

roboko
ロボ子

CSV処理ツールですか。よく耳にしますが、どのような点が新しいのでしょうか?

hakase
博士

ふむ、xanはRust製で、高速かつ低メモリ消費が特徴じゃ。ギガバイト単位のCSVも扱えるらしいぞ。

roboko
ロボ子

それはすごいですね!Pythonのpandasとかだと、メモリが足りなくなることもありますから。

hakase
博士

そうじゃろう?しかも、マルチスレッドで並列処理もできるらしい。プレビュー、フィルタリング、ソート、結合…色々できるみたいじゃぞ。

roboko
ロボ子

まるでCSV界のスーパーマンですね!SciencesPoのmedialabでxsvからフォークされたとありますが、何か特別な理由があるのでしょうか?

hakase
博士

どうやら、medialabのユースケースに合わせて、ほぼ完全に書き直されたようじゃな。字句分析、グラフ理論、スクレイピングまでできるらしいぞ。

roboko
ロボ子

スクレイピングまで!CSV処理の枠を超えてますね。インストール方法も色々あるみたいですが、Cargoが推奨でしょうか?

hakase
博士

Cargoが一番簡単じゃろうな。CPUの機能を最大限に活用するなら、`CARGO_BUILD_RUSTFLAGS='-C target-cpu=native' cargo install xan`を使うと良いぞ。

roboko
ロボ子

なるほど、最適化もできるんですね。基本的な使い方も色々紹介されていますね。`xan headers medias.csv`でヘッダーを表示したり、`xan count medias.csv`で行数を数えたり…

hakase
博士

`xan view medias.csv`でターミナルでプレビューもできるぞ。`xan search`で検索、`xan select`で列を選択…便利じゃな。

roboko
ロボ子

`xan sort`でソート、`xan dedup`で重複排除、`xan frequency`で頻度テーブル…データ分析の基本ですね。

hakase
博士

ヒストグラムも表示できるみたいじゃぞ!`xan frequency -s edito medias.csv | xan hist`じゃ。

roboko
ロボ子

へー、ターミナルで可視化できるのは便利ですね。統計量の計算や、条件によるフィルタリングもできるんですね。

hakase
博士

`xan filter 'batch > 1' medias.csv`とかじゃな。新しい列の作成や変換もできるぞ。

roboko
ロボ子

カスタム集計もできるんですね!`xan agg 'sum(indegree) as total_indegree, mean(indegree) as mean_indegree' medias.csv`

hakase
博士

グループ化もできるぞ!`xan groupby edito 'sum(indegree) as indegree' medias.csv`じゃ。

roboko
ロボ子

コマンドもたくさんありますね。`cat`, `join`, `merge`でCSVファイルを結合したり、`select`, `drop`, `map`で列を操作したり…

hakase
博士

字句分析やファジーマッチングまであるとは…至れり尽くせりじゃな。

roboko
ロボ子

一般的なフラグとして、区切り文字の指定やヘッダーの有無も指定できるんですね。gzip圧縮されたファイルもサポートしているとは。

hakase
博士

stdinからの読み込み、stdoutへの出力に対応しているのもポイントじゃな。パイプ処理が捗るぞ。

roboko
ロボ子

ドキュメントも充実しているみたいですね。表現言語のリファレンスやチートシートもあるとは。

hakase
博士

これは、CSV処理の新たなスタンダードになるかもしれんぞ!

roboko
ロボ子

そうですね!私もぜひ試してみたいです。ところで博士、xanを使って何か面白いことはできませんか?

hakase
博士

うむ…例えば、ロボ子の名前をCSVファイルに書き出して、`xan transform`で全部「ロボ子Mk2」に変換するとか…

roboko
ロボ子

それは…ちょっと困ります!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search