いつまでもエラーを抱えてしまう人に贈る、IDEAのエラー共有プラグイン

チームで開発している時に、いつまでも同じエラーを抱えている人っていませんか？

「いつまでも自分で抱えていないで聞けばいいのに！」と思うのですが、本人は解決できると思っているらしく、自力で解決しようとしてずるずると時間がかかってしまいます。これは本人にとってもチームにとっても生産性の低い状態であると言えます。

<img width="742" alt="スクリーンショット 2017-03-06 15.30.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/77079/c3e2f28a-9356-cc32-6c82-5c4fbc254614.png">
　
そんな状況を解決すべく、**エラー発生時にエラーメッセージと該当するコードを自動的にチームのSlackへ通知**するIDEA用のプラグインをつくってみました。プラグインの名前は **watchMe** です。

<img width="780" alt="slack-screenshot-00.png" src="https://qiita-image-store.s3.amazonaws.com/0/77079/e36ad5c1-cec1-d658-53c0-2ca257075416.png">

**watchMe** では、自分の抱えているエラーをチームメンバーに共有し、アドバイスをもらうことで問題をすぐに解決することを目的としています。![watchme.001 2.jpeg](https://qiita-image-store.s3.amazonaws.com/0/77079/8354c1ed-3d04-19b6-f227-b60f0c54650a.jpeg)

コードは以下で公開しています。スターつけていただけるとうれしいですm(_ _)m
[chakki-works/watchMe](https://github.com/chakki-works/watchMe)

導入にはIDEAでのプラグインインストールと Slack Incoming Webhook の設定が必要です。では設定方法を紹介します。

# 導入
## Slack Incoming Webhookの設定
まずは Incoming Webhook の設定をします。以下の URL を開いてください。
[https://slack.com/services/new/incoming-webhook](https://slack.com/services/new/incoming-webhook)

エラーメッセージを通知したいチャンネルを選択します。取り組んでいるプロジェクトごとにチャンネルを作成しておくと良いでしょう。
<img width="500" alt="slack-screenshot-01.png" src="https://qiita-image-store.s3.amazonaws.com/0/77079/bd18b842-c473-186d-7df3-b3eee583deed.png">

チャンネルを選択したら、Webhook URL が表示されるのでメモしておきます。
<img width="500" alt="slack-screenshot-02.png" src="https://qiita-image-store.s3.amazonaws.com/0/77079/72e1e63c-6eed-03e0-5af9-91c2a1e6f569.png">

Slackの設定は以上で終わりです。次はプラグインをIDEAにインストールします。

## watchMeのインストール
ここではプラグインをインストールします。IDEAのPreferences -> Plugins -> Browse repositories...からwatchMeを検索してインストールします。インストールを有効にするためにIDEAを再起動してください。
<img width="500" alt="slack-screenshot-03.png" src="https://qiita-image-store.s3.amazonaws.com/0/77079/8b788654-a274-4b47-b582-d73931cc0b49.png">

watchMeがインストールされたら、Tools -> Slack Settings -> Add Slack Channelを選択します。
<img width="482" alt="slack-screenshot-04.png" src="https://qiita-image-store.s3.amazonaws.com/0/77079/7fc2df15-c023-51fb-cb9e-b82e8a560c00.png">

ダイアログが表示されるので、あなたの名前とメモした Webhook URL を入力します。名前は誰のエラーなのかを表示するために使われます。
<img width="400" alt="slack-screenshot-05.png" src="https://qiita-image-store.s3.amazonaws.com/0/77079/10a9125c-b02f-4dd4-7bfb-c7e38ef5c08e.png">



以上で設定は終わりです。エラーが発生するとSlackにエラーメッセージと該当するコード行が通知されます。
<img width="780" alt="slack-screenshot-00.png" src="https://qiita-image-store.s3.amazonaws.com/0/77079/e36ad5c1-cec1-d658-53c0-2ca257075416.png">

# 課題
現在はエラーが発生すると自動的に通知してしまいます。自動的に通知してくれるのは良いのですが、簡単なエラーはアドバイスをもらう前に自力で解決してしまうことがありました。そのため、同じエラーが何度か発生した場合に通知するようにした方が良さそうです。

また、作り終わってから気づいたのですが、開発で時間がかかっているのは、発生したエラーを解決するのにはまっているのではなくてロジックや設計を考えているときなのでは？という仮説が浮かびました。その仮説が正しいとすれば watchMe では検知が不可能です。なので、以下に挙げるような情報を取得してアラートを発するようなプラグインを作るとひょっとすると生産性向上に役立つのかなと思っています。

* コードを書いていない時間
* 1ファイルを開いている時間
* 姿勢(体の傾き、腕組みetc)
* キーボードに触れている時間

<!--
現在はエラーを通知する機能しかないのですが、Stack Overflowと連携して解決策を自動で回答したり、コピペ情報をリアルタイムに取って警告したり、発生したエラーを集計してヒートマップを作ったりできると楽しいかなと思っています。
-->

<!--
Configurationの場所は以下から見れる
https://intellij-support.jetbrains.com/hc/en-us/articles/206544519-Directories-used-by-the-IDE-to-store-settings-caches-plugins-and-logs
-->