Jiraが重い?それは「技術的負債」ならぬ「データ的負債」だ。現場を爆速化する大掃除マニュアル
Jiraが重い。画面遷移に数秒かかる。JQL検索の結果がいつまで経っても返ってこない。
多くのエンジニアはこれを「Jiraの限界」と諦めるが、それは大きな間違いだ。Jiraのパフォーマンス低下は、「管理を放棄したデータ」が引き起こす必然的な汚染に過ぎない。
今日から、君たちのプロジェクトを「検索ストレスゼロ」の爆速環境へ引き戻すための、現場直結型のメンテナンス術を伝授する。
—
1. なぜJiraは「重く」なるのか?(データ的負債の正体)
Jiraのパフォーマンスを殺している真犯人は以下の3つだ。
1. 肥大化した課題数: 完了したチケットが数万件単位でアクティブなインデックスに残っている。
2. 野良カスタムフィールド: 誰も使っていないのに全画面に表示され、クエリの実行プランを複雑にしている。
3. 無駄なイベントリスナーと自動化ルール: 完了済みチケットに対しても動いているトリガー。
これらを放置することは、メモリを食いつぶす無限ループを放置するのと同義だ。
—
2. 爆速化の極意:アーカイブ戦略と自動パージ
「完了したから放置」は甘えだ。Jiraのアーカイブ機能は、単なる隠蔽ではなく「インデックスからの除外」を意味する。
アーカイブの運用ルール
- 期間設定: 解決済み(Resolved)から90日経過したチケットは自動アーカイブ対象とする。
- 検索範囲: 日常業務で「アーカイブ済み課題」を検索対象に含めるのは禁止。必要な場合は明示的に検索する運用を徹底せよ。
神プラグイン:『ScriptRunner for Jira』
Jira運用における「最強の聖剣」だ。これを使って、不要なデータを一掃する。
以下は、6ヶ月以上更新のない完了済みチケットを自動アーカイブするGroovyスクリプトの断片だ。
// スクリプトコンソールまたはジョブスケジューラで実行
import com.atlassian.jira.component.ComponentAccessor
def issueManager = ComponentAccessor.getIssueManager()
def archiveService = ComponentAccessor.getComponent(com.atlassian.jira.bc.issue.archive.IssueArchiveService)
// 6ヶ月前の日付を算出
def limitDate = new Date() – 180
// JQLでクエリを実行して対象を特定
def jql = “status = Done AND updated < '${limitDate.format('yyyy-MM-dd')}'"
def searchService = ComponentAccessor.getComponent(com.atlassian.jira.bc.issue.search.SearchService)
// ...(検索処理を経てイテレーションでアーカイブ)
archiveService.archiveIssues(user, issues)
---
3. 生産性を劇的に変える「設定の共有化」とベストプラクティス
チームの生産性は「入力のストレス」に比例する。以下のYAML構成例は、プロジェクト全体で共有すべき「Jiraの設定思想」を具現化したものだ。
プロジェクト設定のJSON構成(ベストプラクティス)
Jiraのワークフローやフィールド構成を管理する際は、設定をコードとして管理(Configuration as Code)する意識を持て。
{
“project_standards”: {
“custom_fields”: {
“naming_convention”: “TEAM_NAME: Field Name”, // 誰が作ったフィールドか明確にする
“usage_limit”: “global_only_if_necessary”, // 局所的なフィールドはプロジェクトスコープに限定
“cleanup_policy”: “review_every_quarter” // 四半期ごとに使われていないか確認
},
“workflow_rules”: {
“post_functions”: [
“update_resolution_date”, // 完了時に必ず解決日を入れる
“clear_assignee_on_backlog” // バックログに戻ったら担当者をクリアする
]
}
}
}
—
4. 現場で使える「隠れたキーボードショートカット」
マウスを触る時間を減らせ。以下のショートカットを指に覚え込ませるだけで、1日の操作時間は15分短縮できる。
- `g` + `i`: 課題検索画面へ即座に移動
- `.` (ドット): コマンドパレットを開く(これが最強。Jiraの全機能をキーボードから呼び出せ)
- `a`: 課題のアサイン(即座に自分に割り当てる)
- `c`: 課題作成モーダルを開く
—
5. 最後に:テックリードへの提言
Jiraはただの「チケット置き場」ではない。チームの思考の履歴であり、ボトルネックを可視化する鏡だ。
1. インデックスの再構築: メンテナンスの最後には必ずシステム管理画面からインデックスの再構築(Re-index)を行え。これを怠るとデータと検索結果の整合性が崩れる。
2. 情報のサイロ化を防ぐ: 完了済みチケットをアーカイブする際は、必ず重要な決定事項をConfluenceへ転記する「要約プロセス」をワークフローに組み込め。
「整理されていないツールは、チームの思考を鈍らせる。」
今日から君たちのJiraは、ゴミ捨て場ではなく、チームのベロシティを加速させる精密機械へと生まれ変わる。さあ、今すぐ不要なカスタムフィールドを削除し、アーカイブジョブを走らせよう。それがプロのエンジニアの仕事だ。