Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

はじめに

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

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

可視化結果

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

kobito.1429436406.305922.png

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

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

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

可視化の方法

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

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

データの収集

準備

  1. Elasticsearch, Kibana のセットアップ
    • 他に記事がたくさんあるかと思うので省略
  2. 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 上のこんなデータも可視化してみたら面白いんじゃないの?というのがありましたら、また無駄なことで楽しみたいので是非ご連絡ください。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away