feat: GitHub完全活用ガイド - 包括的な解説書とWebサイトを追加
🎯 主要機能: - GitHub機能の網羅的解説書 (10章構成) - 外部ツール代替戦略とコスト分析 - 実践的な設定例とベストプラクティス - 実務ケーススタディと段階的移行計画 🌐 GitHub Pages Webサイト: - Jekyll設定とレスポンシブデザイン - 自動デプロイワークフロー - 美しいランディングページ - SEO最適化とモバイル対応 📊 期待効果: - 年間37%のコスト削減 - 開発効率2倍向上 - セキュリティ強化 🚀 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
commit
1e2b71e1b3
17 changed files with 4250 additions and 0 deletions
593
docs/features/02-issues-management.md
Normal file
593
docs/features/02-issues-management.md
Normal file
|
|
@ -0,0 +1,593 @@
|
|||
# 🎫 GitHub Issues 管理
|
||||
|
||||
GitHub Issuesを活用したプロジェクト管理とタスク追跡の完全ガイド。外部のプロジェクト管理ツールを使わずに、効率的な開発プロセスを構築する方法を学習します。
|
||||
|
||||
## 🎯 学習目標
|
||||
|
||||
- Issuesを使った効果的なタスク管理
|
||||
- ラベル・マイルストーン・プロジェクトとの連携
|
||||
- テンプレートによる標準化
|
||||
- 自動化による効率向上
|
||||
- 外部ツール(Jira等)との比較理解
|
||||
|
||||
## 📚 目次
|
||||
|
||||
1. [Issues基本操作](#1-issues基本操作)
|
||||
2. [ラベル管理](#2-ラベル管理)
|
||||
3. [マイルストーン管理](#3-マイルストーン管理)
|
||||
4. [Issueテンプレート](#4-issueテンプレート)
|
||||
5. [プロジェクトとの連携](#5-プロジェクトとの連携)
|
||||
6. [自動化・効率化](#6-自動化効率化)
|
||||
7. [外部ツールとの比較](#7-外部ツールとの比較)
|
||||
|
||||
---
|
||||
|
||||
## 1. Issues基本操作
|
||||
|
||||
### 📝 Issue作成
|
||||
|
||||
#### Web UIでの作成
|
||||
```markdown
|
||||
1. リポジトリページ → Issues → New issue
|
||||
2. 入力項目:
|
||||
- Title: 簡潔で分かりやすいタイトル
|
||||
- Comment: 詳細な説明(Markdown記法使用可能)
|
||||
- Assignees: 担当者の指定
|
||||
- Labels: 分類用ラベル
|
||||
- Projects: 関連プロジェクト
|
||||
- Milestone: 対象マイルストーン
|
||||
```
|
||||
|
||||
#### GitHub CLI での作成
|
||||
```bash
|
||||
# 基本的なIssue作成
|
||||
gh issue create --title "バグ修正: ログイン機能が動作しない" --body "ログインボタンをクリックしても反応がない"
|
||||
|
||||
# テンプレートを使用してIssue作成
|
||||
gh issue create --template bug_report.md
|
||||
|
||||
# ラベルと担当者を指定
|
||||
gh issue create --title "新機能: ユーザープロフィール" --label "enhancement,frontend" --assignee username
|
||||
```
|
||||
|
||||
### 🔍 Issue検索・フィルタリング
|
||||
|
||||
#### 高度な検索クエリ
|
||||
```bash
|
||||
# オープンなIssuesのみ
|
||||
is:open is:issue
|
||||
|
||||
# 自分が担当のIssues
|
||||
is:issue assignee:@me
|
||||
|
||||
# 特定のラベルが付いたIssues
|
||||
is:issue label:bug
|
||||
|
||||
# 複数条件の組み合わせ
|
||||
is:issue is:open label:enhancement assignee:username
|
||||
|
||||
# 作成日でフィルタ
|
||||
is:issue created:>2024-01-01
|
||||
|
||||
# コメント数でフィルタ
|
||||
is:issue comments:>5
|
||||
|
||||
# マイルストーンでフィルタ
|
||||
is:issue milestone:"Version 2.0"
|
||||
```
|
||||
|
||||
#### GitHub CLI での検索
|
||||
```bash
|
||||
# オープンなバグIssuesを表示
|
||||
gh issue list --label bug --state open
|
||||
|
||||
# 自分が担当のIssuesを表示
|
||||
gh issue list --assignee @me
|
||||
|
||||
# JSONで出力(スクリプト処理用)
|
||||
gh issue list --json number,title,labels,assignees
|
||||
```
|
||||
|
||||
### 💬 Issue管理
|
||||
|
||||
#### コメントとやり取り
|
||||
```markdown
|
||||
# メンション機能
|
||||
@username こちらの件、確認をお願いします。
|
||||
|
||||
# 他のIssue参照
|
||||
この問題は #123 と関連があります。
|
||||
|
||||
# コミット参照
|
||||
この修正は a1b2c3d で対応済みです。
|
||||
|
||||
# PR参照
|
||||
修正は #45 で対応中です。
|
||||
```
|
||||
|
||||
#### Issue状態管理
|
||||
```bash
|
||||
# CLI でIssueをクローズ
|
||||
gh issue close 123 --comment "修正が完了しました"
|
||||
|
||||
# 理由を指定してクローズ
|
||||
gh issue close 123 --reason "completed" # または "not planned"
|
||||
|
||||
# Issueを再オープン
|
||||
gh issue reopen 123
|
||||
|
||||
# 担当者を変更
|
||||
gh issue edit 123 --add-assignee newuser --remove-assignee olduser
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. ラベル管理
|
||||
|
||||
### 🏷️ 効果的なラベル体系
|
||||
|
||||
#### 推奨ラベル構成
|
||||
```yaml
|
||||
# 種類別(Type)
|
||||
- bug: バグ報告
|
||||
- enhancement: 新機能・改善
|
||||
- documentation: ドキュメント関連
|
||||
- question: 質問・サポート
|
||||
- duplicate: 重複Issue
|
||||
|
||||
# 優先度別(Priority)
|
||||
- priority:high: 緊急度高
|
||||
- priority:medium: 通常優先度
|
||||
- priority:low: 低優先度
|
||||
|
||||
# 状態別(Status)
|
||||
- status:ready: 作業可能
|
||||
- status:in-progress: 作業中
|
||||
- status:blocked: ブロックされている
|
||||
- status:review: レビュー待ち
|
||||
|
||||
# 領域別(Area)
|
||||
- area:frontend: フロントエンド
|
||||
- area:backend: バックエンド
|
||||
- area:api: API関連
|
||||
- area:ui-ux: UI/UX
|
||||
- area:performance: パフォーマンス
|
||||
- area:security: セキュリティ
|
||||
|
||||
# サイズ別(Effort)
|
||||
- size:small: 小規模(1-2日)
|
||||
- size:medium: 中規模(3-5日)
|
||||
- size:large: 大規模(1週間以上)
|
||||
```
|
||||
|
||||
#### ラベル作成と管理
|
||||
```bash
|
||||
# GitHub CLI でラベル作成
|
||||
gh label create "priority:high" --color "FF0000" --description "緊急度の高いタスク"
|
||||
|
||||
# 既存ラベルの編集
|
||||
gh label edit "bug" --color "FF6B6B" --description "バグ報告"
|
||||
|
||||
# ラベル一覧表示
|
||||
gh label list
|
||||
|
||||
# ラベル削除
|
||||
gh label delete "outdated-label"
|
||||
```
|
||||
|
||||
### 🎨 ラベルの色分けとベストプラクティス
|
||||
|
||||
#### 色分けの推奨方式
|
||||
```markdown
|
||||
🔴 高優先度・緊急: #FF0000 (赤)
|
||||
🟠 中優先度: #FFA500 (オレンジ)
|
||||
🟡 低優先度: #FFFF00 (黄)
|
||||
🟢 完了・承認: #00FF00 (緑)
|
||||
🔵 情報・質問: #0000FF (青)
|
||||
🟣 進行中: #800080 (紫)
|
||||
⚫ ブロック・問題: #000000 (黒)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. マイルストーン管理
|
||||
|
||||
### 🎯 マイルストーンの設計
|
||||
|
||||
#### 効果的なマイルストーン例
|
||||
```markdown
|
||||
# バージョンベース
|
||||
- v1.0.0 - 初回リリース (2024-03-01)
|
||||
- v1.1.0 - 機能追加 (2024-04-15)
|
||||
- v2.0.0 - メジャーアップデート (2024-06-30)
|
||||
|
||||
# 機能ベース
|
||||
- User Authentication System
|
||||
- Payment Integration
|
||||
- Mobile App Support
|
||||
|
||||
# 時期ベース
|
||||
- Q1 2024 Goals
|
||||
- Summer Release
|
||||
- Year-end Cleanup
|
||||
```
|
||||
|
||||
#### マイルストーン作成と管理
|
||||
```bash
|
||||
# マイルストーン作成
|
||||
gh issue create-milestone "v1.0.0" --description "初回リリース" --due-date "2024-03-01"
|
||||
|
||||
# マイルストーン一覧
|
||||
gh issue list-milestones
|
||||
|
||||
# Issueをマイルストーンに割り当て
|
||||
gh issue edit 123 --milestone "v1.0.0"
|
||||
```
|
||||
|
||||
### 📊 進捗管理
|
||||
|
||||
#### マイルストーン進捗の可視化
|
||||
```markdown
|
||||
# マイルストーンページで確認できる情報:
|
||||
- 全体の進捗率(パーセンテージ)
|
||||
- オープン・クローズされたIssue数
|
||||
- 期限までの残り時間
|
||||
- 各Issueの状態
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Issueテンプレート
|
||||
|
||||
### 📄 テンプレート作成
|
||||
|
||||
#### バグ報告テンプレート
|
||||
```yaml
|
||||
# .github/ISSUE_TEMPLATE/bug_report.yml
|
||||
name: 🐛 バグ報告
|
||||
description: バグを報告するためのテンプレート
|
||||
title: "[BUG] "
|
||||
labels: ["bug", "needs-triage"]
|
||||
assignees:
|
||||
- maintainer-username
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
バグを報告いただき、ありがとうございます。以下の情報を詳しく記入してください。
|
||||
|
||||
- type: textarea
|
||||
id: bug-description
|
||||
attributes:
|
||||
label: 🐛 バグの説明
|
||||
description: バグの詳細な説明を記入してください
|
||||
placeholder: 何が起こっているか、期待される動作との違いを説明
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: reproduction-steps
|
||||
attributes:
|
||||
label: 🔄 再現手順
|
||||
description: バグを再現する手順を記入してください
|
||||
placeholder: |
|
||||
1. ○○のページに移動
|
||||
2. ○○をクリック
|
||||
3. ○○を入力
|
||||
4. エラーが発生
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: expected-behavior
|
||||
attributes:
|
||||
label: ✅ 期待される動作
|
||||
description: 本来はどのような動作を期待していましたか?
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: environment
|
||||
attributes:
|
||||
label: 🖥️ 環境情報
|
||||
description: 環境に関する情報
|
||||
placeholder: |
|
||||
- OS: [例: Windows 10, macOS 13.0, Ubuntu 20.04]
|
||||
- ブラウザ: [例: Chrome 108, Firefox 107, Safari 16]
|
||||
- バージョン: [例: v1.2.3]
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: additional-context
|
||||
attributes:
|
||||
label: 📋 追加情報
|
||||
description: スクリーンショット、ログ、その他関連情報があれば記入してください
|
||||
placeholder: エラーメッセージ、スクリーンショットなど
|
||||
```
|
||||
|
||||
#### 機能要求テンプレート
|
||||
```yaml
|
||||
# .github/ISSUE_TEMPLATE/feature_request.yml
|
||||
name: ✨ 機能要求
|
||||
description: 新機能や改善の要求
|
||||
title: "[FEATURE] "
|
||||
labels: ["enhancement", "needs-discussion"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
新機能の提案をありがとうございます!
|
||||
|
||||
- type: textarea
|
||||
id: problem-description
|
||||
attributes:
|
||||
label: 🎯 解決したい問題
|
||||
description: この機能によってどのような問題を解決したいですか?
|
||||
placeholder: 現在困っていることや、改善したい点を説明してください
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: proposed-solution
|
||||
attributes:
|
||||
label: 💡 提案する解決策
|
||||
description: どのような機能や改善を提案しますか?
|
||||
placeholder: 具体的な機能の説明や実装案があれば記入してください
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: 🔄 代替案
|
||||
description: 他に考えられる解決策があれば記入してください
|
||||
placeholder: 別のアプローチや既存の回避策など
|
||||
|
||||
- type: textarea
|
||||
id: additional-context
|
||||
attributes:
|
||||
label: 📋 追加情報
|
||||
description: 参考資料、モックアップ、外部リンクなど
|
||||
placeholder: 関連するリンクやファイルがあれば記入してください
|
||||
```
|
||||
|
||||
### ⚙️ テンプレート設定
|
||||
|
||||
#### 設定ファイルの作成
|
||||
```yaml
|
||||
# .github/ISSUE_TEMPLATE/config.yml
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: 💬 Q&A ディスカッション
|
||||
url: https://github.com/username/repo/discussions
|
||||
about: 質問がある場合はこちらをご利用ください
|
||||
- name: 📖 ドキュメント
|
||||
url: https://docs.example.com
|
||||
about: 使い方やAPIドキュメントはこちら
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. プロジェクトとの連携
|
||||
|
||||
### 📋 GitHub Projects 連携
|
||||
|
||||
#### Issueの自動プロジェクト追加
|
||||
```yaml
|
||||
# .github/workflows/add-to-project.yml
|
||||
name: Add Issue to Project
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
add-to-project:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/add-to-project@v0.4.0
|
||||
with:
|
||||
project-url: https://github.com/users/username/projects/1
|
||||
github-token: ${{ secrets.ADD_TO_PROJECT_TOKEN }}
|
||||
```
|
||||
|
||||
#### ラベルベースの自動ワークフロー
|
||||
```yaml
|
||||
# ラベルに応じて列を移動
|
||||
name: Move Issue Based on Label
|
||||
on:
|
||||
issues:
|
||||
types: [labeled]
|
||||
|
||||
jobs:
|
||||
move-issue:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.label.name == 'in-progress'
|
||||
steps:
|
||||
- name: Move to In Progress
|
||||
uses: leonsteinhaeuser/project-beta-automations@v2.0.1
|
||||
with:
|
||||
gh_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
user: username
|
||||
project_id: 1
|
||||
resource_node_id: ${{ github.event.issue.node_id }}
|
||||
status_value: "In Progress"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 自動化・効率化
|
||||
|
||||
### 🤖 GitHub Actions による自動化
|
||||
|
||||
#### Issue自動ラベリング
|
||||
```yaml
|
||||
# .github/workflows/label-issues.yml
|
||||
name: Auto Label Issues
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
label:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/labeler@v4
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
configuration-path: .github/labeler.yml
|
||||
```
|
||||
|
||||
```yaml
|
||||
# .github/labeler.yml
|
||||
"area:frontend":
|
||||
- "**/*.js"
|
||||
- "**/*.vue"
|
||||
- "**/*.css"
|
||||
|
||||
"area:backend":
|
||||
- "**/*.py"
|
||||
- "**/*.go"
|
||||
- "**/*.java"
|
||||
|
||||
"documentation":
|
||||
- "**/*.md"
|
||||
- "docs/**/*"
|
||||
```
|
||||
|
||||
#### 古いIssueの自動クローズ
|
||||
```yaml
|
||||
# .github/workflows/stale-issues.yml
|
||||
name: Close Stale Issues
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * 0' # 毎週日曜日
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v8
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
stale-issue-message: |
|
||||
このIssueは60日間活動がありません。
|
||||
7日以内に活動がない場合、自動的にクローズされます。
|
||||
close-issue-message: |
|
||||
このIssueは非アクティブのため自動的にクローズされました。
|
||||
days-before-stale: 60
|
||||
days-before-close: 7
|
||||
```
|
||||
|
||||
### 📊 Issue分析・レポート
|
||||
|
||||
#### CLI による統計取得
|
||||
```bash
|
||||
# Issue統計を取得するスクリプト
|
||||
#!/bin/bash
|
||||
|
||||
echo "=== Issue Statistics ==="
|
||||
echo "Total Issues: $(gh issue list --limit 1000 --json number | jq length)"
|
||||
echo "Open Issues: $(gh issue list --state open --limit 1000 --json number | jq length)"
|
||||
echo "Closed Issues: $(gh issue list --state closed --limit 1000 --json number | jq length)"
|
||||
|
||||
echo -e "\n=== Issues by Label ==="
|
||||
gh issue list --limit 1000 --json labels | jq -r '.[].labels[].name' | sort | uniq -c | sort -nr
|
||||
|
||||
echo -e "\n=== Issues by Assignee ==="
|
||||
gh issue list --limit 1000 --json assignees | jq -r '.[].assignees[].login' | sort | uniq -c | sort -nr
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 外部ツールとの比較
|
||||
|
||||
### 📊 機能比較表
|
||||
|
||||
| 機能 | GitHub Issues | Jira | Trello | Linear | 備考 |
|
||||
|------|---------------|------|--------|--------|------|
|
||||
| 基本的なIssue管理 | ✅ | ✅ | ✅ | ✅ | 全て対応 |
|
||||
| カスタムフィールド | ❌ | ✅ | ❌ | ✅ | GitHubはラベルで代用 |
|
||||
| ワークフロー管理 | ⚠️ | ✅ | ⚠️ | ✅ | GitHubはActionsで実現 |
|
||||
| 時間トラッキング | ❌ | ✅ | ⚠️ | ✅ | 外部サービス連携が必要 |
|
||||
| レポート機能 | ⚠️ | ✅ | ❌ | ✅ | APIやInsightsを活用 |
|
||||
| マイルストーン | ✅ | ✅ | ❌ | ✅ | GitHubのマイルストーン機能 |
|
||||
| サブタスク | ❌ | ✅ | ✅ | ✅ | GitHubはタスクリストで代用 |
|
||||
| コード連携 | ✅ | ⚠️ | ❌ | ⚠️ | GitHubが最も強力 |
|
||||
| コスト | 無料〜 | 有料 | 無料〜 | 有料 | GitHubがコスト効率良い |
|
||||
|
||||
### 🔄 Jira からの移行
|
||||
|
||||
#### 移行チェックリスト
|
||||
```markdown
|
||||
✅ Issue種別 → ラベルでの分類方法決定
|
||||
✅ ワークフロー → GitHub Projects V2 での再現
|
||||
✅ カスタムフィールド → ラベルやマイルストーンでの代替
|
||||
✅ レポート → GitHub API + スクリプトでの実現
|
||||
✅ 時間管理 → 外部サービス連携の検討
|
||||
✅ 権限管理 → リポジトリレベルでの設定調整
|
||||
```
|
||||
|
||||
#### 移行スクリプト例
|
||||
```python
|
||||
# jira_to_github.py
|
||||
import requests
|
||||
import json
|
||||
|
||||
def migrate_issues(jira_url, github_repo, token):
|
||||
# Jira API からIssue取得
|
||||
jira_issues = fetch_jira_issues(jira_url)
|
||||
|
||||
for issue in jira_issues:
|
||||
# GitHub Issue 形式に変換
|
||||
github_issue = {
|
||||
'title': issue['fields']['summary'],
|
||||
'body': convert_description(issue['fields']['description']),
|
||||
'labels': map_jira_labels(issue['fields']['labels'])
|
||||
}
|
||||
|
||||
# GitHub API でIssue作成
|
||||
create_github_issue(github_repo, github_issue, token)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎓 実践演習
|
||||
|
||||
### 演習1: Issue管理システム構築
|
||||
1. バグ報告と機能要求のテンプレートを作成
|
||||
2. 体系的なラベル分類を設計
|
||||
3. マイルストーンを設定してIssueを分類
|
||||
|
||||
### 演習2: 自動化ワークフロー作成
|
||||
1. 新しいIssueの自動ラベリング設定
|
||||
2. 古いIssueの自動クローズ設定
|
||||
3. プロジェクトボードとの連携設定
|
||||
|
||||
### 演習3: レポート・分析
|
||||
1. Issue統計取得スクリプトの作成
|
||||
2. 進捗レポートの自動生成
|
||||
3. チームパフォーマンス分析
|
||||
|
||||
---
|
||||
|
||||
## 🔗 関連リソース
|
||||
|
||||
- [GitHub Docs - Issues](https://docs.github.com/en/issues)
|
||||
- [GitHub Issues Templates](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests)
|
||||
- [GitHub Projects Documentation](https://docs.github.com/en/issues/planning-and-tracking-with-projects)
|
||||
- [GitHub CLI Issues](https://cli.github.com/manual/gh_issue)
|
||||
|
||||
---
|
||||
|
||||
## 📝 まとめ
|
||||
|
||||
GitHub Issues を効果的に活用することで:
|
||||
|
||||
✅ **統一されたタスク管理** - 外部ツール不要でプロジェクト管理
|
||||
✅ **コードとの密接な連携** - コミット・PRとのシームレスな連携
|
||||
✅ **自動化による効率化** - GitHub Actions による作業自動化
|
||||
✅ **コスト削減** - 有料ツールからの移行によるコスト最適化
|
||||
✅ **チーム協調** - 透明性の高い情報共有とコミュニケーション
|
||||
|
||||
次は[Pull Request編](03-pull-requests.md)で、コードレビューとマージプロセスを学習しましょう。
|
||||
Loading…
Add table
Add a link
Reference in a new issue