単純作業とおさらば!業務改善のために作った内製ツール2選。


はじめに

こんにちは!ecbeingの太田です。新卒3年目です。
最近まで、少人数のチームでスクラムマスターをやっていました。
一筋縄では行きませんが、人を動かす面白さが少し分かってきました。


さて、今回の記事では、私が作った業務改善のための内製ツールをご紹介します。


普段行っている業務の中で、単純作業の繰り返しで虚無になる場面が何かしらあるのではないでしょうか。私自身も虚無になる時間があり、課題に感じていました。そこで、課題を解決するための内製ツールを作りました。


そして、改善マインドを評価して頂き、社内で「ドアデスク賞」として表彰して頂きました。ドアデスク賞とは、Amazon社の「ドア・デスクアワード」が元で、社内で創意工夫をして生産性貢献した社員に送られる賞です。今回の記事では、この業務改善のために作ったツールの一部をご紹介します。


技術詳細にはあまり触れず、どんな要件で・どんな工夫をしたかという話を中心にまとめていきます。



1. リリース手順書を爆速で作るツール「Release Studio」

概要

このツールを作った当時に携わっていたプロジェクトでは、リリースのたびにリリース手順書を数時間かけて作成していました。リリース作業のための手順書は大事なので、時間がかかるのは仕方ない…とはいえ、「リリース手順書作りに毎回数時間かけるのはキツい」と感じました。さらに、作成だけはなく、中身のレビューも必要です。その時間で、新たなプロダクトや機能の開発を行いたいものです。


そこで、必要な項目を入力すれば手順書ができあがる魔法のツール「Release Studio」を作ることにしました。

使用技術

  • Node.js
  • Vue.js
  • Docker

画面イメージ



※機密事項が含まれるのでモザイクをかけています。

使い方

たった2ステップでリリース手順書が完成します。

  1. 画面左側で、必要な項目を入力・選択すると、生成された手順書がプレビューで表示されます。
  2. 画面上部の「クリップボードにコピー」を押下すると、Markdown形式で手順書がコピーされます。

仕様・工夫点

デプロイ先を選択

当時のプロジェクトは、多くのAzure上のリソースで構成されていました。
リリースのたびに、設定でどのリソースに向けてデプロイするかを指定して、Azure Pipelines を動かしてデプロイを行っていました。
リリースに関係のないリソースにはデプロイしないようにしていました。


▲デプロイのイメージ▲


リリースのときに「どのリソースに向けてデプロイする必要があるか」を考えていてはミスの元です。リリース手順書を作る際に、設定内容も書いておく必要があります。


さらに、このプロジェクトでは「ブルーグリーンデプロイメント」を採用しているため、「デプロイ」「スワップ」と手順が2回に分かれます。しかし、一部のリソースはブルーグリーンデプロイを使わない、といった例外もありました。


このような特有の事情から、手順書を作るときに考えるべきことが多く、時間がかかっていました


そこで、ReleaseStudio上で、今回リリース対象となるリソースをポチポチとクリックするだけで、設定内容が生成されるようにしました。また、今後新しくリソースが増えたときも、設定ファイルに追記すれば簡単に手順書に加えることができるような仕組みにしました。



▲リソースを選択する部分 選択するとチェックが入り、プレビューもリアルタイムで更新される▲

命名規則の統一

ReleaseStudioには、バージョンを入力する部分があります。


リリースの各所で、ファイル名・URL・ブランチ名などにバージョン名が組み込まれています。各所の 命名規則を統一 することで、ReleaseStudio上からバージョン名を入力するだけで手順書を作りやすくしました。

改善の余地

このReleaseStudioにより、リリース手順書の作成時間がかなり削減されました。
もともと手順書作成には数時間かかることもありました。
現在は、ReleaseStudioで項目を入力+少し調整すれば、数十分で終わります。


