Jira Cloudに付いている「Automation -自動化-」がちょっとした工夫に便利

リクルートでホットペッパービューティーのモバイルアプリ開発チームリードをしているmactkg(原)です。

リクルートではJiraを社内ネットワークのオンプレミス環境で利用してきましたが、社内ICTチームの貢献によってJira Cloudへの移行が進んでいます。私が所属しているプロダクトのJiraもJira Cloudに移行されましたが、「Automation」という機能が付いていることに気づきました。(実際は、Jira Serverへの導入も可能らしいです。) これを使ってみるとなかなか便利で気に入って利用しているので、紹介したいと思います。

Jira Cloudの「Automation」でできること

Jira Cloudの「Automation」ではIFTTTやZapierなどのような「何か起こったら、何かする」というスタイルで、Jira内のイベントを契機にしてコードを書かずに物事を自動化することができます。

簡単な自動化の例です。スプリントが開始したらしまっていきたいですね 簡単な自動化の例です。スプリントが開始したらしまっていきたいですね

どんなふうに使っているか

どんな自動化ができるのか、実際にホットペッパービューティーのモバイル開発チームで活用している事例をいくつか紹介したいと思います。

「開発待ち」になったら「プロダクトバックログ」のスプリントに移動

我々のチームでは、ディレクターが機能を考えてからエンジニアが開発してリリースするまで、一つのストーリーチケットを使って作業を管理しています。開発可能なストーリーを分けて管理できるようにしたいため、ディレクター向けのバックログ(アイディアリスト)とエンジニア向けのバックログ(プロダクトバックログ)を分けています。

また、企画からリリースまでのボトルネックを把握するため、ストーリーのワークフローをカスタマイズしており、開発待ちの状態を「開発待ち」ステータスとして表現しています。チケットが「開発待ち」ステータスに切り替える際に、メンバーがディレクター向けのバックログからエンジニア向けのバックログへ移動させるのが面倒だったため、自動化してみました。

この自動化では、「着手可能」ステータスになったら「プロダクトバックログ」のスプリントへ移動されるよう自動化しています。

Automationの管理ページの様子です Automationの管理ページの様子です

私がステータスを変更すると、Automation for Jiraがスプリントを更新します 私がステータスを変更すると、Automation for Jiraがスプリントを更新します

開発完了時に修正バージョンがなければ警告する

我々のチームでは、リリース予定の機能のチケットを「修正バージョン」プロパティを使って管理しています。こうしておくと、Jiraの「リリース」機能を使ってリリース物を管理できて便利なのですが…。たまにコミュニケーションミスで「修正バージョン」が付いていないチケットがマージ・クローズされてしまっていることがありました。人間が頑張るのは大変なので、自動化したいですよね。

20221216233045

この自動化では、JQLフィルターとSlackアクションをうまく使って、 「修正バージョン」が付いていないチケットがクローズされた場合に通知しています。

作ったはいいものの、まだ一回も発動してません。嬉しいやら悲しいやら、複雑な気持ちです。忘れた頃に動作して、ニヤリとすると思います。

追記:この記事のレビュー中に発動しました

JiraにはAPIがあるので、こうした自動化はコードを書いて片付けることもできるでしょう。ただ、いくつかの面でJira Cloudの「Automation」が便利なのでご紹介させてください。

ハマりにくく、完成まで持っていきやすいのが最高

自動化しようと思いたち、APIドキュメントを眺めつつ、お気に入りのエディタと言語でスクリプトを書き始める… なんてことはあるかと思います。現実は、慣れていないプラットフォームに苦戦してしまうことも多いのではないでしょうか。APIやライブラリに引き渡す値が間違っていたり、一見それっぽく動いていても、実はチェックする値を間違えていてうまく動かない…。とハマってしまい、「いいや、明日にしよう…」とラップトップを閉じた経験が私は何度かあります。

その辺りのハマる経験が起きにくいような細かいおもてなしが気に入っているポイントです。自動化しようと思ったらすぐ「完成」まで辿り着くことができます。

トリガーが豊富

20221216220044

さすがにJiraに内蔵されている自動化ツールなだけあって、トリガーは豊富です。スプリントやバージョン、課題のイベントを契機として作業ができます。私のプロジェクトでよく使っているのは「課題のトランジション時」や「バージョンのリリース時」など節目節目のトリガーです。

この辺りWebhookで届いたレスポンスの様子を見て処理を振り分けたりするのは割と面倒なので、こういう形で実行できると便利なんですよね。

補完がいい感じに効く

それぞれのプロジェクトでは「コンポーネント」や「ステータス」などをカスタマイズして利用していると思います。そうしたカスタマイズした値も、いつものチケットの編集画面のように補完されます。ふだんのUIと同じ使い心地で自動化を進めることができ、細かいところですがサクサク作業が進められて気持ちがいいです。

20221216214612

そもそも受け付けられないような値は入らないように設計されていて、気が利いている感じがします。

でも、痒いところに手が届く

一方で、柔軟に制御できないということではありません。例えばフィールドの値を変えたい場合。Jiraはその拡張性が特徴ですが、だからこそ通常の設定フィールドからは設定できない値もあったりします。そうした値も、JSONを直接渡すことでパラメータを制御可能です(決まった値しか難しいので、できることには限りがありますが)。

写真は、チケットのスプリントを移動している様子です。

「スプリント」のフィールドを「プロダクトバックログ」のIDにセットします。これらの値はChromeの開発者ツールを使って探しています(渋い) 「スプリント」のフィールドを「プロダクトバックログ」のIDにセットします。これらの値はChromeの開発者ツールを使って探しています(渋い)

動作環境のことを考えなくて良い

コードで自動化できたとしても、どこで動かしましょうか? すでにクラウドを活用しているチームであれば良いかもですが、通信要件が厳しい環境の場合、自動化ツールの置き場を検討するのに頭を使います。Webhookの場合は外部からのリクエストを受け付けられるようにする必要がありますし、ポーリングするのもイマイチですよね。

Jira CloudのAutomationでは、プラットフォーム自身が動作環境を引き受けてくれるので、動作環境を悩む必要はありません。

このブログで最初に紹介したような、ちょっとした工夫をするのにそうしたことを考えなくてはいけないのは勿体無い時間です。そうした時間を節約できるのはありがたいですよね。

日々のちょっとした課題を、Jira Cloudの「Automation」で工夫してみませんか。

この記事は Recruit Engineers Advent Calendar 2022 6日目の記事として書かれました。前日はakfmさんで「エンジニアの制約を超えて - 開発価値の最大化と制約理論」でした。明日は未来の誰かです。