【実践】Python×Jira APIでチケット取得&Slack通知!

Jira
このサイトはアフィリエイト広告を掲載しています。
この記事でわかること
  • Pythonを使ってJiraのチケット情報を取得する方法
  • 期限が近いチケットをSlackで通知する方法
  • 実際のコード例を使ったわかりやすい解説
takata
takata

この記事はこんな人におすすめ!

  • Jira REST APIの基本的な使い方を学びたい方
  • Pythonを使ってJiraのチケットを自動的に取得・操作したい方
  • 期限が近いタスクをSlackで通知する仕組みを構築したい方

はじめに

前回の記事「【初心者向け】Jira REST APIの使い方 基礎編」では、Jira REST APIの概要や基本的な準備手順をご紹介しました。

今回は、実践編として、Jiraから特定のチケット情報を取得する具体的な方法を解説します。
また、取得したデータを活用して、期限が近いチケットをSlackで通知する仕組みもご紹介します。

この記事を読むことで、APIを活用したプロジェクト管理の効率化がイメージできるようになります。

APIの活用で、より効率的なプロジェクト管理を目指しましょう!

【基本】Pythonを使ってチケット情報を取得する方法

なぜJira APIを使うのか?

JiraのWeb UIでは、チケットを簡単に確認できます。しかし、次のような場面では、APIの利用がより便利です。

  • 定期的なデータ取得: 特定のプロジェクトや条件に基づいてチケット情報を自動的に取得したいとき。
  • レポート作成や分析: 手作業でチケットデータを集計する手間を省きたいとき。
  • リアルタイム通知の自動化: 期限が迫ったチケットや特定の条件に一致するタスクをすぐにチームに共有したいとき。

APIを活用すれば、Jiraのチケット情報を自動で取得・処理でき、手間を大幅に削減できます。

この記事では、Pythonを使ってJira APIを操作する方法を解説しながら、これらのニーズを実現する具体例を紹介します。

次のセクションで実際のコードを使ったチケット情報の取得手順を見ていきましょう!

チケット情報を取得するコード

以下のコードは、Pythonを使って特定のプロジェクトからチケット情報を取得する方法を示しています。

import requests
from requests.auth import HTTPBasicAuth

# Jira認証情報
JIRA_DOMAIN = "your-domain.atlassian.net"  # Jiraのドメイン
EMAIL = "your-email@example.com"          # Jiraアカウントのメールアドレス
API_TOKEN = "your-api-token"              # APIトークン

# Jira REST APIエンドポイント(検索用)
url = f"https://{JIRA_DOMAIN}/rest/api/3/search"

# 認証情報
auth = HTTPBasicAuth(EMAIL, API_TOKEN)

# HTTPヘッダー
headers = {
    "Accept": "application/json"
}

# JQLクエリ: 特定プロジェクトのチケットを取得
query = {"jql": "project = YOUR_PROJECT_KEY", "maxResults": 10}

# APIリクエストを送信
response = requests.get(url, headers=headers, auth=auth, params=query)

# レスポンスの確認
if response.status_code == 200:
    issues = response.json().get("issues", [])
    if issues:
        print(f"取得したチケット数: {len(issues)}")
        for issue in issues:
            key = issue["key"]  # チケットキー
            summary = issue["fields"]["summary"]  # チケット概要
            print(f"Key: {key}, Summary: {summary}")
    else:
        print("条件に一致するチケットが見つかりませんでした。")
else:
    print(f"APIリクエスト失敗: ステータスコード {response.status_code}")
    print(f"エラーメッセージ: {response.text}")

コード ポイント解説

  • JQLクエリproject = YOUR_PROJECT_KEY は、特定のプロジェクト内のチケットを取得する条件です。必要に応じて他の条件(例: 担当者、ステータス)を追加可能です。JQLについては、【3分でわかる!】JQLの使い方!を参考にしてみてください。

  • レスポンスの確認:この例では、チケットキー(key)と概要(summary)を取得して、コンソールに出力します。必要に応じて他の項目も追加可能です。
takata
takata

ここまでは、Jira APIを使ったチケット情報の取得方法について紹介しました。

次のステップとして、この取得したデータを活用しながら、より実践的なチケット管理の自動化に挑戦してみましょう。

【実践】期限が近いチケットをSlackに通知する方法

なぜSlack通知が便利なのか?

Slack通知を設定することで、期限が迫ったチケットをリアルタイムでチームに共有できます。これにより、次のようなメリットがあります。

  • 手動でのリマインド作業が不要になるため、時間と手間を削減。
  • 重要なタスクの見落としを防止し、チーム全体で効率的に対応可能。
  • 一目でわかる通知メッセージにより、優先度が明確化される。

今回は以下のように、期限近づいたチケットを指定したチャンネルに通知する方法を紹介します。

期限が5日以内のチケット情報をSlackに通知するコード

以下のコードは、期限が近いチケットをSlackに通知する方法を示しています。

import requests
from requests.auth import HTTPBasicAuth

# Jira認証情報
JIRA_DOMAIN = "your-domain.atlassian.net"  # Jiraのドメイン
EMAIL = "your-email@example.com"          # Jiraアカウントのメールアドレス
API_TOKEN = "your-api-token"              # APIトークン

