はじめに
皆さんが有用な情報をどんどん世界に発信している中、このような無駄以外の何物でもない記事を書いてしまったこと、深く反省しています。
しかし無駄は楽しい。
無駄とわかっていても、やってみたらどうなるだろうという興味に負けてしまいました。
可視化結果
まずは結果から。グラフ化されるとちょっと気持ちいい。
ダッシュボードは適当に作ったもので、どのレポジトリでいつどれだけ作業したのか、どのファイルを特に更新しているのか、また更新した行数などを出せるようにしています。
何となく自分で 俺少しは作業したわー 感が味わえればそれで良かろうなのです。
これ以降は手法などの解説なので、興味のある方だけどうぞ。
可視化の方法
やったことはとても単純で、以下の通りです。
- autocmd を使って発生したイベント毎に情報を収集
- 収集したデータを Elasticsearch に記録
- Kibana で可視化
データの収集
準備
- Elasticsearch, Kibana のセットアップ
- 他に記事がたくさんあるかと思うので省略
- Vim プラグインをインストール
- vim-elastic
- vim-yacd (OPTIONAL)
- vim-spy
vim-elastic
VimからElasticsearchにデータをPOSTするためだけに適当に作ったプラグインです。
デフォルトでは http://localhost:9200 へPOSTするので、変更する場合には g:elastic#url
を設定してください。
let g:elastic#url = 'http://example.com'
vim-yacd
必須ではありません。
個人的に作っているプラグインですが、今回はレポジトリのルートディレクトリを取得するためだけに使っています。
他プラグインでも簡単に取れる情報だと思いますが、作ったから使ったというだけです。
vim-spy
今回の可視化の主役プラグインです。
autocmd を使って情報を取得し、vim-elastic 経由で Elasticsearch にデータをPOSTします。
POST先の Index, Type は以下の通りです。
Index | Type | 説明 |
---|---|---|
vim | spy | イベント関連のデータ |
vim | work | 行数、ファイルサイズの差分データ |
データの収集はデフォルトではもちろん無効で、:StartSpy
, :StopSpy
コマンドで開始/停止できます。
なお物好きな方は以下の設定で自動的に有効にできます。
let g:vim_spy_auto_start = 1
可視化
vim-spy によって事ある毎に Elasticsearch にデータはPOSTされるので、あとは Kibana 上で好きなように可視化するだけです。
ダッシュボードができたあとは Refresh Interval を短く設定しておくと、グラフが更新されていく様を見て楽しめると同時に、本来の作業への集中を欠くことができます。でも楽しい。
最後に
Docker で Elasticsearch を立ち上げてPOSTさせた限りでは vim-spy を有効にしていても、作業中に重さは特に感じませんでした。
ただ環境によっては重くなる可能性があるので、もし利用する際にはご注意ください。
もし Vim 上のこんなデータも可視化してみたら面白いんじゃないの?というのがありましたら、また無駄なことで楽しみたいので是非ご連絡ください。