はじめに
※この記事は、KDDIアジャイル開発センター(KAG) Advent Calendar 2025 シリーズ3 最終日の記事です
弊社(KDDIアジャイル開発センター、以下「KAG」)では、プロジェクト・ドキュメントの管理にJira・ConfluenceなどのAtlassian製品を使用しています
またそのAtlassisan製品について、今年KDDIグループ全体でDataCenter(=オンプレ)版からクラウド版への完全移行を実施し、それに合わせて一部オペレーションの自動化などの業務改善も実施しました
今回はその「一部オペレーションの自動化」で使用している「Jira Automation(=Jira自動化)」を紹介します
注意事項
- 今回は概要紹介がメインです。各機能の詳細に踏み込んだ内容(=deep-dive)には触れていません
- 詳細が気になる方は、下記Jira Automation公式ページより調べてみてください
Jira Automationとは?
各種Atlassian製品に組み込まれている、ワークフローを作成し一連のオペレーションを自動実行するための仕組み。
「ルール」としてワークフローを作成することで、実行条件が満たされた際のオペレーションを自動で実行することが可能になり、作業工数削減・ヒューマンエラー防止などの効果が期待できる。
例えば、下記のような自動化が可能です。
- Jiraタスクが作成された際、担当者を自動で割り振る
- Jira Service Management1でサポート依頼が作成された際、サポート担当者全員にメールを送信する...など
AWSで例えると「Workflow StudioでStep Functionsのステートマシンを作成する」ような感じです。
なお「Jira Automation」という名前ですが、Jira以外のツール(Confluenceなど)にもこの機能はあります
実際のワークフロー
実際のワークフローは、以下のようなものです。
初めに「ルール」を作成し、そのルールの実行条件を設定した後、実際の処理として(上の画像のような)各種アクションやフロー(=条件分岐、For Eachなど)のブロックをつなぎ合わせたワークフローを作成する感じです
よく使うブロック
Jira Automationでよく使うブロックとして、以下のものがあります。
これだけでも覚えておくと便利です(その他、AWS/Azure/GCなど各種クラウドへの接続ブロックなどがあります)
| ブロック名 | 説明 | 備考 |
|---|---|---|
| アクションを記録 | 実行結果を「監査ログ」に記載します | ・いわゆる「デバッグログ」的に使用(多用)します ・ここでいう「監査ログ」はセキュリティ云々ではなく、Jira Automation内部の「ログ保管庫」になります |
| 変数を作成 | ある値を「変数」として定義することで、以後のフローでその変数経由で値にアクセス可能になります。 | ・後から使う予定の値がある場合に便利です ・変数には後述する「スマート値」としてアクセスします |
| 作業項目にコメントを追加 | ワークフロートリガ元のJiraやJira Service Managementのチケットに対して、チケットコメントを追加できます | ・処理結果をコメントに記載するのに便利です |
| Webリクエストを送信 | Rest APIなどへのリクエストを送信できます | ・リクエスト結果(ステータスコードなど)による処理は、専用の項目が用意されています。 ・レスポンスとして取得した値を後のワークフローで使うことも可能です |
| IF-条件を設定 | 「ある条件を満たしたかどうか」で処理を分岐させることができます | ・具体的には、さまざまな条件を設定することが可能です。(チケットのステータス、チケットの特定フィールドの値...など) |
| For Each | 配列の要素など、複数の値について、同じ処理を実施させることが可能です | ・Premiumなど、一部プランでのみ利用可能 |
スマート値(Smart Value)について
ワークフローを作成していると、下記のような処理を行いたいケースが出てきます
- チケットの情報(作成者、チケットのフィールド値、チケットのIDなど)を取得したい
- 日付を取得したい
- 何かの文字列に対し、変換・切り出し処理などを行いたい(関数などで)
これらのケースに対し、Jira Automationでは「スマート値(Smart Value)」というものが用意されており、これを使用することでこれらのケースに対応することができます。
スマート値は{{キー名}} という形式で記載し、例えば下記のようなものがあります(他にもたくさんあります。詳細は上記サイトにて確認)
| スマート値 | 説明 | 備考 |
|---|---|---|
{{issue.reporter.displayName}} |
チケットの作成者の名前 | |
{{issue.summary.left(5)}} |
left関数を使用し、チケットのタイトルから先頭5文字を抜き差します | これ以外にも、このような関数がたくさん用意されています。(詳細は上記公式サイトを参照) |
{{「変数を作成」ブロックで設定した変数名}} |
「変数を作成」ブロックで設定した変数に格納されている値を取得できます | 例えば「変数を作成」ブロックで 変数名:abc, 値:hogeと設定した場合、{{abc}} というスマート値から「hoge」という値が取得できる |
注意する点(一例)
- 「変数を作成」ブロックで作成した変数の値は、必ず文字列になります。
- そのため例えば数値を変数に格納した場合、変数かの値を四則演算することできなくなります
- 「IF-条件を設定」ブロックにおいてフローを分岐した場合、再度フローを合流させる(=特定の箇所だけ処理を分ける、特定の処理のみスキップする)ことはできません
- 二度手間ですが、同一処理を両方のフローに記載する必要があります
- 「IF-条件を設定」ブロックについて、IF-Else分岐内でさらに「IF-Else」分岐を設定する(=IF-Elseのネスト)を行うことはできません
- 「For Each」ブロックは、名前からはループ処理のように見えますが、実際には同時並列処理(Parallel)を行うブロックになります
- そのため「For Each」ブロック内であるブロックの後に「Delay(一定時間処理をWaitさせる)」を設定しても、「処理1→Delay→処理2→Delay...」みたいな実行にはなりませんので、注意が必要です
実際使った感想(メリット・デメリット)
便利な点
- Jira・Jira Service Management・ConfluenceなどAtlassian製品についての各種処理・フィールドなどを扱いやすい
- Atlassian製品内で完結するオペレーションについて、自動化を行いやすい
- Webリクエスト送信がとてもシンプルな設定で実施可能(ここはStep Functionsより便利だと感じました)
不便な点
- 「IF-Elseにのネストが不可」「IF-Elseで分岐したフローを再度合流させることが不可」「1フローにつきブロック数が最大65個まで」などの制約があり、あまり手の込んだフローは作成できません
- 技術系ではない部署の方が業務オペレーションを自動化するのに向いているかも
- (個人的な感想として)AWS、その他クラウドのサービスを扱うブロックがちょっと少ない印象
- AWSについて、少し前まではAmazon SNSしかサポートしていなかった。ただ最近サポートするAWSのサービスが増えたので、それに期待
まとめ
以上、Jira Automation(Jira自動化)の概要&オペレーション自動化についてでした。
もちろん不便な点もありますが、Jira・Confluence・Jira Service ManagementなどのAtlassian製品についての各種処理を扱うのに向いており、自動化の第一歩として使用する分には便利な機能です。
このブログではあまりJira Automationの深掘りはしていませんが、気になった方は先述の公式ページより詳細を調べてみて、ぜひJira Automationによるオペレーション自動化にチャレンジしてみてください
それでは、今回はこの辺で
-
インシデントや社内・カスタマーサポートなどを管理・実施可能なAtlassian製品(弊社ではCloud版移行後のCloud版に関する社員からのサポートに使用しています) ↩
