atlassian-cli はコミュニティによる独立したオープンソースプロジェクトです。Atlassian と提携・関連しておらず、Atlassian による承認、推奨、後援のいずれも受けておらず、Atlassian が提供する公式 CLI(acli)でもありません。製品名は互換性を示す目的でのみ使用しています。
JQL クエリとは、フィールドと値を照合して課題を探す Jira Query Language の式です。どのクエリも形は同じで、フィールド、演算子、値の 3 つからなります。たとえば status = Done です。句は AND、OR、NOT でつなぎ、ORDER BY で並べ替えます。このページは純粋なリファレンスです。必要な演算子、キーワード、関数、フィールドを 1 か所にまとめ、Jira の検索バーやコマンドラインの atlassian-cli にそのまま貼り付けられる例を添えています。
ブックマークしておくと便利です。チュートリアルや意見で水増ししてはいません。ターミナルからの検索を作業別に追いたい場合は、末尾にリンクした関連記事をご覧ください。~ の働きや closedSprints() の挙動を思い出したいだけなら、このまま読み進めてください。
JQL クエリ構文のあらまし
JQL クエリは、論理演算子でつないだ 1 つ以上の句と、任意で続く並べ替えからなります。SQL ではありません。SELECT も FROM も結合もなく、対象は常に課題です。
# field operator value
project = DEV
# two clauses joined with AND, then sorted
project = DEV AND status = "In Progress" ORDER BY priority DESC
次のいくつかのルールを守るだけで、デバッグの手間のほとんどが減ります。
- 空白や予約語を含む値は引用符で囲みます(
status = "In Progress")。 - キーワードと演算子は大文字小文字を区別しません(
ANDはandと同じ)が、フィールド名と値の名前は Jira の表記に合わせてください。 ORDER BYは必ず最後、すべての絞り込み句の後に置きます。- 括弧で論理をまとめます(
(priority = High OR priority = Highest) AND status != Done)。
演算子
演算子はフィールドと値を比較します。比較演算子はほとんどのフィールドで使えます。テキスト演算子の ~ は自由記述のフィールドでのみ使えます。履歴演算子(WAS、CHANGED)は、フィールドが過去にどうなっていたかを検索します。
| 演算子 | 意味 | 例 |
|---|---|---|
= | 値が完全に一致する | status = Done |
!= | 等しくない | status != Done |
> >= < <= | 範囲の比較(日付、数値) | created >= -7d |
~ | CONTAINS(テキスト検索) | summary ~ "login" |
!~ | 含まない | summary !~ "wip" |
IN | リスト内のいずれかの値に一致 | status IN (Open, Reopened) |
NOT IN | リスト内のどの値にも一致しない | priority NOT IN (Low, Lowest) |
IS | EMPTY / NULL と組み合わせて使う | assignee IS EMPTY |
IS NOT | 値がある | fixVersion IS NOT EMPTY |
WAS | 過去のいずれかの時点でその値だった | status WAS "In Progress" |
WAS IN | 過去にリスト内のいずれかの値だった | status WAS IN (Open, Reopened) |
CHANGED | フィールドが変更された(AFTER/BY を追加可) | status CHANGED AFTER -1w |
最もよくある間違いは、テキストのフィールドに = を使ってしまうことです。summary = "login" は、要約がちょうど login という語だけの課題にしか一致しません。login を含む要約をすべて探すには summary ~ "login" を使います。履歴演算子(WAS、WAS IN、CHANGED)は、AFTER、BEFORE、ON、DURING、BY、FROM、TO の述語でさらに絞り込めます。
キーワードと論理演算子
キーワードは句をつなぎ、並び順を制御します。あらゆる JQL クエリをつなぐ結合組織のような存在です。
| キーワード | 用途 | 例 |
|---|---|---|
AND | すべての句が一致する必要がある | project = DEV AND status = Open |
OR | いずれかの句が一致すればよい | priority = High OR priority = Highest |
NOT | 句を否定する | NOT status = Done |
EMPTY | フィールドに値がない | fixVersion IS EMPTY |
NULL | EMPTY のエイリアス | resolution = NULL |
ORDER BY | 結果を並べ替える(必ず最後) | ORDER BY created DESC |
ASC / DESC | 並び順 | ORDER BY priority DESC, created ASC |
未解決の課題を表すなら、status != Done ではなく resolution = EMPTY(または resolution IS EMPTY)が最適です。ステータス名はワークフローごとに異なりますが、resolution フィールドは課題が本当にクローズされた時点で設定されるため、「まだ open か」を問う移植性の高い方法になります。
関数
関数は、Jira がクエリ実行時に評価する動的な値を生成します。保存したフィルターが使われ続けるのはこの仕組みのおかげです。assignee = currentUser() は実行する人ごとに異なる意味になり、sprint IN openSprints() はその日に進行中のスプリントを常に指し続けます。
| 関数 | 返すもの | 例 |
|---|---|---|
currentUser() | クエリを実行しているアカウント | assignee = currentUser() |
membersOf("group") | グループに所属するユーザー | assignee IN membersOf("developers") |
now() | 現在の日時 | due < now() |
startOfDay() / endOfDay() | 日の境界(オフセットは任意) | created >= startOfDay(-7) |
startOfWeek() / startOfMonth() | 暦上の期間の開始 | updated >= startOfWeek() |
openSprints() | 進行中のスプリントの課題 | sprint IN openSprints() |
closedSprints() | 完了したスプリントの課題 | sprint IN closedSprints() |
futureSprints() | 今後のスプリントの課題 | sprint IN futureSprints() |
latestReleasedVersion(PROJ) | 最新のリリース済みバージョン | fixVersion = latestReleasedVersion(DEV) |
unreleasedVersions(PROJ) | まだリリースされていないバージョン | fixVersion IN unreleasedVersions(DEV) |
linkedIssues(KEY) | 指定した課題にリンクされた課題 | issue IN linkedIssues(DEV-100) |
issueHistory() | 最近閲覧した課題 | issue IN issueHistory() |
スプリント関数は、スプリントを使うボードにのみ適用されます。バージョン関数は、どのリリース計画を読むかを Jira に伝えるためにプロジェクトキーを引数に取ります。すべての関数は、引数がない場合でも now() のように括弧を付けて呼び出します。
よく使うフィールド
最もよく参照するフィールドを挙げます。カスタムフィールドは名前か cf[10010] 形式の識別子で検索します。自分のインスタンスの ID を調べるには atlassian-cli jira fields list を実行してください。
| フィールド | 一致する対象 | 例 |
|---|---|---|
project | プロジェクトキーまたは名前 | project = DEV |
status | 現在のワークフローのステータス | status = "In Progress" |
statusCategory | To Do / In Progress / Done | statusCategory = "In Progress" |
assignee | 担当者 | assignee = currentUser() |
reporter | 課題の報告者 | reporter = jane@example.com |
type / issuetype | 課題タイプ | type = Bug |
priority | 優先度 | priority IN (High, Highest) |
resolution | 解決状況(EMPTY は未解決) | resolution = EMPTY |
created / updated | タイムスタンプのフィールド | updated >= -1d |
due | 期限 | due <= endOfWeek() |
labels | 課題に付いたラベル | labels = backend |
component | コンポーネント | component = "API" |
fixVersion | 修正バージョン | fixVersion = 2.1 |
sprint | スプリント(名前または関数) | sprint IN openSprints() |
parent | 親の課題 | parent = DEV-100 |
text | すべてのテキストフィールドをまとめて | text ~ "timeout" |
日付での絞り込み
日付フィールドは、絶対値("2026-07-01")、相対の省略記法、関数を受け付けます。最も手早く書けるのは相対の省略記法で、符号付きの数値の後ろに単位を付けます。負の値は現在から過去にさかのぼります。
| 単位 | 意味 | 例 |
|---|---|---|
w | 週 | created >= -2w |
d | 日 | updated >= -7d |
h | 時間 | updated >= -4h |
m | 分 | created >= -30m |
m は月ではなく分を意味します。ここは絶えず誤解される点です。暦に合わせた期間には、代わりに境界関数を使ってください。created >= startOfMonth() は月初以降のすべてを、due <= endOfWeek() は実行する曜日にかかわらず今週の残りを対象にします。
そのまま使えるクエリ例
繰り返し発生する用途向けの具体的なクエリです。DEV をご自身のプロジェクトキーに置き換えて、JQL クエリを受け付ける場所であればどこでも実行できます。
| 目的 | JQL クエリ |
|---|---|
| 自分の未解決の作業、緊急度の高い順 | assignee = currentUser() AND resolution = EMPTY ORDER BY priority DESC |
| 今週作成されたバグ | project = DEV AND type = Bug AND created >= startOfWeek() |
| 進行中のスプリントで未割り当ての課題 | sprint IN openSprints() AND assignee IS EMPTY |
| レビュー中で滞留している課題 | status = "In Review" AND updated <= -14d |
| 「timeout」に言及しているもの | project = DEV AND text ~ "timeout" |
| 最近再オープンされた課題 | status CHANGED TO "Reopened" AFTER -30d |
| 今後のリリース向けの作業 | fixVersion IN unreleasedVersions(DEV) AND resolution = EMPTY |
| 優先度が高く期限がないもの | priority IN (High, Highest) AND due IS EMPTY |
コマンドラインから JQL を実行する
このチートシートの JQL クエリは、いずれもそのまま atlassian-cli で実行できます。クエリを jira issue search の --jql フラグに渡し、次に行う作業に合った出力形式を選んでください。
# Basic search, table output
atlassian-cli jira issue search --jql "project = DEV AND status = 'In Progress'"
# My open work, most urgent first, top 20
atlassian-cli jira issue search \
--jql "assignee = currentUser() AND resolution = EMPTY order by priority desc" \
--limit 20
# Export recent bugs to CSV
atlassian-cli jira issue search \
--jql "project = DEV AND type = Bug AND created >= -30d" \
--format csv --output recent-bugs.csv
# Pipe JSON into jq to pull just the issue keys
atlassian-cli jira issue search \
--jql "sprint IN openSprints() AND status != Done" \
--format json | jq '.[].key'
同じ JQL で一括操作も実行できます。まず --dry-run でプレビューし、外して実行すると、一致したすべての課題に適用されます。
# Close stale in-review tickets (preview first)
atlassian-cli jira bulk transition \
--jql "project = DEV AND status = 'In Review' AND updated < -14d" \
--transition "Done" \
--dry-run
特定のサイトを対象にするには --profile <name> を追加してください。フラグの全一覧はコマンドリファレンスにあります。すべてのコマンドグループが --format table|json|csv|yaml|quiet|markdown を受け付けます。
Atlassian 自身の CLI との違い:atlassian-cli はコミュニティによる独立したオープンソースプロジェクトです。Atlassian が提供する公式 CLI(acli)ではありません。Atlassian と提携・関連しておらず、Atlassian による承認、推奨、後援、保守のいずれも受けていません。ベンダーによる一次サポートが必要なら公式の acli を使ってください。Jira、Confluence、Bitbucket、JSM をまたぐ無料の Rust バイナリを 1 つで済ませたい場合は atlassian-cli を使ってください。JQL の構文自体は、どのツールがクエリを送っても同じです。JQL は Jira のサーバー側で評価されるからです。
よくある質問
Jira の JQL クエリとは何ですか
JQL(Jira Query Language)は、Jira の課題を探すための構造化されたクエリ構文です。JQL クエリはフィールド、演算子、値という 3 つの要素で組み立てます。たとえば status = Done です。句は AND、OR、NOT でつなぎ、結果は ORDER BY で並べ替えます。JQL は SQL ではありません。対象は課題だけで、SELECT も FROM もありません。
自分に割り当てられた課題を探す JQL クエリはどう書きますか
currentUser() 関数を使い、assignee = currentUser() AND resolution = Unresolved と書きます。これで全プロジェクトにまたがる自分の未解決の課題が返ります。緊急度の高い順に見たい場合は order by priority desc を追加し、1 つのプロジェクトに絞る場合は project = DEV AND assignee = currentUser() とします。
JQL の = と ~ の違いは何ですか
= 演算子は値の完全一致を判定するため、summary = "login bug" はその文字列と厳密に一致するものだけに一致します。~ 演算子はテキスト検索のための CONTAINS 演算子で、summary ~ "login" は login という語を含むあらゆる要約に一致します。summary、description、comment、text のような自由記述のフィールドには ~ を、status や priority のような厳密な値のフィールドには = を使ってください。
コマンドラインから JQL クエリを実行できますか
はい。atlassian-cli では、任意の JQL クエリを --jql フラグに渡します。atlassian-cli jira issue search --jql "project = DEV AND status = 'In Progress'" のように書きます。出力を整えるには --format json、--format csv、--limit を追加し、さらに絞り込むには JSON を jq にパイプします。
JQL で Jira の課題を日付で絞り込むにはどうしますか
created、updated、due、resolved といった日付フィールドで相対日付の省略記法を使います。たとえば created >= -7d は、直近 7 日間に作成された課題を返します。単位は w(週)、d(日)、h(時間)、m(分)です。startOfWeek() や endOfMonth() のような関数を使うと、暦上の境界を基準にクエリを組み立てられます。