TechCraft – エンジニアのためのスキルアップメモ

エンジニアのスキルアップを少しでも加速する技術ブログ

GitHub Issuesを書く技術

GitHub Issuesを書く技術

〜開発チームの生産性を高める「伝わるIssue」の書き方ガイド〜

1. はじめに

GitHub Issuesは、ソフトウェア開発においてタスク管理・バグ報告・議論の場として広く利用されています。しかし、曖昧で伝わらないIssueは、手戻りや開発スピードの低下を招きがちです。

この記事では、「読みやすく、行動しやすく、議論しやすい」Issueの書き方を解説します。
Issueは単なる備忘録ではなく、チームとの対話と行動を促すインターフェースです。


2. なぜ良いIssueが重要なのか?

✅ 1. 開発のスピードが上がる

→ 必要な情報が揃っていれば、即着手できる

✅ 2. バグや仕様のすれ違いを防げる

→ 曖昧な要望は、誤解の原因に

✅ 3. チームメンバーとの信頼が生まれる

→ 「分かりやすいIssue」は読み手へのリスペクト


3. 良いGitHub Issueの基本構成

以下の構成を意識することで、どんなIssueでも「伝わる」形になります:

タイトル(1行で内容を要約)
本文:
1. 概要(何を伝えたいのか)
2. 再現手順や背景(なぜこのIssueが必要か)
3. 期待する結果(どうなってほしいか)
4. スクリーンショットやエラー出力(必要に応じて)
5. 備考・関連IssueやPRへのリンク

4. 書き方テンプレート(サンプル付き)

🎯 機能追加の例

タイトル
Add export button to dashboard table

本文

## 概要
ダッシュボード画面の表に「CSVエクスポート」ボタンを追加したいです。

## 背景
ユーザーから「月次で集計したデータをCSVで出力したい」と要望がありました。

## 期待する結果
- テーブル上部に「エクスポート」ボタンが表示される
- クリックでCSVファイルをダウンロードできる

## 備考
- UIデザインはFigmaにあります(https://figma.com/project/xxx)
- backend/api/csv-export エンドポイントは既にあります

🐛 バグ報告の例

タイトル
[Bug] ログイン後にリダイレクトされない問題

本文

## 概要
正しい認証情報でログインしても、ダッシュボードにリダイレクトされません。

## 再現手順
1. /login にアクセス
2. 正しいメール・パスワードを入力
3. ログイン後 `/` に留まる(`/dashboard` へ遷移しない)

## 期待する動作
ログイン後は `/dashboard` に遷移する

## エラー出力

Uncaught (in promise) TypeError: Cannot read property 'push' of undefined

## 備考
- 影響範囲:`useAuth.ts` の `login()` 関数?
- 関連PR: #102

5. 書く時の5つのコツ

✅ 1. タイトルは「名詞+動詞」で簡潔に

例:
✗ 「表に関して」
◎ 「表にソート機能を追加」


✅ 2. 読み手にとっての「WHY」を必ず書く

単なる仕様説明でなく、背景目的を書くことで、理解が早くなります。


✅ 3. 再現手順・前提条件はできるだけ具体的に

とくにバグ報告では、「再現できる」ことが非常に重要です。


✅ 4. スクリーンショットやGIFで可視化

「百聞は一見にしかず」。
デザイン・UI系のIssueでは特に有効です。


✅ 5. ラベル・Assignee・Milestoneを活用

  • bug, enhancement, question, help wanted などのラベルは分類に便利
  • 担当者(Assignee)とマイルストーンも忘れずに設定

6. Issueを書くときによくあるアンチパターン

悪い例 問題点
「バグっぽい」 内容が不明瞭、再現できない
「やってほしいです」 要望が曖昧、背景不明
「○○ができない」 状況が不足、誰も対応できない

7. まとめ:Issueは「一人のメモ」ではない

良いIssueは、チーム全員が理解し、議論し、行動できる「情報のインターフェース」です。
読み手の立場に立って、背景・目的・期待を明確に書くことで、開発はもっとスムーズに、信頼あるものになります。

あなたの次のIssueが、チームの未来を変えるかもしれません。