見出し画像

GitLabのTODOを可視化&通知するVSCode拡張を作ってみた

システムを作る仕事をしている。
仕事では、コード管理ツールとしてGitLabを使っている。

ソースコードの管理をはじめ、Issueをカンバンとして運用できたり、CI/CDのパイプラインを組めたり、開発中にやりたいことの多くがこの中で完結する。

コードレビューと生産性

単位機能のコーディングを終えると、幾つかのコミットとファイル差分を束ねてMergeRequestを発行し、チームメンバーにコードレビューをしてもらう。

MergeRequestは1日に何通も飛び交う。
誰が適切なレビュアーであるかは、開発した機能や編集したファイルによって変わる。

開発者はGitの新しいブランチで開発を進めてMergeRequestを出し、レビュー待ちの間にそのブランチからさらに別の開発ブランチを切って次の機能開発を進めることがしばしばある。
だから、MergeRequestのレビューが滞ると、レビューによる追加の修正が着手中の次の開発とコンフリクトしたり、最悪の場合手戻りが発生してしまうというリスクを負うことになる。

MergeRequestを出してからマージされるまでの時間が短ければこのリスクは減るため、無駄なく高速に統合が進み、チームの生産性は高くなるはずだ。

メンション通知

MergeRequestを出しても、待てど暮らせどマージされないとストレスだ。先述のとおり、次の生産活動にも影響がある。
少しでも早くマージしてもらうために、レビュアーへ向けて「MergeRequest出したんだけど、ちょっと見てくれない?」と通知しておきたい。

通知のためにSlackや他チャットサービスとのインテグレーションを使うと便利だ。私もかつてはSlackで通知を受け取っていた。
しかし、いろんな事情でSlackが使えなくなり、別のチャットツールのトークルームに手動で通知メッセージを書き込む形になってしまった。
これはスマートじゃない。

通知が流れてしまい、数時間放置されてしまうMergeRequestがしばしば見受けられた。

GitLabのアプリケーション内で「ここのコードはこのように修正するといいよ」とコメントし、「コメントしたので確認してください」とチャットする。ナンセンスだ。

VsCode拡張を自作

我々開発者は多くの時間をテキストエディタと共に過ごしている。
チームメンバーは全員がVSCodeユーザーなので、このエディタの中で通知やタスクの一覧化ができると便利な筈だ。

ということで、拡張を自作してみた。

拡張をインストールした後、設定画面にて「GitLabのURL」と「GitLabのPersonal Access Token(PAT)」を入力しておく必要がある。
PATにはAPIの権限さえ与えておけばOK。

IssueやMergeRequestにアサイン/メンションされるとVSCode内で通知されるとともに、拡張のサイドバーにTODOが追加され、ステータスバーのタスク数が色付きでカウントアップされる。

GitLab上でメンションにリアクションする、または拡張サイドバーの✅ボタンクリックでTODOは消化扱いとなり、リストから消える。

定期的にGitLab GraphQL APIをコールしてTODOデータを取得しているため、データの反映には数秒のラグがあるが、ほぼリアルタイムと言って差し支えないだろう。

リポジトリはこちら。

導入の成果

実験的に採用してみたところ、少なからず効果があった。

別チャットで別途通知するストレスや、MergeRequestが流れてしまう問題はなくなり、マージされるまでの平均時間も短くなった。

初めは実験的な採用だったがチームメンバーに好評だったので、そのまま普段使いのツールとしてワークフローに組み込まれた。

最後に

「使ってみたよ」という方がもしもいたら、是非教えてください。
(このnoteへのコメントでも、GitHubのStarでも。個人開発の励みになります)

改修要望があればIssueへ。可能な限り対応します。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?