Jira
最終更新日:
この記事では、AI Agent を Jira に接続する方法を説明します。使用するものは次のとおりです。
- Jira アカウント(無料)
- Quickchat の AI Agent(こちらから登録して 無料 で利用)
これにより、Quickchat の AI Agent は次のことが可能になります。
- Jira のチケットを検索できる
- それらに基づいて質問に賢く回答できる
Quickchat の AI Actions(カスタム HTTP アクション)を使用して、エージェントが Jira(Atlassian)API の Enhanced search for issues エンドポイントを呼び出せるようにします。
会話中に AI Agent がどのように動作するか:
- ユーザーが 「水星に関する課題はどうなっている?」 のような質問をする
- AI Agent は Jira API から “mercury” のようなクエリで関連情報を取得する
- AI Agent は API から取得した情報 に基づいてユーザーに回答する
以下の手順に従ってください。セットアップ全体でも 10 分 ほどで完了します!
ステップ 0 - Jira アカウントとプロジェクトを作成
Section titled “ステップ 0 - Jira アカウントとプロジェクトを作成”- id.atlassian.com/signup にアクセスして、アカウントを作成・確認します。
- Atlassian アプリに Jira を追加します(無料プランで十分です)。
- 最初のプロジェクトを設定し、以下の例のようにチケットを作成します。
ステップ 1 - Jira API 認証トークン
Section titled “ステップ 1 - Jira API 認証トークン”id.atlassian.com/manage-profile/security/api-tokens にアクセスして API トークン を作成します。トークンは次のような形式です:
ATATT3xFfGF01sKUl0HEW2-_-u9umfLSz7jeblmeLzEHZ1DLcdLbKeVF137iTHGkKhPuNMSKX8mkbwLpHXT4-qXEn-xNEnfiK8_XDVW6XXvGd_SBV3HD4kJInGNjfg2_yEoJFN6uwy4NRqeuhV2tjmyzxozLBRn35OhXkDA6QGfLFvf2_PKuNtA=8DA704E4
Atlassian の API トークンを Quickchat の AI Actions で使えるようにするには、メールアドレスと組み合わせて base64 エンコード する必要があります:
your_email@example.com:ATATT3xFfGF01sKUl0HEW2-_-u9umfLSz7jeblmeLzEHZ1DLcdLbKeVF137iTHGkKhPuNMSKX8mkbwLpHXT4-qXEn-xNEnfiK8_XDVW6XXvGd_SBV3HD4kJInGNjfg2_yEoJFN6uwy4NRqeuhV2tjmyzxozLBRn35OhXkDA6QGfLFvf2_PKuNtA=8DA704E4
Atlassian アカウントの作成に使用したのと同じ メールアドレス を必ず含めてください。
base64encode.org のようなオンラインツールを利用できます。
エンコードが完全にブラウザ内で行われる Live mode を使用してください。
あるいは、次のような簡単な Python スクリプト を使ってローカルで実行できます:
import base64
email = "your_email@example.com"api_token = "ATATT3xFfGF01sKUl0HEW2-_-u9umfLSz7jeblmeLzEHZ1DLcdLbKeVF137iTHGkKhPuNMSKX8mkbwLpHXT4-qXEn-xNEnfiK8_XDVW6XXvGd_SBV3HD4kJInGNjfg2_yEoJFN6uwy4NRqeuhV2tjmyzxozLBRn35OhXkDA6QGfLFvf2_PKuNtA=8DA704E4"
credentials = f"{email}:{api_token}"b64_credentials = base64.b64encode(credentials.encode("utf-8")).decode("utf-8")
print(f"Basic {b64_credentials}")
上記スクリプトは、エンコード済みトークンを含むすぐに使えるヘッダーを出力します。例:
Basic eW91cl9lbWFpbEBleGFtcGxlLmNvbTpBVEFUVDN4RmZHRjAxc0tVbDBIRVcyLV8tdTl1bWZMU3o3amVibG1lTHpFSFoxRExjZExiS2VWRjEzN2lUSEdrS2hQdU5NU0tYOG1rYndMcEhYVDQtcVhFbi14TkVuZmlLOF9YRFZXNlhYdkdkX1NCVjNIRDRrSkluR05qZmcyX3lFb0pGTjZ1d3k0TlJxZXVoVjJ0am15enhvekxCUm4zNU9oWGtEQTZRR2ZMRnZmMl9QS3VOdEE9OERBNzA0RTQ=
ステップ 2 - Quickchat の AI Action を作成
Section titled “ステップ 2 - Quickchat の AI Action を作成”Quickchat AI アプリ で Actions & MCPs に移動し、アクションを追加します:
AI Action に適切な名前を付けます:
Name: Search Jira issues
ステップ 3 - 入力パラメータを設定
Section titled “ステップ 3 - 入力パラメータを設定”AI Agent の主なタスクは、ユーザーが尋ねている内容を Jira の課題検索に使う正確なクエリへと変換することです。課題検索に関して、Jira は最近、より複雑な検索を可能にするために JQL (Jira Query Language) に完全移行しました。これにより、AI Agent ははるかに強力になります。入力パラメータは次のように設定します:
形式 | 名前 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Text | jql | (下記参照) | - | ✅ |
高い性能を得るには、練られた説明 が非常に重要です:
Description:
A single valid JQL (Jira Query Language) string built per the description. Favor recall: prefer `(text ~ "term1" OR text ~ "term2")` over chaining with AND, add `status = "..."` only if requested, avoid custom fields, and use parentheses for grouping. Examples: `status = "In Progress" AND (text ~ "mercury" OR text ~ "venus")`, `(text ~ "planet*" OR text ~ "integration")`, `project = "Solar System" AND (text ~ "api" OR text ~ "integration")`.
ステップ 4 - API エンドポイント URL を設定
Section titled “ステップ 4 - API エンドポイント URL を設定”- アクションタイプに GET を選択
- エンドポイント URL を Jira の /rest/api/3/search/jql に設定
Atlassian ドメイン名 を使用してください。Jira ボードの URL で確認できます。
ステップ 5 - API リクエストヘッダーを設定
Section titled “ステップ 5 - API リクエストヘッダーを設定”API リクエストの ヘッダー を次のように定義します:
Accept | Autorization |
---|---|
application/json | Basic cGlvdHJAcXVpY2tjaGF0LmFpOkFUQVRUM3hGZkdGMGlQOVNacEhVZ1o5YUJfWGhmQjZJWjJId3MyaHlsMzEtTlNpYW90Z2tZVzRxQXEwQ3R4UVY1OXFTZkpWWVZNcXlxem42MWRkR0VobmJWNzdzaWtrb19ZWkhtLUgwazFOZGh4WlpQMnltYmZ1SzhBRmlFMnJEUmdqd182N1hkSFFUelFQY2I2U1lrNUFPRlRuVnZvaGxkZUd3djVpM2VrcEFyMVJ4QnJWRncyYz04MEZGQTcyMA== |
Authorization ヘッダーの正しい形式に特に注意してください:Basic
<base64-encoded email:api token>
ステップ 6 - API リクエストのクエリパラメータを設定
Section titled “ステップ 6 - API リクエストのクエリパラメータを設定”AI リクエストに 2 つのクエリパラメータを設定します:
jql
は先ほど What to ask the user first セクションで定義した動的値を取ります。会話でユーザーが述べた内容に基づいて、このパラメータの値を 埋めるのは AI Agent の役割 です。fields
は固定値を取ります。各 Jira の課題について、summary、description、status のみを対象とします。
jql | fields |
---|---|
{{jql}} | summary,description,status |
jql
パラメータが先ほど定義した値を正しく参照していることを確認してください。Add AI Data のドロップダウンから選択できます。
jql
パラメータを選択
ステップ 7 - API Action の説明を設定
Section titled “ステップ 7 - API Action の説明を設定”適切に設定された AI Action の最後の重要な要素は、その説明です。AI Agent は URL とパラメータだけでも API エンドポイントをよく理解しますが、ユースケースに最適化 することが重要です。
プロンプトに含まれる最も重要な 2 つの点は次のとおりです:
- Jira の課題を検索する際の高度な JQL 構文の使い方に関する提案
- 結果が空になるのを避けるため、広く検索する必要性
結果としての API Action Description は次のとおりです:
Infer the user’s intent and construct a single valid JQL that prioritizes recall over precision. Use `text ~ "..."` for contains (case-insensitive) domain / content terms (features, services, tasks, components, etc.). If multiple candidate terms exist, prefer OR and wrap in parentheses. Include `status = "..."` only when the user states a status. Never invent custom fields; only use standard fields like `text`, `status`, and `project` if explicitly mentioned. Keep queries short to avoid zero results. Use parentheses to make precedence explicit (AND binds tighter than OR). Example: `status = "In Progress" AND (text ~ "mercury" OR text ~ "venus")`.
ステップ 8 - API Action をテスト
Section titled “ステップ 8 - API Action をテスト”会話で AI Action をテストする前に、Test Response タブで API がどのように呼び出されるかをテストできます。まず、次のクエリでテストしましょう。このクエリはプロジェクト内のすべての課題を返すはずです:project = "Solar System"
Solar System
の全課題を検索
以下はテストレスポンスです。期待どおり、Jira ボード上の 6 件の課題の summary、description、status フィールドが一覧表示されます。
Solar System
の全課題が一覧に
もう 1 つクエリを試しましょう。今回は「mercury」を含むすべての課題を検索します:text ~ "mercury"
mercury
を含む課題を検索
これで、AI Action が API エンドポイントを正しく呼び出していることを検証できました。次は AI Agent との会話テストに進みます!
ステップ 9 - 会話で AI Agent をテスト
Section titled “ステップ 9 - 会話で AI Agent をテスト”Quickchat AI アプリ に戻り、会話プレビューで AI Agent をテストします。
このシンプルな会話では、AI Agent はプロジェクト内の全課題の概要を示します。舞台裏では、API エンドポイントに対して実行した正確なクエリは project = "Solar System"
でした。
このケースでは、特定の課題と一般的な進行中の課題という 2 つの側面について尋ねられました。舞台裏では、Jira API を 2 段階で使用することにしました:
pluto
が進行中かを確認:
status = "In Progress" AND (text ~ "pluto" OR text ~ "ongoing" OR text ~ "current" OR text ~ "active" OR text ~ "progress")
- 他に進行中のものがあるかを確認:
status = "In Progress"
このケースでは、AI Agent にあえて難問を投げかけ、正しく解釈するために一定の創造性が必要な質問をしました。JQL クエリへの変換は次のとおりです:
(text ~ "planet" OR text ~ "upstream" OR text ~ "mercury" OR text ~ "venus")
この記事では、会話の中で特定の API エンドポイントを創造的に使うように AI Agent を設定する方法を紹介しました。正しいセットアップは最初から用意されているわけではありません。想定するユースケースに関する詳細な追加情報の提供が必要です。この記事で示したプロンプトや説明は、同様の AI Agent を作成する際に自由に再利用してください!
上記の記事は 人間(この私)が書きましたが、AI が書くことも可能です。例えば、次のようなプロンプトを ChatGPT に貼り付けます:
I need an API endpoint that allows me to search through my Jira tickets.
Guide me through the process step by step so that it is accessible to a moderately technical person:- Provide links to documentation describing the endpoint- Any necessary account creation and initial setup- If any paid account is needed, indicate that clearly- If any authentication such as API tokens is needed, guide me through the process of creating them and show me exactly every step needed to be able to use them as an HTTP request header. For example, if base64 encoding is needed, show a script or another way of achieving that.- Show to me exactly what header keys and values I need for the HTTP request (show me header keys and values in a table)- Show to me exactly what payload parameters I need for the request (show me payload parameter name and example values in a table)
将来、Jira のチケット検索ではなく次のことをしたい場合は:
- Slack チャンネルにメッセージを送信する?
- Notion ページから情報を取得する?
- Zapier を介してアクションを実行する?
最初の一文でそう述べて、もう一度プロンプトを実行してください。必要な AI Action を追加するための、的確な手順が得られます!