次ログ

次ログ

ゆるりと働いているSREの技術ブログのような何か。趣味の話も書く

Clojureでアクセスログの処理時間を集計

概要

最近Bashで集計をすることが多いです。集計作業楽しいです。 と同時に、Clojureという言語にも興味ができたので、せっかくなので 簡単な集計作業を両方の言語でやってみたというだけの話です。

目的

access_log というログファイルが存在します。 ログのデータはすべて行単位ですが、共通することは行の一番最後の数値は アクセス時の処理時間です。

このアクセスログの時間を集計して、合計秒と行数を出力したいです。

作成したコード

下記を参照。 ClojureBashのコードです。

まとめ

集計作業のコード量の短さや読みやすさ、手軽さはやっぱり BashAwkのほうが断然上だなぁ...と。 Awkとかはもろに集計のための言語なんでかなり便利。 Clojureに集計やらせるもんじゃないかな...。 でも大量の便利関数群をまだまだ把握できていないので、 それらを駆使したらもっと短くシンプルになるのかも?

個人的にはBashClojureってなんか似ているような気がします。 BashのパイプとClojure関数型言語の性質が似てて、 コードを書いていてパズルを解いているような感じがしてコーディングがすごく楽しい。 逆にGoだとClojureほどコーディングが楽しくなかったり... 実装自体は複雑な機能がないので、つまづくこともあまりなく高速で実装できますが 味気ない感じがどうもあります(気にするべきじゃないのかもですが)。

余談

集計作業を行うとき、今まではなんとなくPythonとかでやっていたのですが、 そこまで複雑ではない処理だったらむしろPythonよりもBashAwkのほうが 短く素早く実装できるなぁと実感しています。

シェルのコードをPythonに置き換えるような話をちらほら聞く中 時代を逆走するようにBashAwkの勉強を最近はしています。 でも使ってみるとかなり便利なので、これからも勉強しようと思います。