53
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vimでの作業をKibanaで可視化してみた

Posted at

はじめに

皆さんが有用な情報をどんどん世界に発信している中、このような無駄以外の何物でもない記事を書いてしまったこと、深く反省しています。

しかし無駄は楽しい。
無駄とわかっていても、やってみたらどうなるだろうという興味に負けてしまいました。

可視化結果

まずは結果から。グラフ化されるとちょっと気持ちいい。

kobito.1429436406.305922.png

ダッシュボードは適当に作ったもので、どのレポジトリでいつどれだけ作業したのか、どのファイルを特に更新しているのか、また更新した行数などを出せるようにしています。

何となく自分で 俺少しは作業したわー 感が味わえればそれで良かろうなのです。

これ以降は手法などの解説なので、興味のある方だけどうぞ。

可視化の方法

やったことはとても単純で、以下の通りです。

  1. autocmd を使って発生したイベント毎に情報を収集
  2. 収集したデータを Elasticsearch に記録
  3. Kibana で可視化

データの収集

準備

  1. Elasticsearch, Kibana のセットアップ
  • 他に記事がたくさんあるかと思うので省略
  1. Vim プラグインをインストール

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 上のこんなデータも可視化してみたら面白いんじゃないの?というのがありましたら、また無駄なことで楽しみたいので是非ご連絡ください。

53
48
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?