電通総研 テックブログ

電通総研が運営する技術ブログ

Jira Automationで作成した変数のスコープについて

はいどーもー!

コミュニケーションIT事業部の宮澤響です!
普段はAppGuardというセキュリティ対策ソフトウェアの導入支援に携わっています!

本記事は電通国際情報サービス Advent Calendar 2023 4日目(2日目相当)の記事です!
電通国際情報サービス Advent Calendarでは3年連続3回目の二番手(2日目相当の枠での投稿)となりますが、来年からは社名変更に伴いテックブログやAdvent Calendarの名称も変更となるため、晴れて電通国際情報サービス Advent Calendar 永遠の二番手」の称号を手に入れました。(?)

なお、記念すべき1日目である先週金曜日の記事は、米谷典比古さんの「祝 GA!Microsoft Fabric で今できることをまとめてみた」でした!
データ分析に関する統合環境を提供するSaaSであるMicrosoft Fabricについて分かりやすく書かれた記事ですので、ぜひご一読ください!

ということで、本記事では、Jira Automationで変数を作成、利用する際の注意点についてご紹介します!

Jira Automationとは

Jira Automationとは、Jira上の様々なワークフローを基本的にノーコードで自動化できるサービスです。

例えば、「特定の条件に一致するチケットが起票されたら担当者にメールを送信する」、「あるプロジェクトにチケットが起票されたら別のプロジェクトにも同じチケットを起票する」、といった処理を自動化できるため、Jiraによる課題管理をより効率的に実施できます。

実際、私自身も、普段の業務において、「問い合わせのチケットが起票から3日以上経過してもクローズしていない場合、Slackの指定チャネルに担当者をメンションして状況の報告依頼を投稿する」といった処理を自動化することで、問い合わせ対応の抜け漏れを防いでいます。

なお、Jira Automationは、Jira Cloudには初めから付帯していますが、Jira ServerやJira Data Centerで利用する場合には追加のアプリケーションのインストールが必要となります。(参考

概要についてはこちらを、利用方法についてはこちらを、それぞれご参照ください!

簡単なルールを作成してみる

まずはサンプルとして以下のようなルールを作成してみます。
なお、ルールとは、Jira Automationによる自動化の設定の単位です。

Jira Automationの利用方法の紹介記事ではないため詳細は省略しますが、こちらのルールは以下のような内容となります。

  • (チケット上からの手動実行により以下の処理を開始)
  • 実行元チケットのステータスがDONEの場合
    • 完了!という値をもつ変数testを作成
  • 実行元チケットのステータスがDONE以外の場合
    • 未完了!という値をもつ変数testを作成
  • 変数testの値を【】で囲んで監査ログに出力

ではここで問題です。
ステータスがDONEである以下のチケットに対してこちらのルールを実行すると、監査ログにはどのような値が出力されるでしょうか?

正解は…。

【】のみが出力されました。

今回の実行元チケットのステータスはDONEであるため、監査ログには【完了!】と出力されていてほしいところですが、どうやら何かが間違っているようです。

何が間違っているのか

原因を探るべく、先ほどのルールを以下のように修正してみます。
伝家の宝刀、printfデバッグです。

  • (チケット上からの手動実行により以下の処理を開始)
  • 実行元チケットのステータスがDONEの場合
    • 完了!という値をもつ変数testを作成
    • 変数testの値をA【】で囲んで監査ログに出力
  • 実行元チケットのステータスがDONE以外の場合
    • 未完了!という値をもつ変数testを作成
    • 変数testの値をB【】で囲んで監査ログに出力
  • 変数testの値をC【】で囲んで監査ログに出力

出力結果は以下のとおりです。

Aの監査ログには【完了!】と出力されたのに対し、Cの監査ログには【】のみが出力されました。
どうやら、条件分岐の中でしか変数の値が出力されないようです。

ここで気づいたのですが、Jira Automationの変数にも、一般的なプログラミング言語と同じように、スコープの概念があるのではないでしょうか。
(スコープ:変数がどこから参照できるかを定めた変数の有効範囲)
そして、変数を作成という項目名ではあるものの、実際には変数への代入を行っているのではないでしょうか。

であれば、以下のように条件分岐の外側で変数を宣言しておけば、期待どおりの結果が得られそうです。

  • (チケット上からの手動実行により以下の処理を開始)
  • 初期値!という値をもつ変数testを作成
  • 実行元チケットのステータスがDONEの場合
    • 完了!という値をもつ変数testを作成
  • 実行元チケットのステータスがDONE以外の場合
    • 未完了!という値をもつ変数testを作成
  • 変数testの値を【】で囲んで監査ログに出力

無事に監査ログに【完了!】と出力されました!

やはり、Jira Automationの変数にも、一般的なプログラミング言語と同じように、スコープの概念があるようです。
つまり、今回の例で言えば、条件分岐の外で作成した変数の値は条件分岐の中からも参照できるが、条件分岐の中で作成した変数の値は条件分岐の外からは参照できないということです。

最初に例として挙げたルールでは、条件分岐の中(完了!未完了!の部分)で作成した変数を条件分岐の外(監査ログに値を出力する部分)で参照しようとしていたため、正しい出力が得られませんでした。
一方、先ほどのルールでは、あらかじめ条件分岐の外(初期値!の部分)で変数を作成していたため、監査ログに値を出力する部分でも変数の値を参照でき、正しい出力が得られた、ということになります。

なお、上記の内容は2023年10月末時点では公式ドキュメント(日本語英語)に記載がありませんので、プログラミング未経験の方がJira Automationの変数の作成を利用する際には、ちょっとした落とし穴になってしまうのではないかと感じました。

おわりに

本記事では、Jira Automationの変数にも、一般的なプログラミング言語と同じように、スコープの概念があることを検証しました。
Jira Automationを利用される際は、変数のスコープに注意して利用されるとよいのではないかと思います。

電通国際情報サービス Advent Calendar 2023 5日目(3日目相当)となる明日の記事は、柴田崇夫さんの「TerraformのCustom ConditionsとChecksの紹介」です!
お楽しみに!

最後までお読みいただき、本当にありがとうございました!


執筆:@miyazawa.hibiki、レビュー:Ishizawa Kento (@kent)
Shodoで執筆されました