CData Backlog Driverで課題のカテゴリー・マイルストーン・バージョンを管理する方法

by 浦邊信太郎 | August 21, 2026 | Last Updated: August 21, 2026

Backlog の課題(Issue)には、カテゴリー・マイルストーン・バージョンといった分類情報を複数割り当てることができます。CData Backlog Driver では、これらの割り当てを SQL の EXECUTE 構文によるストアドプロシージャとして操作できます。本記事では、AddIssueCategory / RemoveIssueCategoryAddIssueMilestone / RemoveIssueMilestoneAddIssueVersion / RemoveIssueVersion の各ストアドプロシージャの使い方と、内部での挙動の違いについて解説します。

ストアドプロシージャ一覧

ストアドプロシージャ

用途

AddIssueCategory

課題にカテゴリーを追加

RemoveIssueCategory

課題からカテゴリーを削除

AddIssueMilestone

課題にマイルストーンを追加

RemoveIssueMilestone

課題からマイルストーンを削除

AddIssueVersion

課題にバージョンを追加

RemoveIssueVersion

課題からバージョンを削除

各プロシージャは共通して IssueId と対象の CategoryId / MilestoneId / VersionId をパラメータに取ります。

設定手順

1. 接続を確立する(JDBC / ODBC)

Backlog への接続には、API キーと Backlog の URL(例: https://yourURL.backlog.com)が必要です。API キーは Backlog の「個人設定」→「API」から発行できます。

JDBC の場合

接続文字列は ApiKeyUrl プロパティを指定するだけのシンプルな構成です。

String connectionString = "jdbc:backlog:ApiKey=your_api_key;Url=https://yourURL.backlog.com";
Connection conn = DriverManager.getConnection(connectionString);

ODBC の場合

Windows / macOS / Linux いずれの環境でも、DSN を作成するか、接続文字列を直接指定して接続できます。DSN を使わずに接続文字列を組み立てる場合は、 Driver 名と ApiKey / Url プロパティを指定します。DSN を使用する場合は、Windows なら「ODBC データソースアドミニストレーター」、macOS / Linux なら unixODBC の設定ファイル(odbc.ini など)から ApiKeyUrl を設定します。

CData Backlog Driverで課題のカテゴリー・マイルストーン・バージョンを管理する方法

2. カテゴリー ID・マイルストーン ID・バージョン ID を確認する

ストアドプロシージャの実行には、対象の課題に追加・削除する CategoryId / MilestoneId / VersionId が必要です。これらは、Backlog ドライバーが提供する次のビューから取得できます。

ビュー名

取得できる情報

ProjectCategories

プロジェクト全体で利用可能なカテゴリーの一覧(ProjectIdによるフィルタが必要)

ProjectMilestones

プロジェクト全体で利用可能なマイルストーンの一覧(ProjectIdによるフィルタが必要)

ProjectVersions

プロジェクト全体で利用可能なバージョンの一覧(ProjectIdによるフィルタが必要)

-- プロジェクトのカテゴリーを確認
SELECT * FROM ProjectCategories WHERE ProjectId = '435662';

-- プロジェクトのマイルストーンを確認
SELECT * FROM ProjectMilestones WHERE ProjectId = '435662';

-- プロジェクトのバージョンを確認
SELECT * FROM ProjectVersions WHERE ProjectId = '435662';

これらのビューは読み取り専用ですが、ストアドプロシージャに渡す ID を事前に確認するのに便利です。詳細は製品ヘルプの ビュー一覧(pg_allviews) を参照してください。

3. 課題のカテゴリーを追加/削除する

-- カテゴリーを追加
EXECUTE AddIssueCategory IssueId = '165689712', CategoryId = '1365087';

-- カテゴリーを削除
EXECUTE RemoveIssueCategory IssueId = '165689712', CategoryId = '1365084';

課題にカテゴリを追加した後の画面を以下に示します。

CData Backlog Driverで課題のカテゴリー・マイルストーン・バージョンを管理する方法

4. 課題のマイルストーンを追加/削除する

-- マイルストーンを追加
EXECUTE AddIssueMilestone IssueId = '165689712', MilestoneId = '1688306';

-- マイルストーンを削除
EXECUTE RemoveIssueMilestone IssueId = '165689712', MilestoneId = '1688306';

課題にマイルストーンを追加した後の画面を以下に示します。

CData Backlog Driverで課題のカテゴリー・マイルストーン・バージョンを管理する方法

5. 課題のバージョンを追加/削除する

-- バージョンを追加
EXECUTE AddIssueVersion IssueId = '165689712', VersionId = '1688304';

-- バージョンを削除
EXECUTE RemoveIssueVersion IssueId = '165689712', VersionId = '1688304';

課題にバージョンを追加した後の画面を以下に示します。

CData Backlog Driverで課題のカテゴリー・マイルストーン・バージョンを管理する方法

6. JDBC の CallableStatement から実行する場合

アプリケーションに組み込む場合は、CallableStatement を使って同様の処理を呼び出せます。

CallableStatement cstmt = conn.prepareCall(
    "EXECUTE AddIssueMilestone IssueId = ?, MilestoneId = ?");
cstmt.setString(1, "165689712");
cstmt.setString(2, "1688306");
cstmt.execute();

カテゴリーとマイルストーン/バージョンで挙動が異なる点に注意

これら 3 種類のストアドプロシージャは似た構文を持ちますが、Backlog API 内部での更新方式には重要な違いがあります。

  • マイルストーン・バージョン: 課題の更新 API は milestoneId[] / versionId[] の配列を追加的に扱います。ドライバは現在割り当てられている ID 一覧を取得したうえで指定 ID を追加(または除外)し、更新後の配列全体を送信します。

  • カテゴリー: 課題の更新 API に渡す categoryId[] はカテゴリー一覧を丸ごと置き換える仕様になっています。単純に新しい ID だけを送ると、既存のカテゴリーがすべて上書き・削除されてしまいます。そのためドライバは、AddIssueCategory / RemoveIssueCategory 実行時にも内部で現在のカテゴリー一覧を取得し、対象 ID を追加・除外したうえで完全な配列を送信することで、意図しないカテゴリーの消失を防いでいます。

この設計により、ユーザーは配列の中身を意識せず、単一の ID を指定するだけで安全にカテゴリー・マイルストーン・バージョンの追加/削除を行えます。

動作確認

実行後は IssueCategories / IssueMilestones / IssueVersions の各ビューを再度 SELECT して、対象の課題に変更が反映されているかを確認します。

-- カテゴリーの反映を確認
SELECT * FROM IssueCategories WHERE IssueId = '165689712';

-- マイルストーンの反映を確認
SELECT * FROM IssueMilestones WHERE IssueId = '165689712';

-- バージョンの反映を確認
SELECT * FROM IssueVersions WHERE IssueId = '165689712';

まとめ

CData Backlog Driver のストアドプロシージャを使えば、Backlog API の PATCH 更新の仕様差(追加的な配列更新か、置き換え式の配列更新か)を意識することなく、SQL ベースで課題のカテゴリー・マイルストーン・バージョンを安全に管理できます。既存の SQL ワークフローや ETL パイプラインに組み込むことで、Backlog 上のプロジェクト運用をより効率化できるでしょう。