# Slack Webhook URL
SLACK_WEBHOOK_URL = "https://hooks.slack.com/services/your-webhook-url" # Webhook URL

# Jira REST APIエンドポイント(検索用)
url = f"https://{JIRA_DOMAIN}/rest/api/3/search"

# 認証情報
auth = HTTPBasicAuth(EMAIL, API_TOKEN)

# HTTPヘッダー
headers = {
    "Accept": "application/json"
}

# JQLクエリ: 期限が近いチケットを取得
query = {"jql": 'due <= "5d" AND status != "Done"', "maxResults": 10}

# APIリクエストを送信
response = requests.get(url, headers=headers, auth=auth, params=query)

# レスポンスの確認
if response.status_code == 200:
    issues = response.json().get("issues", [])
    if issues:
        slack_message = "*期限が近いチケット一覧:*\n"
        for issue in issues:
            key = issue["key"]
            summary = issue["fields"]["summary"]
            due_date = issue["fields"].get("duedate", "未設定")
            
            # ハイパーリンク化
            hyperlink_key = f"<https://{JIRA_DOMAIN}/browse/{key}|{key}>"
            slack_message += f"- {hyperlink_key}: {summary} (期限: {due_date})\n"

        # Slack通知を送信
        slack_response = requests.post(
            SLACK_WEBHOOK_URL,
            json={"text": slack_message},
            headers={"Content-Type": "application/json"}
        )

        if slack_response.status_code == 200:
            print("Slack通知を送信しました。")
        else:
            print(f"Slack通知の送信に失敗しました: {slack_response.status_code}, {slack_response.text}")
    else:
        print("条件に一致するチケットが見つかりませんでした。")
else:
    print(f"APIリクエスト失敗: ステータスコード {response.status_code}")
    print(f"エラーメッセージ: {response.text}")

コード ポイント解説

  • Slack Webhook URL:Slackチャンネルにメッセージを投稿するために必要になります。SlackのWebhook取得方法 を参考にURLを取得してください。

  • JQLクエリ:今回は、未完了で期限が5日以内となったチケットを抽出するようにしています。必要に応じて変更してみてください。

  • Slackメッセージの作成:今回は、チケットキーをハイパーリンク化して、チケット概要と期限をSlackの指定チャンネルに通知しています。

まとめ

この記事のまとめ
  • Jira APIの実践的な使い方は?
    Jira APIを使うことで、チケット情報を自動的に取得・活用でき、プロジェクト管理を効率化できます。
  • Pythonでチケット情報を取得する方法は?
    APIトークンを使用して認証し、Pythonコード内でJQLを指定することで、特定の条件に基づいたチケットデータを取得可能です。
  • 期限が近いチケットをSlackに通知する方法は?
    取得したチケットデータを加工し、Webhook URLを通じてSlackチャンネルに通知を送ることで、重要なタスクをリアルタイムでチームに共有できます。

さらに学びたい方へ

この記事では、Jiraのごく一部の機能であるJira apiの活用方法を紹介しました。Jiraの機能をさらに深く理解し、実務や日常に活かしたい方には、Udemy(ユーデミー)の講座がおすすめです。

Udemy(ユーデミー)とは?

Udemyは、世界中で利用されているオンライン学習プラットフォームです。

プログラミングやデザインからプロジェクト管理、PowerPointスキルまで、幅広い分野の講座を自分のペースで学ぶことができます。

いつでもどこでも何度でも視聴可能なので、忙しい方にもおすすめです。

なぜUdemyがおすすめなのか?

  • 自分のペースで学べる柔軟性
    好きな時間・場所で学べ、購入した講座は永久視聴可能なので、何度でも復習できます。
  • 業界のプロから直接学べる
    実務経験豊富な専門家が講師を担当し、実践的なスキルを効率よく習得できます。
  • 幅広い講座ラインナップ
    10万以上の講座が存在し、学びたい内容に合わせた講座を探しやすいのも魅力です。

Jiraに関するおすすめ講座

おすすめ① Jira初心者を上級者に変えてくれる講座

講座名2024年版 〜Jiraの基礎〜初心者用ガイドicon
おすすめ度5.0
対象者今後本格的にJiraを利用予定の方
Jira自体や提供機能を根本から理解したい方
料金27,800円
時間3時間37分
学べることJiraの基礎知識と実践的な利用方法

おすすめ② アジャイル開発でのJiraの活用法を学べる講座

講座名Learn Jira with real-world examples 2024 (+Confluence bonus)icon
おすすめ度4.0
対象者アジャイル開発においてJiraを利用したい(している)方
料金6,200円
時間10時間30分
学べることアジャイル開発におけるJiraの活用の仕方

おすすめ③ 自動化機能などJiraの一部機能が学べる講座

講座名Jira と Confluence エッセンシャル: 初心者からエキスパートへicon
おすすめ度3.5
対象者Jiraの自動化機能に興味がある方
料金3,000円
時間6時間9分
学べることJiraの基本と一部機能の使い方

コメント