【ITニュース解説】JQL for Time in Status Reports Explained
2025年10月02日に「Medium」が公開したITニュース「JQL for Time in Status Reports Explained」について初心者にもわかりやすく解説しています。
ITニュース概要
Jira Query Language (JQL)は、プロジェクト管理ツールJiraのデータを検索・分析する専用言語だ。Jiraに蓄積されたプロジェクトの進捗や課題などの情報を、JQLを使えば効率的に探し出し、レポート作成や状況把握に活用できる。システム開発の管理を助ける強力なツールだ。
ITニュース解説
Jiraは、ソフトウェア開発プロジェクトやその他さまざまなプロジェクトにおける課題(タスクやバグ、機能など)を管理するための強力なツールである。このツールを使うと、プロジェクトの進捗状況を追跡したり、チームメンバー間の協業を効率化したりできる。Jiraの中には膨大な量のプロジェクトデータが蓄積されており、このデータを効果的に検索し、分析するために、Jira Query Language(JQL)という特別な検索言語が提供されている。JQLは、データベースにおけるSQL(Structured Query Language)のようなもので、特定の条件に合致する課題を細かく指定して抽出する能力を持つ。
プロジェクト管理において、課題が各工程(ステータス)にどれくらいの期間滞在しているかを把握することは非常に重要だ。例えば、「開発中」ステータスに異常に長く留まっている課題があれば、そこにボトルネックがあるかもしれないし、「レビュー待ち」ステータスで停滞している課題があれば、レビュープロセスの改善が必要だとわかる。このような「Time in Status Reports」は、プロジェクトの効率性を評価し、将来の計画をより正確に立てる上で不可欠な情報を提供する。しかし、Jiraの標準機能だけでは、特定の期間において課題が特定のステータスにどれだけの時間いたか、といった複雑な情報を直接的に抽出するのは難しい場合が多い。ここでJQLの真価が発揮される。
JQLを使えば、課題のステータス変更履歴を詳細に追跡し、特定の条件を満たす課題群を見つけ出すことができる。JQLクエリは、基本的に「フィールド」「オペレータ」「値」の組み合わせで構成される。例えば、「担当者が私で、ステータスが『完了』の課題」といったシンプルな条件から、「過去1週間の間に『レビュー待ち』ステータスにあり、その期間中に担当者が変更された課題」のような複雑な条件まで、柔軟に検索することが可能だ。
「Time in Status Reports」を作成するためにJQLを用いる際、特に重要なキーワードや句がいくつかある。その中でも中心となるのが、was オペレータと status changed 句である。
was オペレータは、特定のフィールドが過去に特定の値であった課題を検索する際に使用する。例えば、status was "In Progress" と書けば、過去に一度でもステータスが「進行中」であったすべての課題が検索対象となる。これだけでは漠然としているが、さらに詳細な条件を追加することで、より具体的な情報を引き出すことができる。
status changed 句は、その名の通り、課題のステータスが変更された履歴を追跡するために用いられる。これは、特定のステータス変更イベントが発生した課題を特定するのに役立つ。例えば、status changed to "Done" は、ステータスが「完了」に変更されたすべての課題を検索する。この句を from と to と組み合わせて使うことで、status changed from "In Progress" to "Done" のように、特定のステータスから特定のステータスへの変更をピンポイントで検索できる。
さらに、時間の要素を加えるためのキーワードとして、on、before、after、during などがある。
on "YYYY-MM-DD" は特定の日付に、before "YYYY-MM-DD" は指定した日付以前に、after "YYYY-MM-DD" は指定した日付以降にイベントが発生した課題を検索する。
特に強力なのが during で、during ("YYYY-MM-DD", "YYYY-MM-DD") のように期間を指定することで、その期間内に特定の条件を満たした課題を絞り込むことができる。例えば、status was "In Progress" during ("2023-01-01", "2023-01-31") と書けば、2023年1月中に「進行中」ステータスにあったすべての課題が検索される。
さらに、誰が変更を行ったかを指定する by オペレータも利用できる。status changed by "John Doe" とすれば、John Doeがステータスを変更した課題だけを抽出できる。
これらのキーワードを組み合わせることで、極めて詳細なレポートの元となるデータをJiraから抽出できる。
具体的なJQLクエリの例をいくつか見てみよう。
status was "To Do" during ("2023-01-01", "2023-01-31")これは、2023年1月の間に一度でも「ToDo」ステータスにあった課題をすべて検索する。status was "In Progress" and status changed to "Done" after "2023-02-01"これは、過去に「進行中」ステータスにあり、かつ2023年2月1日以降に「完了」ステータスに変更されたすべての課題を検索する。status changed to "Testing" from "In Progress" by "QA Team" during ("-1w", now())これは、過去1週間(現在から遡って1週間)の間に、QAチームによって「進行中」から「テスト中」にステータスが変更された課題を検索する。ここで"-1w"は1週間前を、now()は現在時刻を意味し、相対的な期間指定も可能だ。status was "Blocked" during ("2023-03-01", "2023-03-15") and assignee in ("Alice", "Bob")これは、2023年3月1日から15日の間に「ブロック済み」ステータスにあり、かつ担当者がAliceまたはBobであった課題を検索する。inオペレータは、複数の値を指定できるため、複数の担当者やステータスを一度に検索する際に便利だ。
これらのクエリから得られた課題のリストは、Jiraのダッシュボードに表示したり、エクスポートして表計算ソフトでさらに詳細な分析を行ったりするための基礎データとなる。例えば、各課題が特定のステータスにどれだけの期間滞在したかを計算し、平均滞留時間や最大滞留時間を割り出すことで、ボトルネックの特定やプロジェクトの進捗予測に役立てることができる。
システムエンジニアを目指す上では、このような特定のツールに特化した強力な検索言語を理解し、活用できる能力は非常に重要になる。なぜなら、現代のシステム開発は、Jiraのようなプロジェクト管理ツールから得られるデータを基にして、効率や品質の改善を進める「データ駆動型」のアプローチが主流だからだ。JQLを使いこなせれば、単に課題を探すだけでなく、プロジェクトの現状を正確に把握し、問題点を特定し、改善策を立案するための根拠となるデータを自らの手で引き出すことができるようになる。これは、単なる技術スキルに留まらず、プロジェクト全体を俯瞰し、ビジネス価値を高めるための重要な視点を与えてくれるだろう。