しかし、まだまだ改善の余地はあるので、いずれ取り組みたいと思っています。

  • Gitの履歴をもとにデプロイ先を自動決定する
  • 作成した手順書をコピペしなくとも、所定の箇所に保存されるようにする
  • Gitの履歴から自動で手順書を作成してSlackで送ってくれる


以上、リリース手順書を爆速で作る「ReleaseStudio」のご紹介でした。

2. 残業時間を可視化する「ブラックスター警察」

概要

残業をしないに越したことはありません。残業0に向けて当社では様々な取り組みをしていますが、現実的にはどうしても残業せざるを得ない日が出てきてしまいます。


そこで、一部の人に業務が偏っていないか?誰が残業多いか?を可視化しよう、という話になりました。



▲こんな事態だけは避けなければならない・・・▲


我々のチームでは、業務が終わったらSlackに日報を投稿して帰るのがルールです。この日報の投稿時間をもとに、誰がどのくらい残業したか自動で計算し、Slackに投稿してくれるbotを作ることにしました。このbotの名前が「ブラックスター警察」です。

使用技術

  • Node.js
  • Slack API
  • Azure Function

動作イメージ

毎朝、決まった時間に自動で Azure Function が動きます。前日分のSlackの日報から ブラックスター を獲得している人を発見すると、Slackに投稿します。


★ブラックスター とは?
残業を2時間するごとに1つ計上されます。細かく分単位で計算してもあまり意味がないだろう、ということで2時間の区切りになりました。不名誉な意味を込めて「ブラック」の冠をつけています。



ブラックスターを獲得している人がいなければ、警察が褒めてくれます。Party Parrotも踊ります。


誰がいくつブラックスターを獲得したかという履歴も集計しています。これをもとに、「最近〇〇さんのブラックスターが多いから、負荷を分散しよう。アサインを見直そう」といったコミュニケーションを取るようにしています。

仕様・工夫点

  • 誰も日報を投稿していない日は、休みだと認識してbotは何も投稿しません。
  • 日報を投稿し忘れている人(休みだった人)を検知することも可能です。
  • 何らかのアクシデントでbotが動作しなくても、後から日付を指定して実行できるようにしました。
  • ローカル環境でも簡単にデバッグできるようにしました。(デバッグ時はメンションしない&テスト用チャンネルに投稿)

改善の余地

  • メンバーが増減した際に、設定ファイルを書き換える必要があります。設定ファイルでは、人とSlackのIDを紐づけしています。何らかの方法で、設定ファイルを無くすor設定ファイルの更新を容易にしたいと考えています。
  • 警察の文章が定型文なので、四季の挨拶や雑談など、人間味のある文章が生成されるようにしたいです。

さいごに

「リリース手順書作成」「残業時間の可視化」といったアプローチでの業務改善のために作ったツールをご紹介しました。普段の業務を見返すと、意外と単純作業があるのではないでしょうか。自動化できる部分は自動化して、重要な仕事にリソースを割きたいものです。


一方で、内製ツールを作ると、「誰が管理するか」という問題も発生します。私は新米のとき、作ったツールの構成や仕様を自分しか理解できず、管理や引き継ぎが大変になった経験があります。


この失敗を踏まえて、最近では引き継ぎやすいように工夫をしています。

  • Dockerで簡単にセットアップを行えるようにする
  • なるべくインフラ構成をシンプルにする
  • ソースコードに適切なコメントを残すよう意識する
  • 設計や仕様も最低限は書いておく
  • 社内でオープンソースにする


また、引き継ぎについてはこちらの記事も是非ご覧下さい!
blog.ecbeing.tech


今後も、虚無になる単純作業があれば、どんどん自動化していきたいと思っています。
また、Slackや社内ツールと簡単に接続できるような、業務改善アプリケーションのフレームワークを作りたいとも考えています。


以上、「単純作業とおさらば!業務改善のために作った内製ツール2選。」でした。


ecbeing では、単純作業とおさらばして、開発に集中したい人を募集しています!
careers.ecbeing.tech