Compare commits
14 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6fe65e9100 | |||
| b439d3fd00 | |||
| 2e85f00084 | |||
| 1bab048912 | |||
| facf3a2222 | |||
| a299881e12 | |||
| 7d5a432bbe | |||
| 99d3e4b78b | |||
| 95e6ad5584 | |||
| 2560cee37d | |||
| 6cf449eaeb | |||
| 4430911181 | |||
| 59b60ace06 | |||
| b390552cf1 |
27 changed files with 15052 additions and 6306 deletions
296
FLOW.md
296
FLOW.md
|
|
@ -1,296 +0,0 @@
|
||||||
# GitHub Development Flow Guide
|
|
||||||
|
|
||||||
このガイドは、Git worktreeを活用した効率的な開発フローをまとめたものです。
|
|
||||||
|
|
||||||
## 📋 基本的な開発フロー
|
|
||||||
|
|
||||||
### 1. 新規開発の流れ
|
|
||||||
|
|
||||||
#### 計画フェーズ
|
|
||||||
1. **リポジトリの作成**: GitHub上でプロジェクト用のリポジトリを作成
|
|
||||||
2. **ブランチ戦略の決定**:
|
|
||||||
- `main`: リリース可能な安定版
|
|
||||||
- `develop`: 開発統合用ブランチ
|
|
||||||
3. **仕様書の作成**: README.mdに「何を」「なぜ」「誰のために」を記載
|
|
||||||
4. **タスクの洗い出しと分解**: 数時間〜1日で完了できるレベルまで細分化
|
|
||||||
5. **全タスクのIssue化**: GitHub Issuesに登録し、Projectsボードで管理
|
|
||||||
|
|
||||||
#### 開発フェーズ
|
|
||||||
```bash
|
|
||||||
# 1. Issueの選択
|
|
||||||
# GitHub ProjectsでIssueを「進行中」に移動
|
|
||||||
|
|
||||||
# 2. worktreeでブランチ作成
|
|
||||||
git worktree add -b feature/11-login-ui ../login-ui-work develop
|
|
||||||
cd ../login-ui-work
|
|
||||||
|
|
||||||
# 3. 開発作業
|
|
||||||
# コーディング作業
|
|
||||||
|
|
||||||
# 4. コミット (Conventional Commits形式)
|
|
||||||
git add .
|
|
||||||
git commit -m "feat: ログインフォームのUIコンポーネントを作成 #11"
|
|
||||||
|
|
||||||
# 5. プッシュ
|
|
||||||
git push origin feature/11-login-ui
|
|
||||||
```
|
|
||||||
|
|
||||||
#### レビュー&統合フェーズ
|
|
||||||
1. **プルリクエストの作成**: GitHub上でPRを作成(`Closes #11`を含める)
|
|
||||||
2. **自動テストの実行**: GitHub Actionsが自動でテストを実行
|
|
||||||
3. **コードレビュー**: レビュアーがコードを確認
|
|
||||||
4. **マージ**: テストとレビューが完了したらマージ
|
|
||||||
5. **後片付け**:
|
|
||||||
```bash
|
|
||||||
cd ../my-project
|
|
||||||
git worktree remove ../login-ui-work
|
|
||||||
git branch -d feature/11-login-ui
|
|
||||||
git push origin --delete feature/11-login-ui
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. 機能追加の流れ
|
|
||||||
|
|
||||||
#### 計画フェーズ
|
|
||||||
1. **機能要件の明確化**: What(何を)、Why(なぜ)、How(どのように)を定義
|
|
||||||
2. **Issueの作成**: 要件、技術的検討事項、受け入れ条件を記載
|
|
||||||
3. **ラベルとプロジェクトボードへの追加**: `feature`ラベル、優先度設定
|
|
||||||
4. **タスクの分解**: 大きな機能はサブタスクに分割
|
|
||||||
|
|
||||||
#### 開発フェーズ
|
|
||||||
```bash
|
|
||||||
# 1. 最新のdevelopを取得
|
|
||||||
cd ../my-project
|
|
||||||
git checkout develop
|
|
||||||
git pull origin develop
|
|
||||||
|
|
||||||
# 2. 機能用の作業場を作成
|
|
||||||
git worktree add -b feature/24-comment ../comment-work develop
|
|
||||||
cd ../comment-work
|
|
||||||
|
|
||||||
# 3. 開発(小さなコミットを重ねる)
|
|
||||||
git commit -m "feat: コメント投稿フォームのUIを作成 #24"
|
|
||||||
git commit -m "test: コメント投稿APIのテストを追加 #24"
|
|
||||||
|
|
||||||
# 4. 定期的なプッシュ
|
|
||||||
git push origin feature/24-comment
|
|
||||||
```
|
|
||||||
|
|
||||||
#### レビュー&テストフェーズ
|
|
||||||
1. **セルフレビュー**: 不要なコードの削除、フォーマット確認
|
|
||||||
2. **プルリクエストの作成**: 変更内容、テスト方法、スクリーンショットを含める
|
|
||||||
3. **自動テストとCI/CD**: GitHub Actionsによる自動検証
|
|
||||||
4. **コードレビュー**: 設計、可読性、テスト、パフォーマンス、セキュリティ
|
|
||||||
5. **フィードバック対応**: レビューコメントに基づく修正
|
|
||||||
|
|
||||||
### 3. バグ修正の流れ
|
|
||||||
|
|
||||||
#### バグの分類
|
|
||||||
- **Critical(緊急)**: サービス停止、データ損失の危険 → mainからhotfix
|
|
||||||
- **High(高)**: 主要機能の不具合 → developからbugfix
|
|
||||||
- **Medium/Low**: 限定的な影響 → developからbugfix
|
|
||||||
|
|
||||||
#### 修正フロー
|
|
||||||
```bash
|
|
||||||
# 1. バグ報告のIssue作成(詳細な再現手順、期待動作、実際の動作、エラーログ)
|
|
||||||
|
|
||||||
# 2. 緊急度に応じたブランチ作成
|
|
||||||
# 緊急の場合
|
|
||||||
git worktree add -b hotfix/28-critical-auth ../hotfix-auth main
|
|
||||||
|
|
||||||
# 通常の場合
|
|
||||||
git worktree add -b bugfix/27-login-validation ../bugfix-login develop
|
|
||||||
|
|
||||||
# 3. バグの再現とテスト作成
|
|
||||||
cd ../bugfix-login
|
|
||||||
# まず失敗するテストを書く
|
|
||||||
npm test -- --grep "email with plus sign" # 失敗を確認
|
|
||||||
|
|
||||||
# 4. 修正の実装(最小限の変更)
|
|
||||||
git commit -m "test: メールアドレスに+記号を含む場合のテストを追加 #27"
|
|
||||||
git commit -m "fix: メールアドレスの+記号を正しく処理するように修正 #27"
|
|
||||||
|
|
||||||
# 5. 検証
|
|
||||||
npm test # すべてのテストがパス
|
|
||||||
npm run dev # 手動確認
|
|
||||||
|
|
||||||
# 6. プッシュとPR
|
|
||||||
git push origin bugfix/27-login-validation
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔄 並列開発のパターン
|
|
||||||
|
|
||||||
### 複数機能の同時開発
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 3つの機能を並行開発
|
|
||||||
../feature-login/ # ログイン機能(localhost:3000)
|
|
||||||
../feature-profile/ # プロフィール機能(localhost:3001)
|
|
||||||
../feature-dashboard/ # ダッシュボード(localhost:3002)
|
|
||||||
|
|
||||||
# 各ディレクトリで独立して開発サーバーを起動
|
|
||||||
cd ../feature-login && npm run dev
|
|
||||||
cd ../feature-profile && npm run dev -- --port 3001
|
|
||||||
cd ../feature-dashboard && npm run dev -- --port 3002
|
|
||||||
```
|
|
||||||
|
|
||||||
### レビュー対応中の新規開発
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# PR待ちの間に別の作業を開始
|
|
||||||
../feature-A/ # レビュー待ち
|
|
||||||
../feature-B/ # 新規開発中
|
|
||||||
../bugfix-C/ # 緊急修正
|
|
||||||
|
|
||||||
# レビューコメントが来たらすぐに切り替え
|
|
||||||
cd ../feature-A
|
|
||||||
# 修正対応
|
|
||||||
git add .
|
|
||||||
git commit -m "fix: レビュー指摘事項を修正"
|
|
||||||
git push
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🛠️ 便利なコマンド集
|
|
||||||
|
|
||||||
### worktree管理
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# worktree一覧表示
|
|
||||||
git worktree list
|
|
||||||
|
|
||||||
# 不要なworktreeの削除
|
|
||||||
git worktree prune
|
|
||||||
|
|
||||||
# 特定のコミットからworktree作成
|
|
||||||
git worktree add -b feature/test ../test-feature abc123def
|
|
||||||
```
|
|
||||||
|
|
||||||
### ブランチ管理
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# リモートブランチの最新化
|
|
||||||
git fetch --all --prune
|
|
||||||
|
|
||||||
# マージ済みブランチの削除
|
|
||||||
git branch --merged | grep -v "\*\|main\|develop" | xargs -n 1 git branch -d
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📝 コミットメッセージ規約
|
|
||||||
|
|
||||||
### Conventional Commits形式
|
|
||||||
|
|
||||||
```
|
|
||||||
<type>(<scope>): <subject>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Type一覧
|
|
||||||
- `feat`: 新機能
|
|
||||||
- `fix`: バグ修正
|
|
||||||
- `docs`: ドキュメントのみの変更
|
|
||||||
- `style`: コードの意味に影響しない変更
|
|
||||||
- `refactor`: バグ修正や機能追加を伴わないコード変更
|
|
||||||
- `perf`: パフォーマンス改善
|
|
||||||
- `test`: テストの追加・修正
|
|
||||||
- `chore`: ビルドプロセスやツールの変更
|
|
||||||
|
|
||||||
#### 例
|
|
||||||
```bash
|
|
||||||
git commit -m "feat(auth): JWT認証を実装"
|
|
||||||
git commit -m "fix: メモリリークを修正"
|
|
||||||
git commit -m "docs: READMEにインストール手順を追加"
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🤖 GitHub連携機能
|
|
||||||
|
|
||||||
### GitHub Actions(自動化)
|
|
||||||
|
|
||||||
`.github/workflows/ci.yml`:
|
|
||||||
```yaml
|
|
||||||
name: CI
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches: [main, develop]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
- run: npm ci
|
|
||||||
- run: npm test
|
|
||||||
- run: npm run lint
|
|
||||||
```
|
|
||||||
|
|
||||||
### PR作成時のチェックリスト
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
## 変更内容
|
|
||||||
- [ ] 機能の説明を記載
|
|
||||||
- [ ] テストを追加/更新
|
|
||||||
- [ ] ドキュメントを更新
|
|
||||||
|
|
||||||
## テスト
|
|
||||||
- [ ] ローカルでテスト実行
|
|
||||||
- [ ] 手動での動作確認
|
|
||||||
|
|
||||||
## レビュー依頼事項
|
|
||||||
- 特に確認してほしい箇所を記載
|
|
||||||
```
|
|
||||||
|
|
||||||
## 💡 Tips & Best Practices
|
|
||||||
|
|
||||||
### 1. worktreeの命名規則
|
|
||||||
```bash
|
|
||||||
# 推奨される命名パターン
|
|
||||||
../feature-login # 機能開発
|
|
||||||
../bugfix-auth # バグ修正
|
|
||||||
../hotfix-critical # 緊急修正
|
|
||||||
../experiment-new-ui # 実験的変更
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. 並列開発の注意点
|
|
||||||
- 各worktreeで異なるポートを使用
|
|
||||||
- node_modulesは各worktreeで独立管理
|
|
||||||
- 環境変数は各worktreeで設定
|
|
||||||
|
|
||||||
### 3. クリーンアップの習慣
|
|
||||||
```bash
|
|
||||||
# 週次でのクリーンアップ
|
|
||||||
git worktree prune
|
|
||||||
git remote prune origin
|
|
||||||
git branch --merged | grep -v "\*\|main\|develop" | xargs -n 1 git branch -d
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. トラブルシューティング
|
|
||||||
|
|
||||||
worktreeが削除できない場合:
|
|
||||||
```bash
|
|
||||||
# 強制削除
|
|
||||||
git worktree remove --force ../feature-xxx
|
|
||||||
|
|
||||||
# 手動削除後のクリーンアップ
|
|
||||||
rm -rf ../feature-xxx
|
|
||||||
git worktree prune
|
|
||||||
```
|
|
||||||
|
|
||||||
ブランチの切り替えができない場合:
|
|
||||||
```bash
|
|
||||||
# 未コミットの変更を一時保存
|
|
||||||
git stash
|
|
||||||
# または
|
|
||||||
git commit -m "WIP: 作業中の変更"
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🎯 まとめ
|
|
||||||
|
|
||||||
Git worktreeを活用することで:
|
|
||||||
- ✅ 複数の作業を物理的に分離して管理
|
|
||||||
- ✅ コンテキストスイッチのコストを最小化
|
|
||||||
- ✅ 並列開発による生産性向上
|
|
||||||
- ✅ レビュー対応と新規開発の両立
|
|
||||||
|
|
||||||
このフローに従うことで、効率的で整理された開発環境を維持できます。
|
|
||||||
File diff suppressed because it is too large
Load diff
525
advanced/ai-parallel-development.md
Normal file
525
advanced/ai-parallel-development.md
Normal file
|
|
@ -0,0 +1,525 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: "AI駆動並列開発ガイド - GitHubで実現する次世代開発"
|
||||||
|
description: "複数のAIを活用して並列開発を行うためのGitHub完全活用ガイド"
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🤖 AI駆動並列開発ガイド
|
||||||
|
|
||||||
|
複数のAIツール(Claude、GPT-4、GitHub Copilot等)を活用して、GitHubで効率的に並列開発を行う方法を解説します。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 目次
|
||||||
|
|
||||||
|
1. [AI駆動並列開発とは?](#ai駆動並列開発とは)
|
||||||
|
2. [なぜGitHubが最適なのか](#なぜgithubが最適なのか)
|
||||||
|
3. [事前準備](#事前準備)
|
||||||
|
4. [実践ワークフロー](#実践ワークフロー)
|
||||||
|
5. [理解すべき重要ポイント](#理解すべき重要ポイント)
|
||||||
|
6. [実例:ECサイト開発](#実例ecサイト開発)
|
||||||
|
7. [トラブルシューティング](#トラブルシューティング)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 AI駆動並列開発とは?
|
||||||
|
|
||||||
|
### 概念図
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────┐
|
||||||
|
│ 開発者(指揮者) │
|
||||||
|
└────────┬────────┬────────┬────────┬─────────┘
|
||||||
|
↓ ↓ ↓ ↓
|
||||||
|
┌────┴───┐┌──┴───┐┌──┴───┐┌──┴───┐
|
||||||
|
│ Claude ││ GPT-4 ││Copilot││ Bard │
|
||||||
|
│ (UI担当)││(API) ││(テスト)││(文書)│
|
||||||
|
└────┬───┘└──┬───┘└──┬───┘└──┬───┘
|
||||||
|
↓ ↓ ↓ ↓
|
||||||
|
┌────┴────────┴────────┴────────┴───┐
|
||||||
|
│ GitHub Repository │
|
||||||
|
└───────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### メリット
|
||||||
|
- **開発速度**: 従来の2-5倍高速
|
||||||
|
- **品質向上**: AIによる一貫性のあるコード
|
||||||
|
- **並列作業**: 複数機能を同時開発
|
||||||
|
- **24時間開発**: AIは休まない
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌟 なぜGitHubが最適なのか
|
||||||
|
|
||||||
|
### 1. **ブランチ戦略**
|
||||||
|
複数のAIが干渉せずに作業可能
|
||||||
|
```
|
||||||
|
main
|
||||||
|
├── ai/claude-frontend
|
||||||
|
├── ai/gpt4-backend
|
||||||
|
├── ai/copilot-tests
|
||||||
|
└── ai/bard-docs
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. **自動化機能**
|
||||||
|
- GitHub Actions で品質チェック
|
||||||
|
- 自動マージによる統合
|
||||||
|
- Issue の自動クローズ
|
||||||
|
|
||||||
|
### 3. **レビュー体制**
|
||||||
|
- Pull Request で人間がチェック
|
||||||
|
- AI生成コードの品質保証
|
||||||
|
- 議論の場の提供
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ 事前準備
|
||||||
|
|
||||||
|
### 1. リポジトリ設定
|
||||||
|
|
||||||
|
#### ディレクトリ構造
|
||||||
|
```
|
||||||
|
project/
|
||||||
|
├── .github/
|
||||||
|
│ ├── workflows/ # 自動化設定
|
||||||
|
│ ├── ISSUE_TEMPLATE/ # Issue テンプレート
|
||||||
|
│ └── pull_request_template.md
|
||||||
|
├── frontend/ # Claude 担当
|
||||||
|
├── backend/ # GPT-4 担当
|
||||||
|
├── tests/ # Copilot 担当
|
||||||
|
└── docs/ # Bard 担当
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 必須ファイル作成
|
||||||
|
|
||||||
|
**.github/ISSUE_TEMPLATE/ai_task.md**
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
name: AI Task
|
||||||
|
about: AI に割り当てるタスク
|
||||||
|
title: '[AI] '
|
||||||
|
labels: ai-task
|
||||||
|
assignees: ''
|
||||||
|
---
|
||||||
|
|
||||||
|
## タスク概要
|
||||||
|
<!-- 何を実装するか -->
|
||||||
|
|
||||||
|
## 担当AI
|
||||||
|
- [ ] Claude
|
||||||
|
- [ ] GPT-4
|
||||||
|
- [ ] GitHub Copilot
|
||||||
|
- [ ] その他
|
||||||
|
|
||||||
|
## 要件
|
||||||
|
<!-- 具体的な要件 -->
|
||||||
|
|
||||||
|
## 期待する成果物
|
||||||
|
<!-- ファイル名、機能など -->
|
||||||
|
|
||||||
|
## 依存関係
|
||||||
|
<!-- 他のタスクとの関係 -->
|
||||||
|
```
|
||||||
|
|
||||||
|
**.github/workflows/ai-parallel-check.yml**
|
||||||
|
```yaml
|
||||||
|
name: AI並列開発チェック
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [opened, synchronize]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
parallel-validation:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
check: [lint, test, build, security-scan]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '18'
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Run ${{ matrix.check }}
|
||||||
|
run: npm run ${{ matrix.check }}
|
||||||
|
|
||||||
|
- name: AI生成コード検証
|
||||||
|
if: contains(github.event.pull_request.labels.*.name, 'ai-generated')
|
||||||
|
run: |
|
||||||
|
echo "AI生成コードの追加検証を実行"
|
||||||
|
npm run validate:ai-code
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. ブランチ保護設定
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# GitHub CLI での設定
|
||||||
|
gh api repos/:owner/:repo/branches/main/protection \
|
||||||
|
--method PUT \
|
||||||
|
--field required_status_checks='{"strict":true,"contexts":["parallel-validation"]}' \
|
||||||
|
--field enforce_admins=false \
|
||||||
|
--field required_pull_request_reviews='{"required_approving_review_count":1}' \
|
||||||
|
--field restrictions=null
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 実践ワークフロー
|
||||||
|
|
||||||
|
### Phase 1: タスク分解と Issue 作成
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. プロジェクト作成
|
||||||
|
gh repo create my-ai-project --public --clone
|
||||||
|
|
||||||
|
# 2. Issue 一括作成
|
||||||
|
gh issue create -t "認証UIコンポーネント作成" -b "Reactで認証画面を実装" -l "ai-task,frontend"
|
||||||
|
gh issue create -t "認証API実装" -b "Express.jsでJWT認証エンドポイント" -l "ai-task,backend"
|
||||||
|
gh issue create -t "認証テスト作成" -b "UIとAPIの統合テスト" -l "ai-task,test"
|
||||||
|
gh issue create -t "認証ドキュメント作成" -b "認証フローの技術文書" -l "ai-task,docs"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Phase 2: AI への指示とブランチ作成
|
||||||
|
|
||||||
|
#### Claude への指示例(フロントエンド)
|
||||||
|
```markdown
|
||||||
|
以下の Issue #1 の要件に基づいて、React認証コンポーネントを作成してください。
|
||||||
|
|
||||||
|
要件:
|
||||||
|
- Material-UI を使用
|
||||||
|
- メールとパスワードのフォーム
|
||||||
|
- バリデーション機能
|
||||||
|
- エラーハンドリング
|
||||||
|
|
||||||
|
ファイル構造:
|
||||||
|
- src/components/Auth/Login.jsx
|
||||||
|
- src/components/Auth/Register.jsx
|
||||||
|
- src/components/Auth/auth.css
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 各AIでの作業
|
||||||
|
```bash
|
||||||
|
# ブランチ作成と切り替え
|
||||||
|
git checkout -b ai/claude-auth-ui
|
||||||
|
# Claudeが生成したコードを追加
|
||||||
|
git add frontend/
|
||||||
|
git commit -m "feat: AI-generated auth UI components #1"
|
||||||
|
git push origin ai/claude-auth-ui
|
||||||
|
|
||||||
|
# 同様に他のAIでも実行
|
||||||
|
git checkout -b ai/gpt4-auth-api
|
||||||
|
# GPT-4のコードを追加...
|
||||||
|
```
|
||||||
|
|
||||||
|
### Phase 3: 並列 Pull Request
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# PR作成(各ブランチで)
|
||||||
|
gh pr create \
|
||||||
|
--title "feat: 認証UI実装 by Claude AI" \
|
||||||
|
--body "$(cat <<EOF
|
||||||
|
## AI生成情報
|
||||||
|
- AI: Claude 3
|
||||||
|
- タスク: Issue #1
|
||||||
|
- 生成日時: $(date)
|
||||||
|
|
||||||
|
## 実装内容
|
||||||
|
- ログインコンポーネント
|
||||||
|
- 登録コンポーネント
|
||||||
|
- バリデーション
|
||||||
|
|
||||||
|
## チェックリスト
|
||||||
|
- [x] コード生成完了
|
||||||
|
- [x] Lintパス
|
||||||
|
- [ ] 人間によるレビュー待ち
|
||||||
|
EOF
|
||||||
|
)" \
|
||||||
|
--label "ai-generated,frontend"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Phase 4: 統合とテスト
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# .github/workflows/integration.yml
|
||||||
|
name: 統合テスト
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 */4 * * *' # 4時間ごと
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
merge-ai-branches:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: 統合ブランチ作成
|
||||||
|
run: |
|
||||||
|
git checkout -b integration/ai-combined
|
||||||
|
git merge origin/ai/claude-auth-ui
|
||||||
|
git merge origin/ai/gpt4-auth-api
|
||||||
|
git merge origin/ai/copilot-auth-tests
|
||||||
|
|
||||||
|
- name: 統合テスト実行
|
||||||
|
run: |
|
||||||
|
npm ci
|
||||||
|
npm run test:integration
|
||||||
|
|
||||||
|
- name: 成功時は main へ PR
|
||||||
|
if: success()
|
||||||
|
run: |
|
||||||
|
gh pr create \
|
||||||
|
--title "AI統合: 認証機能" \
|
||||||
|
--body "全AIブランチの統合完了"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 理解すべき重要ポイント
|
||||||
|
|
||||||
|
### 1. **タスクの独立性**
|
||||||
|
|
||||||
|
#### ❌ 悪い例
|
||||||
|
```
|
||||||
|
Task A: ユーザーモデルとUI作成
|
||||||
|
Task B: ユーザーモデルを使うAPI作成
|
||||||
|
→ Task B は Task A の完了待ち
|
||||||
|
```
|
||||||
|
|
||||||
|
#### ✅ 良い例
|
||||||
|
```
|
||||||
|
Task A: ユーザーUIコンポーネント(モックデータ使用)
|
||||||
|
Task B: ユーザーAPI(インターフェース定義済み)
|
||||||
|
Task C: データモデル定義
|
||||||
|
→ 全て並列実行可能
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. **インターフェースファースト**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// interfaces/user.ts を最初に定義
|
||||||
|
export interface User {
|
||||||
|
id: string;
|
||||||
|
email: string;
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AuthResponse {
|
||||||
|
user: User;
|
||||||
|
token: string;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. **AIプロンプトの標準化**
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## プロンプトテンプレート
|
||||||
|
|
||||||
|
### 役割
|
||||||
|
あなたは[フロントエンド/バックエンド/テスト]エンジニアです。
|
||||||
|
|
||||||
|
### タスク
|
||||||
|
[具体的なタスク内容]
|
||||||
|
|
||||||
|
### 技術スタック
|
||||||
|
- 言語: [TypeScript/Python/etc]
|
||||||
|
- フレームワーク: [React/Express/etc]
|
||||||
|
- ライブラリ: [必須ライブラリ]
|
||||||
|
|
||||||
|
### コーディング規約
|
||||||
|
- [プロジェクトの規約]
|
||||||
|
|
||||||
|
### 期待する出力
|
||||||
|
- ファイル名: [具体的なパス]
|
||||||
|
- 機能: [実装する機能]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. **コンフリクト回避戦略**
|
||||||
|
|
||||||
|
```
|
||||||
|
frontend/
|
||||||
|
├── components/
|
||||||
|
│ ├── auth/ # Claude 担当
|
||||||
|
│ ├── dashboard/ # GPT-4 担当
|
||||||
|
│ └── shared/ # 共通(人間が管理)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. **品質保証の仕組み**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph LR
|
||||||
|
A[AI生成] --> B[自動Lint]
|
||||||
|
B --> C[自動テスト]
|
||||||
|
C --> D[セキュリティスキャン]
|
||||||
|
D --> E[人間レビュー]
|
||||||
|
E --> F[マージ]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 実例:ECサイト開発
|
||||||
|
|
||||||
|
### プロジェクト構造
|
||||||
|
```
|
||||||
|
ecommerce-ai/
|
||||||
|
├── frontend/ # Claude
|
||||||
|
│ ├── ProductList
|
||||||
|
│ ├── Cart
|
||||||
|
│ └── Checkout
|
||||||
|
├── backend/ # GPT-4
|
||||||
|
│ ├── products-api
|
||||||
|
│ ├── orders-api
|
||||||
|
│ └── payment-api
|
||||||
|
├── mobile/ # Copilot
|
||||||
|
│ └── react-native-app
|
||||||
|
└── tests/ # Bard
|
||||||
|
├── e2e/
|
||||||
|
└── integration/
|
||||||
|
```
|
||||||
|
|
||||||
|
### タイムライン(1日の流れ)
|
||||||
|
```
|
||||||
|
09:00 - タスク分解、Issue作成
|
||||||
|
09:30 - 各AIへ指示出し
|
||||||
|
10:00 - AI作業中(並列)
|
||||||
|
12:00 - 最初のPR確認
|
||||||
|
13:00 - フィードバック、AI再生成
|
||||||
|
15:00 - 統合テスト
|
||||||
|
16:00 - 本番環境へデプロイ
|
||||||
|
```
|
||||||
|
|
||||||
|
### 実績
|
||||||
|
- **開発期間**: 3日(従来は2週間)
|
||||||
|
- **コード行数**: 15,000行
|
||||||
|
- **テストカバレッジ**: 85%
|
||||||
|
- **バグ数**: 従来の40%減
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 トラブルシューティング
|
||||||
|
|
||||||
|
### よくある問題と解決策
|
||||||
|
|
||||||
|
#### 1. AI間の仕様不整合
|
||||||
|
```bash
|
||||||
|
# 解決: 共通インターフェースファイル
|
||||||
|
echo "export interface UserAPI { ... }" > shared/interfaces.ts
|
||||||
|
# 全AIにこのファイルを参照させる
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. マージコンフリクト
|
||||||
|
```bash
|
||||||
|
# 解決: 定期的な統合
|
||||||
|
git checkout -b integration/daily
|
||||||
|
git merge --no-ff ai/claude-branch
|
||||||
|
git merge --no-ff ai/gpt4-branch
|
||||||
|
# コンフリクト解決後
|
||||||
|
git push origin integration/daily
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. AIの出力品質が低い
|
||||||
|
```yaml
|
||||||
|
# .github/ai-quality-check.yml
|
||||||
|
quality_thresholds:
|
||||||
|
complexity: 10 # 循環的複雑度
|
||||||
|
duplication: 5% # 重複コード
|
||||||
|
test_coverage: 80% # テストカバレッジ
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4. 依存関係の問題
|
||||||
|
```json
|
||||||
|
// package.json でバージョン固定
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"react": "18.2.0", // 固定
|
||||||
|
"express": "4.18.2" // 固定
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 ベストプラクティス
|
||||||
|
|
||||||
|
### 1. **日次スタンドアップ with AI**
|
||||||
|
```markdown
|
||||||
|
## AI Status Check
|
||||||
|
- [ ] Claude: フロントエンド進捗 70%
|
||||||
|
- [ ] GPT-4: API実装完了
|
||||||
|
- [ ] Copilot: テスト作成中
|
||||||
|
- [ ] 統合テスト: 本日15時予定
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. **AI ローテーション**
|
||||||
|
異なるAIに同じタスクを割り当てて、最良の実装を選択
|
||||||
|
|
||||||
|
### 3. **継続的な学習**
|
||||||
|
```yaml
|
||||||
|
# AIの出力を評価・記録
|
||||||
|
ai_performance:
|
||||||
|
claude:
|
||||||
|
success_rate: 85%
|
||||||
|
avg_review_time: 30min
|
||||||
|
gpt4:
|
||||||
|
success_rate: 90%
|
||||||
|
avg_review_time: 25min
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. **ドキュメント自動生成**
|
||||||
|
```bash
|
||||||
|
# PR作成時に自動でドキュメント更新
|
||||||
|
npm run generate:docs
|
||||||
|
git add docs/
|
||||||
|
git commit -m "docs: auto-update API documentation"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 次のステップ
|
||||||
|
|
||||||
|
1. **小規模プロジェクトで試す**
|
||||||
|
- TODO アプリなど簡単なものから
|
||||||
|
|
||||||
|
2. **AIの特性を理解**
|
||||||
|
- Claude: UI/UXに強い
|
||||||
|
- GPT-4: ロジック・アルゴリズム
|
||||||
|
- Copilot: 既存コードの拡張
|
||||||
|
|
||||||
|
3. **チームへの展開**
|
||||||
|
- ワークショップ開催
|
||||||
|
- ガイドライン策定
|
||||||
|
|
||||||
|
4. **メトリクス収集**
|
||||||
|
- 開発速度の改善率
|
||||||
|
- バグ率の変化
|
||||||
|
- チーム満足度
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 関連リソース
|
||||||
|
|
||||||
|
- [GitHub Actions 詳細ガイド](../features/05-github-actions.md)
|
||||||
|
- [ブランチ戦略ガイド](../features/01-repository-basics.md)
|
||||||
|
- [Pull Request ベストプラクティス](../features/03-pull-requests.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🤝 コミュニティ
|
||||||
|
|
||||||
|
AI駆動開発について議論しましょう:
|
||||||
|
- [GitHub Discussions](https://github.com/marketing-shibata50/github-research-tool/discussions)
|
||||||
|
- Issues での質問も歓迎
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*最終更新: 2024年1月*
|
||||||
2005
advanced/github-features-detailed.md
Normal file
2005
advanced/github-features-detailed.md
Normal file
File diff suppressed because it is too large
Load diff
272
beginners/github-beginner-guide.md
Normal file
272
beginners/github-beginner-guide.md
Normal file
|
|
@ -0,0 +1,272 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: "はじめてのGitHub - 超初心者向けガイド"
|
||||||
|
description: "GitHubを今から始める人のための、やさしい入門ガイド"
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🌱 はじめてのGitHub - 超初心者向けガイド
|
||||||
|
|
||||||
|
プログラミングの知識ゼロでも大丈夫!GitHubの使い方を、一番簡単なところから説明します。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 このガイドで学べること
|
||||||
|
|
||||||
|
- GitHubって何?
|
||||||
|
- アカウントの作り方
|
||||||
|
- 最初のプロジェクト作成
|
||||||
|
- ファイルの保存と管理
|
||||||
|
- 他の人と協力する方法
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🤔 そもそもGitHubって何?
|
||||||
|
|
||||||
|
### 簡単に言うと...
|
||||||
|
**GitHubは「ファイルを保存して、みんなで共有できるサービス」です。**
|
||||||
|
|
||||||
|
### 例えば、こんな使い方ができます
|
||||||
|
- 📝 **文書管理** - マニュアルや資料を管理
|
||||||
|
- 💻 **コード管理** - プログラムを保存
|
||||||
|
- 🎨 **デザイン管理** - 画像やデザインファイル
|
||||||
|
- 📊 **データ管理** - CSVやExcelファイル
|
||||||
|
- 📚 **学習記録** - 勉強したことをまとめる
|
||||||
|
|
||||||
|
### GitHubの3つの特徴
|
||||||
|
1. **履歴が残る** - いつ、誰が、何を変更したか全部記録
|
||||||
|
2. **元に戻せる** - 失敗しても前の状態に戻せる
|
||||||
|
3. **みんなで使える** - チームで同じファイルを編集できる
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 STEP 1: アカウントを作ろう
|
||||||
|
|
||||||
|
### 1. GitHubにアクセス
|
||||||
|
[https://github.com](https://github.com) を開く
|
||||||
|
|
||||||
|
### 2. Sign up(サインアップ)をクリック
|
||||||
|
右上の「Sign up」ボタンをクリック
|
||||||
|
|
||||||
|
### 3. 必要な情報を入力
|
||||||
|
- **Username(ユーザー名)**: 好きな名前(英数字)
|
||||||
|
- **Email(メールアドレス)**: 普段使うメール
|
||||||
|
- **Password(パスワード)**: 8文字以上
|
||||||
|
|
||||||
|
### 4. 検証を完了
|
||||||
|
- パズルを解く(ロボットじゃないことを証明)
|
||||||
|
- メールに届いた数字を入力
|
||||||
|
|
||||||
|
**🎉 完成!これでGitHubが使えます!**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📁 STEP 2: 最初のリポジトリを作ろう
|
||||||
|
|
||||||
|
### リポジトリって何?
|
||||||
|
**リポジトリ = プロジェクトの保存場所**
|
||||||
|
(フォルダみたいなもの)
|
||||||
|
|
||||||
|
### 作り方
|
||||||
|
1. **右上の「+」ボタン** → **「New repository」**
|
||||||
|
|
||||||
|
2. **必要事項を入力**
|
||||||
|
- **Repository name**: プロジェクトの名前
|
||||||
|
- 例:`my-first-project`、`hello-world`
|
||||||
|
- **Description**: プロジェクトの説明(省略OK)
|
||||||
|
- 例:「GitHubの練習用プロジェクト」
|
||||||
|
- **Public/Private**: 公開設定
|
||||||
|
- **Public**: みんなに公開(無料)
|
||||||
|
- **Private**: 自分だけ(無料)
|
||||||
|
|
||||||
|
3. **初期設定**(チェックを入れる)
|
||||||
|
- ✅ **Add a README file**: 説明ファイルを作る
|
||||||
|
- ✅ **Add .gitignore**: 無視するファイルの設定
|
||||||
|
- ✅ **Choose a license**: ライセンス(後で考えてOK)
|
||||||
|
|
||||||
|
4. **「Create repository」をクリック**
|
||||||
|
|
||||||
|
**🎊 リポジトリ完成!**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 STEP 3: ファイルを追加してみよう
|
||||||
|
|
||||||
|
### 方法1: ブラウザで直接作成
|
||||||
|
1. **「Add file」** → **「Create new file」**
|
||||||
|
2. **ファイル名を入力**
|
||||||
|
- 例:`memo.txt`、`diary.md`
|
||||||
|
3. **内容を入力**
|
||||||
|
```
|
||||||
|
今日のメモ
|
||||||
|
|
||||||
|
GitHubを始めました!
|
||||||
|
思ったより簡単でした。
|
||||||
|
```
|
||||||
|
4. **下の方にある「Commit new file」をクリック**
|
||||||
|
|
||||||
|
### 方法2: ファイルをアップロード
|
||||||
|
1. **「Add file」** → **「Upload files」**
|
||||||
|
2. **ファイルをドラッグ&ドロップ**
|
||||||
|
3. **「Commit changes」をクリック**
|
||||||
|
|
||||||
|
### 💡 Commit(コミット)って何?
|
||||||
|
**Commit = 変更を保存すること**
|
||||||
|
- セーブみたいなもの
|
||||||
|
- 変更内容にメッセージを付けられる
|
||||||
|
- 後で見返しやすい
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✏️ STEP 4: ファイルを編集しよう
|
||||||
|
|
||||||
|
### 編集の手順
|
||||||
|
1. **編集したいファイルをクリック**
|
||||||
|
2. **鉛筆アイコン(✏️)をクリック**
|
||||||
|
3. **内容を変更**
|
||||||
|
4. **下にスクロールして「Commit changes」**
|
||||||
|
- **メッセージを入力**(例:「日付を追加」)
|
||||||
|
- **「Commit changes」をクリック**
|
||||||
|
|
||||||
|
### 変更履歴を見る
|
||||||
|
1. **ファイル名の横の「History」をクリック**
|
||||||
|
2. **いつ、何を変更したか一覧で見れる**
|
||||||
|
3. **各変更をクリックすると詳細が見れる**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 👥 STEP 5: 他の人と協力しよう(基本編)
|
||||||
|
|
||||||
|
### Issues(イシュー)を使った連絡
|
||||||
|
**Issues = 連絡帳・TODO リスト**
|
||||||
|
|
||||||
|
#### 作り方
|
||||||
|
1. **「Issues」タブをクリック**
|
||||||
|
2. **「New issue」をクリック**
|
||||||
|
3. **タイトルと内容を入力**
|
||||||
|
- タイトル例:「README に使い方を追加してください」
|
||||||
|
- 内容例:「初めての人向けの説明を追加したいです」
|
||||||
|
4. **「Submit new issue」をクリック**
|
||||||
|
|
||||||
|
#### 返信の仕方
|
||||||
|
1. **Issueを開く**
|
||||||
|
2. **下のコメント欄に返信を書く**
|
||||||
|
3. **「Comment」をクリック**
|
||||||
|
|
||||||
|
### 他の人のプロジェクトを見る
|
||||||
|
1. **検索バーにキーワードを入力**
|
||||||
|
- 例:「recipe」「todo」「diary」
|
||||||
|
2. **気になるプロジェクトをクリック**
|
||||||
|
3. **⭐Star を付けてお気に入り登録**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 知っておくと便利な機能
|
||||||
|
|
||||||
|
### 📝 README.md(リードミー)
|
||||||
|
- **プロジェクトの説明書**
|
||||||
|
- **最初に表示される**
|
||||||
|
- **Markdown(マークダウン)で書ける**
|
||||||
|
|
||||||
|
#### 簡単なMarkdown記法
|
||||||
|
```markdown
|
||||||
|
# 大見出し
|
||||||
|
## 中見出し
|
||||||
|
### 小見出し
|
||||||
|
|
||||||
|
- 箇条書き1
|
||||||
|
- 箇条書き2
|
||||||
|
|
||||||
|
**太字**
|
||||||
|
*斜体*
|
||||||
|
|
||||||
|
[リンク](https://github.com)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔒 公開/非公開の切り替え
|
||||||
|
1. **Settings(設定)**
|
||||||
|
2. **一番下の「Danger Zone」**
|
||||||
|
3. **「Change visibility」**
|
||||||
|
|
||||||
|
### 📊 プロジェクトの統計
|
||||||
|
- **Insights タブ**で色々な統計が見れる
|
||||||
|
- **誰が**、**いつ**、**どれくらい**活動したか
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 練習課題
|
||||||
|
|
||||||
|
### レベル1:基本操作
|
||||||
|
1. ✅ アカウントを作る
|
||||||
|
2. ✅ リポジトリを作る
|
||||||
|
3. ✅ README.md を編集する
|
||||||
|
4. ✅ 新しいファイルを追加する
|
||||||
|
|
||||||
|
### レベル2:ファイル管理
|
||||||
|
1. ✅ フォルダを作る(ファイル名に`/`を使う)
|
||||||
|
2. ✅ 画像をアップロードする
|
||||||
|
3. ✅ ファイルを削除する
|
||||||
|
4. ✅ 変更履歴を確認する
|
||||||
|
|
||||||
|
### レベル3:コミュニケーション
|
||||||
|
1. ✅ Issue を作る
|
||||||
|
2. ✅ Issue にコメントする
|
||||||
|
3. ✅ 他の人のリポジトリに Star を付ける
|
||||||
|
4. ✅ 面白いプロジェクトを3つ見つける
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ❓ よくある質問と回答
|
||||||
|
|
||||||
|
### Q: 英語が苦手でも大丈夫?
|
||||||
|
**A: 大丈夫です!**
|
||||||
|
- 基本的な単語だけ覚えればOK
|
||||||
|
- Google翻訳を使いながらでもOK
|
||||||
|
- 日本語でファイルを作ってもOK
|
||||||
|
|
||||||
|
### Q: 間違えて消しちゃったらどうしよう?
|
||||||
|
**A: 大丈夫!履歴から復元できます**
|
||||||
|
1. History を見る
|
||||||
|
2. 消す前の状態を選ぶ
|
||||||
|
3. 復元する
|
||||||
|
|
||||||
|
### Q: みんなに見られるのが恥ずかしい
|
||||||
|
**A: Private(非公開)にすればOK!**
|
||||||
|
- 後から公開に変更もできる
|
||||||
|
- 最初は非公開で練習がおすすめ
|
||||||
|
|
||||||
|
### Q: 何を作ればいいかわからない
|
||||||
|
**A: こんなものから始めてみては?**
|
||||||
|
- 日記
|
||||||
|
- 勉強メモ
|
||||||
|
- レシピ集
|
||||||
|
- 読書記録
|
||||||
|
- TODO リスト
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 次のステップ
|
||||||
|
|
||||||
|
### もう少し慣れたら...
|
||||||
|
1. **ブランチ**を使ってみる(安全に実験できる)
|
||||||
|
2. **Pull Request**を体験する(変更の提案)
|
||||||
|
3. **GitHub Pages**でWebサイトを作る
|
||||||
|
|
||||||
|
### 学習リソース
|
||||||
|
- [GitHub公式の日本語ガイド](https://docs.github.com/ja)
|
||||||
|
- [実践的な操作手順ガイド](github-hands-on.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎉 おめでとうございます!
|
||||||
|
|
||||||
|
ここまで読んだあなたは、もうGitHubの基本が使えるようになっています!
|
||||||
|
|
||||||
|
**覚えておいてほしいこと:**
|
||||||
|
- 💪 **最初は誰でも初心者**
|
||||||
|
- 🔄 **失敗しても戻せる**
|
||||||
|
- 📈 **使えば使うほど上達する**
|
||||||
|
- 🤝 **分からないことは聞いてOK**
|
||||||
|
|
||||||
|
**まずは1つ、何かファイルを保存してみることから始めましょう!**
|
||||||
|
|
||||||
|
Happy GitHub Life! 🌟
|
||||||
724
beginners/github-features-simple.md
Normal file
724
beginners/github-features-simple.md
Normal file
|
|
@ -0,0 +1,724 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: "GitHub機能一覧 - シンプルガイド"
|
||||||
|
description: "GitHubで何ができるの?機能一覧と簡単な使い方"
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🌟 GitHubの機能一覧 - 何ができるの?
|
||||||
|
|
||||||
|
GitHubって何ができるの?という疑問に、シンプルにお答えします!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📌 GitHubの主な機能一覧(全20機能)
|
||||||
|
|
||||||
|
### 1. 📁 **リポジトリ(Repository)**
|
||||||
|
**何これ?** → プロジェクトを保存する場所(フォルダみたいなもの)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- コードやファイルを保存
|
||||||
|
- 変更履歴を自動記録
|
||||||
|
- 複数人で共有・共同編集
|
||||||
|
- バックアップとして機能
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
- 🌐 **Webサイト開発**: HTML/CSS/JavaScriptファイルを管理
|
||||||
|
- 📝 **ドキュメント管理**: マニュアルや仕様書を保存
|
||||||
|
- 🎨 **デザイン管理**: 画像やデザインファイルの履歴管理
|
||||||
|
- 📊 **データ分析**: JupyterノートブックやCSVファイル管理
|
||||||
|
|
||||||
|
**こんな時に便利:**
|
||||||
|
- 「先週のバージョンに戻したい」→ 履歴から復元可能
|
||||||
|
- 「チームで同じファイルを編集」→ 競合を自動検出
|
||||||
|
- 「PCが壊れた」→ GitHubから復元できる
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. 右上の「+」ボタン → 「New repository」
|
||||||
|
2. 名前を入力(例:my-awesome-website)
|
||||||
|
3. Public/Private を選択
|
||||||
|
4. 「Create repository」をクリック
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. 🌿 **ブランチ(Branch)**
|
||||||
|
**何これ?** → 作業を分ける仕組み(平行世界を作るイメージ)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- 本番に影響せずに開発・実験
|
||||||
|
- 複数の機能を並行開発
|
||||||
|
- 失敗しても本番は無事
|
||||||
|
- チームメンバーの作業が混ざらない
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
- 🆕 **新機能開発**: `feature/login` ブランチでログイン機能開発
|
||||||
|
- 🐛 **バグ修正**: `fix/button-error` ブランチで緊急修正
|
||||||
|
- 🧪 **実験**: `experiment/new-design` で新デザインを試す
|
||||||
|
- 📱 **バージョン管理**: `release/v2.0` で次期バージョン準備
|
||||||
|
|
||||||
|
**こんな時に便利:**
|
||||||
|
- 「新機能を試したいけど、壊れたら困る」
|
||||||
|
- 「AさんとBさんが同時に違う機能を開発」
|
||||||
|
- 「お客様用と開発用を分けたい」
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. リポジトリページの「main」ボタンをクリック
|
||||||
|
2. 新しいブランチ名を入力(例:feature/shopping-cart)
|
||||||
|
3. 「Create branch」をクリック
|
||||||
|
4. 安心して開発開始!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. 💾 **コミット(Commit)**
|
||||||
|
**何これ?** → 変更を保存すること(セーブポイントを作る)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- ファイルの変更を記録
|
||||||
|
- いつ誰が何を変更したか分かる
|
||||||
|
- 過去の任意の状態に戻せる
|
||||||
|
- 変更理由を残せる
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
- 🎯 **機能追加**: 「ショッピングカート機能を追加」
|
||||||
|
- 🐛 **バグ修正**: 「ログインエラーを修正 #123」
|
||||||
|
- 💄 **デザイン変更**: 「ヘッダーの色を青に変更」
|
||||||
|
- 📝 **ドキュメント更新**: 「インストール手順を追加」
|
||||||
|
|
||||||
|
**良いコミットメッセージの例:**
|
||||||
|
```
|
||||||
|
✅ 良い例:
|
||||||
|
- feat: ユーザー認証機能を追加
|
||||||
|
- fix: カートの合計金額計算エラーを修正
|
||||||
|
- docs: APIの使用方法を追記
|
||||||
|
- style: ボタンのデザインを改善
|
||||||
|
|
||||||
|
❌ 悪い例:
|
||||||
|
- 更新
|
||||||
|
- fix
|
||||||
|
- aaaa
|
||||||
|
```
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. ファイルを編集
|
||||||
|
2. 「Commit changes」ボタンをクリック
|
||||||
|
3. 何を変更したか分かりやすく説明
|
||||||
|
4. 「Commit changes」で保存完了
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. 🔄 **プルリクエスト(Pull Request)**
|
||||||
|
**何これ?** → 変更を提案する仕組み(「この変更、取り込んでください」)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- コードレビューを依頼
|
||||||
|
- 変更内容を説明・議論
|
||||||
|
- チームメンバーからフィードバック
|
||||||
|
- 自動テストを実行
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
- ✨ **機能追加**: 「検索機能を追加しました」
|
||||||
|
- 🔧 **バグ修正**: 「メモリリークを修正しました」
|
||||||
|
- 📈 **パフォーマンス改善**: 「ページ読み込み速度50%改善」
|
||||||
|
- 📦 **ライブラリ更新**: 「Reactをv18にアップデート」
|
||||||
|
|
||||||
|
**PRのフロー:**
|
||||||
|
```
|
||||||
|
1. ブランチで開発
|
||||||
|
2. PRを作成
|
||||||
|
3. レビュー・議論
|
||||||
|
4. 承認されたらマージ
|
||||||
|
```
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. 「Pull requests」タブ → 「New pull request」
|
||||||
|
2. 比較するブランチを選択
|
||||||
|
3. 変更内容を詳しく説明
|
||||||
|
4. レビュアーを指定
|
||||||
|
5. 「Create pull request」をクリック
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 5. 🎫 **イシュー(Issues)**
|
||||||
|
**何これ?** → タスク管理・バグ報告(TODOリストみたいなもの)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- やることリストを作成
|
||||||
|
- バグや問題を報告
|
||||||
|
- アイデアや提案を共有
|
||||||
|
- 進捗を追跡
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
- 🐛 **バグ報告**: 「スマホでメニューが開かない」
|
||||||
|
- 🎯 **機能要望**: 「ダークモードを追加してほしい」
|
||||||
|
- 📝 **TODO管理**: 「ドキュメントを整理する」
|
||||||
|
- ❓ **質問**: 「この機能の使い方が分からない」
|
||||||
|
|
||||||
|
**ラベルを使った整理:**
|
||||||
|
- 🐛 `bug` - バグ・不具合
|
||||||
|
- ✨ `enhancement` - 新機能
|
||||||
|
- 📝 `documentation` - ドキュメント
|
||||||
|
- ❓ `question` - 質問
|
||||||
|
- 🔥 `urgent` - 緊急
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. 「Issues」タブ → 「New issue」
|
||||||
|
2. 分かりやすいタイトルを付ける
|
||||||
|
3. スクリーンショットや詳細を追加
|
||||||
|
4. ラベルを付けて分類
|
||||||
|
5. 「Submit new issue」をクリック
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 6. 📋 **プロジェクト(Projects)**
|
||||||
|
**何これ?** → タスクボード(カンバン方式のタスク管理)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- タスクを視覚的に管理
|
||||||
|
- 進捗状況を一目で把握
|
||||||
|
- チームの作業を調整
|
||||||
|
- スプリント計画
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
- 🎯 **製品開発**: ToDo → 進行中 → レビュー → 完了
|
||||||
|
- 📖 **コンテンツ作成**: 企画 → 執筆 → 編集 → 公開
|
||||||
|
- 🎨 **デザイン作業**: アイデア → スケッチ → デザイン → 実装
|
||||||
|
- 📊 **イベント企画**: 準備 → 告知 → 実施 → 振り返り
|
||||||
|
|
||||||
|
**ボードの種類:**
|
||||||
|
- **カンバン**: カードを移動させる
|
||||||
|
- **テーブル**: スプレッドシート風
|
||||||
|
- **ロードマップ**: タイムライン表示
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. 「Projects」タブ → 「New project」
|
||||||
|
2. ボードタイプを選択
|
||||||
|
3. カラムを設定(ToDo, 進行中, 完了など)
|
||||||
|
4. Issueをカードとして追加
|
||||||
|
5. ドラッグ&ドロップで管理
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 7. ⚡ **アクション(Actions)**
|
||||||
|
**何これ?** → 自動化ツール(ロボットが代わりに作業)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- テストを自動実行
|
||||||
|
- Webサイトを自動更新
|
||||||
|
- 定期的なタスクを実行
|
||||||
|
- コード品質をチェック
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
- 🧪 **テスト自動化**: コミット毎にテスト実行
|
||||||
|
- 🌐 **サイトデプロイ**: pushすると自動で公開
|
||||||
|
- 📦 **リリース**: タグ付けで自動パッケージ作成
|
||||||
|
- 🔔 **定期実行**: 毎日データを収集・更新
|
||||||
|
- 🔍 **コード検査**: スペルチェックやフォーマット
|
||||||
|
|
||||||
|
**人気のワークフロー:**
|
||||||
|
```yaml
|
||||||
|
# テスト自動実行
|
||||||
|
on: [push, pull_request]
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- run: npm test
|
||||||
|
```
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. 「Actions」タブを開く
|
||||||
|
2. テンプレートを選択または新規作成
|
||||||
|
3. YAMLファイルを編集
|
||||||
|
4. 「Start commit」で保存
|
||||||
|
5. 自動で実行開始!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 8. 🌐 **ページ(Pages)**
|
||||||
|
**何これ?** → 無料のWebサイト公開(ホームページが作れる)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- 静的Webサイトを公開
|
||||||
|
- ドキュメントサイト作成
|
||||||
|
- ポートフォリオ公開
|
||||||
|
- ブログ運営
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
- 👨💼 **個人サイト**: username.github.io
|
||||||
|
- 📚 **ドキュメント**: 製品マニュアル・APIドキュメント
|
||||||
|
- 🎨 **ポートフォリオ**: 作品集・実績紹介
|
||||||
|
- 💰 **ランディングページ**: 製品紹介サイト
|
||||||
|
- 📖 **ブログ**: JekyllやHugoでブログ運営
|
||||||
|
|
||||||
|
**サポートしているもの:**
|
||||||
|
- HTML/CSS/JavaScript
|
||||||
|
- Jekyll(ブログエンジン)
|
||||||
|
- カスタムドメイン
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. Settings → Pages
|
||||||
|
2. Source で「Deploy from a branch」選択
|
||||||
|
3. Branch を「main」または「gh-pages」に設定
|
||||||
|
4. 「Save」をクリック
|
||||||
|
5. https://username.github.io/repositoryでアクセス
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 9. 📚 **ウィキ(Wiki)**
|
||||||
|
**何これ?** → プロジェクトの説明書(内部ドキュメント)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- 詳細なドキュメント作成
|
||||||
|
- 使い方マニュアル
|
||||||
|
- FAQ・Q&A集
|
||||||
|
- 用語集・リファレンス
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
- 📖 **インストールガイド**: 環境別の設定手順
|
||||||
|
- 🔧 **APIドキュメント**: エンドポイント一覧
|
||||||
|
- 🎯 **開発ガイドライン**: コーディング規約
|
||||||
|
- ❓ **FAQ**: よくある質問と回答
|
||||||
|
- 📈 **チュートリアル**: 機能の使い方解説
|
||||||
|
|
||||||
|
**Wiki vs README:**
|
||||||
|
- **README**: プロジェクトの概要(簡潔に)
|
||||||
|
- **Wiki**: 詳細なドキュメント(徹底的に)
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. 「Wiki」タブを開く
|
||||||
|
2. 「Create the first page」
|
||||||
|
3. ページタイトルと内容を入力
|
||||||
|
4. マークダウンで装飾
|
||||||
|
5. 「Save page」で保存
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 10. 👁️ **ウォッチ(Watch)**
|
||||||
|
**何これ?** → 更新通知を受け取る(プロジェクトを監視)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- プロジェクトの更新を追跡
|
||||||
|
- 重要な変更を見逃さない
|
||||||
|
- 興味のあるプロジェクトをフォロー
|
||||||
|
- メールで通知を受け取る
|
||||||
|
|
||||||
|
**通知レベル:**
|
||||||
|
- 🔔 **All Activity**: すべての活動を通知
|
||||||
|
- 🔕 **Participating**: 自分が関係するもののみ
|
||||||
|
- 🔇 **Ignore**: 通知をオフ
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
- 🚀 **人気OSS**: ReactやVue.jsの更新を追跡
|
||||||
|
- 💼 **仕事のプロジェクト**: チームの進捗を把握
|
||||||
|
- 📖 **学習素材**: 教育コンテンツの更新
|
||||||
|
- 🔍 **競合調査**: 競合他社のOSS動向
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. リポジトリページの「Watch」ボタン
|
||||||
|
2. 通知レベルを選択
|
||||||
|
3. 通知設定をカスタマイズ
|
||||||
|
4. メールまたはGitHub通知で確認
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 11. ⭐ **スター(Star)**
|
||||||
|
**何これ?** → お気に入り登録(「いいね!」ボタン)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- 気に入ったプロジェクトを保存
|
||||||
|
- 後で見返せる
|
||||||
|
- 作者を応援・評価
|
||||||
|
- 人気度の指標
|
||||||
|
|
||||||
|
**実際の意味:**
|
||||||
|
- 💯 **多いほど人気**: 1000★ = かなり人気
|
||||||
|
- 🏆 **開発者の励み**: モチベーションになる
|
||||||
|
- 🔖 **ブックマーク**: 後で使うプロジェクトを保存
|
||||||
|
- 📊 **信頼性**: スター数で品質を判断
|
||||||
|
|
||||||
|
**スターしたプロジェクトの見方:**
|
||||||
|
1. プロフィール → Starsタブ
|
||||||
|
2. カテゴリ別に整理可能
|
||||||
|
3. 検索もできる
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. リポジトリページの「⭐ Star」ボタン
|
||||||
|
2. クリックするだけ!
|
||||||
|
3. ボタンが黄色になれば完了
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 12. 🍴 **フォーク(Fork)**
|
||||||
|
**何これ?** → プロジェクトをコピー(自分版を作る)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- 他人のプロジェクトをコピー
|
||||||
|
- 自分用にカスタマイズ
|
||||||
|
- 改善案を提案
|
||||||
|
- 実験・学習用に使う
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
- 🔧 **OSS貢献**: バグ修正を提案
|
||||||
|
- 🎮 **カスタマイズ**: 自分好みに改造
|
||||||
|
- 📖 **学習**: コードを読んで勉強
|
||||||
|
- 🧪 **実験**: 新機能を試す
|
||||||
|
- 🌐 **ローカライズ**: 日本語化など
|
||||||
|
|
||||||
|
**Forkの流れ:**
|
||||||
|
```
|
||||||
|
1. Forkボタンでコピー
|
||||||
|
2. 自分のリポジトリで編集
|
||||||
|
3. 変更をコミット
|
||||||
|
4. Pull Requestで提案
|
||||||
|
```
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. リポジトリページの「🍴 Fork」ボタン
|
||||||
|
2. 自分のアカウントにコピー作成
|
||||||
|
3. 「username/repository」の形で保存
|
||||||
|
4. 完全に自分のものとして編集可能
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 13. 📥 **クローン(Clone)**
|
||||||
|
**何これ?** → リポジトリをパソコンにダウンロード(作業開始!)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- GitHubからローカルPCへコピー
|
||||||
|
- オフラインで作業可能
|
||||||
|
- 好きなエディタで編集
|
||||||
|
- 高速な開発作業
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
- 💻 **ローカル開発**: VSCodeでコード編集
|
||||||
|
- 🎮 **ゲーム開発**: Unityでプロジェクト開発
|
||||||
|
- 📱 **アプリ開発**: XcodeやAndroid Studioで作業
|
||||||
|
- 🌐 **Web開発**: ローカルサーバーでテスト
|
||||||
|
|
||||||
|
**Cloneの方法:**
|
||||||
|
```bash
|
||||||
|
# HTTPS版(簡単)
|
||||||
|
git clone https://github.com/user/repo.git
|
||||||
|
|
||||||
|
# SSH版(セキュア)
|
||||||
|
git clone git@github.com:user/repo.git
|
||||||
|
|
||||||
|
# GitHub Desktop(GUI)
|
||||||
|
Code → Open with GitHub Desktop
|
||||||
|
```
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. リポジトリページの「Code」ボタン
|
||||||
|
2. HTTPS/SSHのURLをコピー
|
||||||
|
3. ターミナルで `git clone [URL]`
|
||||||
|
4. または GitHub Desktop でワンクリック
|
||||||
|
5. フォルダが作成されて作業開始!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 14. ⬆️ **プッシュ(Push)**
|
||||||
|
**何これ?** → ローカルの変更をGitHubにアップロード(送信!)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- 自分の作業を保存・共有
|
||||||
|
- チームメンバーに公開
|
||||||
|
- バックアップ
|
||||||
|
- どこからでもアクセス可能に
|
||||||
|
|
||||||
|
**実際の流れ:**
|
||||||
|
```
|
||||||
|
1. ローカルで編集
|
||||||
|
2. git add .(変更を記録)
|
||||||
|
3. git commit -m "メッセージ"
|
||||||
|
4. git push(GitHubに送信)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Pushできない時:**
|
||||||
|
- ❌ **エラー**: 「! [rejected]」
|
||||||
|
- 🔄 **解決**: 先に `git pull` で最新版を取得
|
||||||
|
- ✅ **再試行**: `git push`
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. ローカルで変更・コミット
|
||||||
|
2. `git push origin main` 実行
|
||||||
|
3. または GitHub Desktop の「Push origin」
|
||||||
|
4. GitHubで変更が確認できる
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 15. ⬇️ **プル(Pull)**
|
||||||
|
**何これ?** → GitHubから最新の変更を取得(同期!)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- 他の人の変更を取り込む
|
||||||
|
- 最新版に更新
|
||||||
|
- 競合を防ぐ
|
||||||
|
- チーム作業をスムーズに
|
||||||
|
|
||||||
|
**いつPullする?**
|
||||||
|
- 🌅 **朝一番**: 作業開始前に
|
||||||
|
- 🔄 **Push前**: 必ず最新版を確認
|
||||||
|
- 📢 **通知が来たら**: チームの更新を取得
|
||||||
|
- 🕹️ **長時間作業後**: 定期的に同期
|
||||||
|
|
||||||
|
**コンフリクト(競合)が起きたら:**
|
||||||
|
```
|
||||||
|
<<<<<<< HEAD
|
||||||
|
自分の変更
|
||||||
|
=======
|
||||||
|
他の人の変更
|
||||||
|
>>>>>>> origin/main
|
||||||
|
```
|
||||||
|
→ 手動で選んで解決
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. `git pull origin main` 実行
|
||||||
|
2. または GitHub Desktop の「Pull origin」
|
||||||
|
3. 変更が自動マージ
|
||||||
|
4. 競合があれば解決
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 16. 🔀 **マージ(Merge)**
|
||||||
|
**何これ?** → ブランチを統合(変更をまとめる)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- 機能開発を本番に反映
|
||||||
|
- 複数の変更を一つに
|
||||||
|
- チームの作業を統合
|
||||||
|
- 安全に変更を取り込む
|
||||||
|
|
||||||
|
**マージの種類:**
|
||||||
|
- 🚀 **Fast-forward**: 単純に進めるだけ
|
||||||
|
- 🤝 **3-way merge**: 両方の変更を統合
|
||||||
|
- 📚 **Squash merge**: 複数コミットを1つに
|
||||||
|
- 🌿 **Rebase**: 履歴をきれいに整理
|
||||||
|
|
||||||
|
**PRマージのフロー:**
|
||||||
|
```
|
||||||
|
1. featureブランチで開発
|
||||||
|
2. Pull Request作成
|
||||||
|
3. コードレビュー
|
||||||
|
4. CI/CDテスト
|
||||||
|
5. 承認後マージ
|
||||||
|
```
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. Pull Request ページを開く
|
||||||
|
2. レビュー完了を確認
|
||||||
|
3. 「Merge pull request」ボタン
|
||||||
|
4. マージ方法を選択
|
||||||
|
5. 「Confirm merge」で完了
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 17. 💬 **ディスカッション(Discussions)**
|
||||||
|
**何これ?** → フォーラム形式の議論場所(コミュニティ広場)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- Q&A形式で質問
|
||||||
|
- アイデアの議論・提案
|
||||||
|
- お知らせの共有
|
||||||
|
- コミュニティ構築
|
||||||
|
|
||||||
|
**カテゴリの種類:**
|
||||||
|
- 📰 **Announcements**: お知らせ・リリース情報
|
||||||
|
- 💡 **Ideas**: アイデア提案・投票
|
||||||
|
- ❓ **Q&A**: 質問と回答
|
||||||
|
- 🗣️ **General**: 一般的な話題
|
||||||
|
- 🏆 **Show and tell**: 作品紹介
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
- 🚀 **ロードマップ議論**: 今後の開発方針
|
||||||
|
- 🎓 **チュートリアル**: 初心者向け解説
|
||||||
|
- 🎆 **コミュニティイベント**: ハッカソン企画
|
||||||
|
- 💜 **ユーザーサポート**: 困ったときの相談
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. 「Discussions」タブを開く
|
||||||
|
2. 「New discussion」ボタン
|
||||||
|
3. カテゴリを選択
|
||||||
|
4. タイトルと内容を入力
|
||||||
|
5. 「Start discussion」で投稿
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 18. 📝 **ギスト(Gist)**
|
||||||
|
**何これ?** → コードスニペットの共有(メモ帳みたいなもの)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- 短いコードを簡単共有
|
||||||
|
- メモやスクリプト保存
|
||||||
|
- ブログに埋め込み
|
||||||
|
- バージョン管理も可能
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
- 📄 **設定ファイル**: .vimrcや.bashrcの共有
|
||||||
|
- 🔧 **ワンライナー**: 便利なコマンド
|
||||||
|
- 📖 **コードサンプル**: ブログ記事用
|
||||||
|
- 💾 **SQLクエリ**: よく使うクエリ集
|
||||||
|
- 🎮 **ゲームスコア**: ハイスコアのJSON
|
||||||
|
|
||||||
|
**Public vs Secret:**
|
||||||
|
- **Public Gist**: 検索可能・誰でも閲覧
|
||||||
|
- **Secret Gist**: URLを知っている人だけ
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. gist.github.com にアクセス
|
||||||
|
2. ファイル名とコードを入力
|
||||||
|
3. 言語を選択(シンタックスハイライト)
|
||||||
|
4. 「Create secret gist」または「Create public gist」
|
||||||
|
5. URLを共有または埋め込み
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 19. 📦 **パッケージ(Packages)**
|
||||||
|
**何これ?** → パッケージ管理(ライブラリ公開・配布)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- パッケージを公開・管理
|
||||||
|
- バージョン管理
|
||||||
|
- 依存関係の追跡
|
||||||
|
- プライベートパッケージ
|
||||||
|
|
||||||
|
**サポートしているパッケージ:**
|
||||||
|
- 📦 **npm**: JavaScriptパッケージ
|
||||||
|
- 🐳 **Docker**: コンテナイメージ
|
||||||
|
- 💎 **RubyGems**: Rubyパッケージ
|
||||||
|
- ☕ **Maven**: Javaパッケージ
|
||||||
|
- 📦 **NuGet**: .NETパッケージ
|
||||||
|
|
||||||
|
**実際の使用例:**
|
||||||
|
```bash
|
||||||
|
# npmパッケージを公開
|
||||||
|
npm publish --registry=https://npm.pkg.github.com
|
||||||
|
|
||||||
|
# Dockerイメージをpush
|
||||||
|
docker push ghcr.io/username/image:tag
|
||||||
|
```
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. リポジトリの「Packages」タブ
|
||||||
|
2. 「Publish your first package」
|
||||||
|
3. パッケージタイプを選択
|
||||||
|
4. 指示に従って設定
|
||||||
|
5. パッケージをアップロード
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 20. 💖 **スポンサー(Sponsors)**
|
||||||
|
**何これ?** → 開発者支援(投げ銭・寄付システム)
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- オープンソース開発者を支援
|
||||||
|
- 定期的な寄付(月額)
|
||||||
|
- 特典の提供・受け取り
|
||||||
|
- コミュニティへの貢献
|
||||||
|
|
||||||
|
**スポンサーティア(例):**
|
||||||
|
- 🥉 **$1/月**: 感謝の気持ち
|
||||||
|
- ☕ **$5/月**: コーヒー代支援
|
||||||
|
- 🍕 **$10/月**: スポンサーREADME記載
|
||||||
|
- 🎆 **$50/月**: 優先サポート
|
||||||
|
- 🚀 **$100/月**: 企業スポンサー
|
||||||
|
|
||||||
|
**なぜスポンサー?**
|
||||||
|
- 💚 **持続可能なOSS**: 開発継続を支援
|
||||||
|
- 🎯 **機能リクエスト**: 優先度を上げる
|
||||||
|
- 🙏 **感謝の表現**: 使っているプロジェクトへ
|
||||||
|
- 🌟 **コミュニティ参加**: 特別なDiscussionsへ
|
||||||
|
|
||||||
|
**使い方:**
|
||||||
|
1. プロフィールの「💖 Sponsor」ボタン
|
||||||
|
2. 支援ティアを選択
|
||||||
|
3. 支払い方法を設定
|
||||||
|
4. 「Select」で支援開始
|
||||||
|
5. 特典を受け取る
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 どの機能から始めるべき?
|
||||||
|
|
||||||
|
### 🔰 完全初心者の方
|
||||||
|
1. **リポジトリ作成** - まず保存場所を作る
|
||||||
|
2. **ファイルアップロード** - 簡単なファイルを追加
|
||||||
|
3. **コミット** - 変更を保存してみる
|
||||||
|
|
||||||
|
### 📝 ドキュメント管理したい方
|
||||||
|
1. **リポジトリ作成**
|
||||||
|
2. **Wiki** or **Pages** - ドキュメント公開
|
||||||
|
3. **Issues** - フィードバック受付
|
||||||
|
|
||||||
|
### 👥 チーム開発したい方
|
||||||
|
1. **リポジトリ作成**
|
||||||
|
2. **ブランチ** - 作業を分ける
|
||||||
|
3. **Pull Request** - レビューする
|
||||||
|
4. **Projects** - タスク管理
|
||||||
|
|
||||||
|
### 💻 本格的に開発したい方
|
||||||
|
1. **Clone** - リポジトリをダウンロード
|
||||||
|
2. **コミット** → **Push** - 変更をアップロード
|
||||||
|
3. **Pull** - 最新版を取得
|
||||||
|
4. **Merge** - 変更を統合
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 覚えておくと便利なこと
|
||||||
|
|
||||||
|
### 📌 よく使うボタンの場所
|
||||||
|
- **新規作成**: 右上の「+」ボタン
|
||||||
|
- **設定**: リポジトリの「Settings」タブ
|
||||||
|
- **ファイル追加**: 「Add file」ボタン
|
||||||
|
- **編集**: ファイルの鉛筆アイコン
|
||||||
|
|
||||||
|
### 🔍 便利なショートカット
|
||||||
|
- `t` - ファイル検索
|
||||||
|
- `b` - ブランチ切り替え
|
||||||
|
- `w` - ブランチ選択
|
||||||
|
- `s` - 検索にフォーカス
|
||||||
|
|
||||||
|
### 💬 基本的な用語
|
||||||
|
- **Clone(クローン)**: リポジトリをダウンロード
|
||||||
|
- **Push(プッシュ)**: 変更をアップロード
|
||||||
|
- **Pull(プル)**: 最新版をダウンロード
|
||||||
|
- **Merge(マージ)**: 変更を統合
|
||||||
|
- **Fetch(フェッチ)**: 変更を確認だけ(取り込まない)
|
||||||
|
- **Remote(リモート)**: GitHub上のリポジトリ
|
||||||
|
- **Local(ローカル)**: 自分のPC上のリポジトリ
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 次のステップ
|
||||||
|
|
||||||
|
1. **アカウント作成** - まだの方は[GitHub.com](https://github.com)で無料登録
|
||||||
|
2. **最初のリポジトリ** - 「Hello World」を作ってみる
|
||||||
|
3. **README作成** - プロジェクトの説明を書く
|
||||||
|
4. **Issues体験** - 自分でタスクを作ってみる
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ❓ よくある質問
|
||||||
|
|
||||||
|
**Q: 無料で使える?**
|
||||||
|
A: はい!個人利用は基本無料です。
|
||||||
|
|
||||||
|
**Q: プログラミングできなくても使える?**
|
||||||
|
A: はい!ドキュメント管理やタスク管理にも使えます。
|
||||||
|
|
||||||
|
**Q: 公開しないといけない?**
|
||||||
|
A: いいえ!プライベートリポジトリで非公開にできます。
|
||||||
|
|
||||||
|
**Q: 日本語は使える?**
|
||||||
|
A: はい!ファイル名以外は日本語OK。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 もっと詳しく知りたい方へ
|
||||||
|
|
||||||
|
各機能の詳しい使い方は、個別のガイドをご覧ください:
|
||||||
|
- [初心者向け入門ガイド](github-beginner-guide.md)
|
||||||
|
- [実践的な操作手順](github-hands-on.md)
|
||||||
|
- [Git ワークフローガイド](github-git-workflow.md) - Clone → 編集 → Push の流れ
|
||||||
|
- [**🆕 20機能の詳細ガイド**](../advanced/github-features-detailed.md) - 各機能の完全解説
|
||||||
|
|
||||||
|
でも、まずは**リポジトリを作って、何か保存してみる**ことから始めましょう!🎉
|
||||||
389
beginners/github-git-workflow.md
Normal file
389
beginners/github-git-workflow.md
Normal file
|
|
@ -0,0 +1,389 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: "Git ワークフローガイド - 実際の作業の流れ"
|
||||||
|
description: "Clone → 編集 → Commit → Push → Pull の基本的な流れを図解で理解"
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🔄 Git ワークフローガイド - 実際の作業の流れ
|
||||||
|
|
||||||
|
GitHubを使った実際の作業の流れを、初心者でも分かるように図解付きで説明します!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 このガイドで学べること
|
||||||
|
|
||||||
|
- Git の基本的な作業の流れ
|
||||||
|
- ローカルとリモートの関係
|
||||||
|
- よくあるワークフローパターン
|
||||||
|
- トラブル時の対処法
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌟 Git ワークフローとは?
|
||||||
|
|
||||||
|
**簡単に言うと**: コードを書いて、保存して、共有するまでの一連の流れです。
|
||||||
|
|
||||||
|
```
|
||||||
|
あなたのPC(ローカル) GitHub(リモート)
|
||||||
|
↓ ↑
|
||||||
|
編集する みんなが見れる
|
||||||
|
↓ ↑
|
||||||
|
保存する ←→ 共有する
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 基本的なワークフロー
|
||||||
|
|
||||||
|
### 全体の流れ
|
||||||
|
|
||||||
|
```
|
||||||
|
1. Clone(クローン) - GitHubからダウンロード
|
||||||
|
↓
|
||||||
|
2. 編集 - ファイルを変更
|
||||||
|
↓
|
||||||
|
3. Add(追加) - 変更を記録準備
|
||||||
|
↓
|
||||||
|
4. Commit(コミット) - 変更を保存
|
||||||
|
↓
|
||||||
|
5. Push(プッシュ) - GitHubにアップロード
|
||||||
|
↓
|
||||||
|
6. Pull(プル) - 最新版を取得
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📥 STEP 1: Clone(クローン)- 最初の一歩
|
||||||
|
|
||||||
|
### GitHubからプロジェクトをダウンロード
|
||||||
|
|
||||||
|
#### 方法1: コマンドライン
|
||||||
|
```bash
|
||||||
|
# リポジトリをクローン
|
||||||
|
git clone https://github.com/ユーザー名/リポジトリ名.git
|
||||||
|
|
||||||
|
# フォルダに移動
|
||||||
|
cd リポジトリ名
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 方法2: GitHub Desktop
|
||||||
|
```
|
||||||
|
1. リポジトリページの「Code」ボタン
|
||||||
|
2. 「Open with GitHub Desktop」を選択
|
||||||
|
3. 保存場所を選んで「Clone」
|
||||||
|
```
|
||||||
|
|
||||||
|
### 図解
|
||||||
|
```
|
||||||
|
GitHub あなたのPC
|
||||||
|
┌─────────────┐ ┌─────────────┐
|
||||||
|
│ Repository │ Clone→ │ Local │
|
||||||
|
│ (原本) │ ========> │ (コピー) │
|
||||||
|
└─────────────┘ └─────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✏️ STEP 2: 編集 - ファイルを変更
|
||||||
|
|
||||||
|
### 好きなエディタで編集
|
||||||
|
|
||||||
|
```
|
||||||
|
作業フォルダ
|
||||||
|
├── README.md ← これを編集
|
||||||
|
├── index.html ← 新しく作成
|
||||||
|
└── style.css ← これも編集
|
||||||
|
```
|
||||||
|
|
||||||
|
**ポイント**:
|
||||||
|
- どのエディタでもOK(VSCode、メモ帳、など)
|
||||||
|
- 普通にファイルを編集するだけ
|
||||||
|
- 保存を忘れずに!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 STEP 3: Add(追加)- 変更を記録準備
|
||||||
|
|
||||||
|
### 変更したファイルを記録対象に追加
|
||||||
|
|
||||||
|
#### コマンドライン
|
||||||
|
```bash
|
||||||
|
# 特定のファイルを追加
|
||||||
|
git add README.md
|
||||||
|
|
||||||
|
# すべての変更を追加
|
||||||
|
git add .
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GitHub Desktop
|
||||||
|
- 変更されたファイルが自動的にリストアップされる
|
||||||
|
- チェックボックスで選択
|
||||||
|
|
||||||
|
### 図解
|
||||||
|
```
|
||||||
|
作業フォルダ ステージング(記録準備)
|
||||||
|
┌─────────────┐ ┌─────────────────┐
|
||||||
|
│ ✏️ README.md │ add→ │ 📋 README.md │
|
||||||
|
│ ✏️ index.html│ ====> │ 📋 index.html │
|
||||||
|
│ ✏️ style.css │ │ 📋 style.css │
|
||||||
|
└─────────────┘ └─────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💾 STEP 4: Commit(コミット)- 変更を保存
|
||||||
|
|
||||||
|
### 変更に名前を付けて保存
|
||||||
|
|
||||||
|
#### コマンドライン
|
||||||
|
```bash
|
||||||
|
# コミット(メッセージ付き)
|
||||||
|
git commit -m "ホームページのデザインを更新"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GitHub Desktop
|
||||||
|
1. コミットメッセージを入力
|
||||||
|
2. 「Commit to main」ボタンをクリック
|
||||||
|
|
||||||
|
### 良いコミットメッセージの例
|
||||||
|
```
|
||||||
|
✅ 良い例:
|
||||||
|
- "ログイン機能を追加"
|
||||||
|
- "ヘッダーのデザインを修正"
|
||||||
|
- "READMEに使い方を追記"
|
||||||
|
|
||||||
|
❌ 悪い例:
|
||||||
|
- "更新"
|
||||||
|
- "fix"
|
||||||
|
- "あああ"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⬆️ STEP 5: Push(プッシュ)- GitHubにアップロード
|
||||||
|
|
||||||
|
### ローカルの変更をGitHubに送る
|
||||||
|
|
||||||
|
#### コマンドライン
|
||||||
|
```bash
|
||||||
|
# GitHubにプッシュ
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GitHub Desktop
|
||||||
|
- 「Push origin」ボタンをクリック
|
||||||
|
|
||||||
|
### 図解
|
||||||
|
```
|
||||||
|
ローカル(PC) GitHub
|
||||||
|
┌─────────────┐ ┌─────────────┐
|
||||||
|
│ 変更済み │ Push→ │ 更新! │
|
||||||
|
│ Ver.2 │ ========> │ Ver.2 │
|
||||||
|
└─────────────┘ └─────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⬇️ STEP 6: Pull(プル)- 最新版を取得
|
||||||
|
|
||||||
|
### 他の人の変更を取り込む
|
||||||
|
|
||||||
|
#### いつ使う?
|
||||||
|
- 朝、作業を始める前
|
||||||
|
- 他の人が更新した時
|
||||||
|
- Push前の確認
|
||||||
|
|
||||||
|
#### コマンドライン
|
||||||
|
```bash
|
||||||
|
# 最新版を取得
|
||||||
|
git pull origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GitHub Desktop
|
||||||
|
- 「Pull origin」ボタンをクリック
|
||||||
|
|
||||||
|
### 図解
|
||||||
|
```
|
||||||
|
GitHub ローカル(PC)
|
||||||
|
┌─────────────┐ ┌─────────────┐
|
||||||
|
│ 最新版 │ Pull← │ 古い版 │
|
||||||
|
│ Ver.3 │ <======== │ Ver.2 │
|
||||||
|
└─────────────┘ └─────────────┘
|
||||||
|
↓
|
||||||
|
┌─────────────┐
|
||||||
|
│ 最新版 │
|
||||||
|
│ Ver.3 │
|
||||||
|
└─────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 よくあるワークフローパターン
|
||||||
|
|
||||||
|
### パターン1: 個人開発
|
||||||
|
```
|
||||||
|
1. Clone(最初だけ)
|
||||||
|
2. 編集 → Add → Commit → Push
|
||||||
|
3. 繰り返し
|
||||||
|
```
|
||||||
|
|
||||||
|
### パターン2: チーム開発(基本)
|
||||||
|
```
|
||||||
|
1. Clone(最初だけ)
|
||||||
|
2. Pull(最新版を取得)
|
||||||
|
3. 編集 → Add → Commit
|
||||||
|
4. Pull(念のため再確認)
|
||||||
|
5. Push
|
||||||
|
```
|
||||||
|
|
||||||
|
### パターン3: 機能開発(ブランチ使用)
|
||||||
|
```
|
||||||
|
1. Clone(最初だけ)
|
||||||
|
2. ブランチ作成
|
||||||
|
3. 編集 → Add → Commit → Push
|
||||||
|
4. Pull Request作成
|
||||||
|
5. レビュー → マージ
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚨 よくあるトラブルと対処法
|
||||||
|
|
||||||
|
### 1. Pushできない!
|
||||||
|
```bash
|
||||||
|
エラー: ! [rejected] main -> main (non-fast-forward)
|
||||||
|
```
|
||||||
|
|
||||||
|
**原因**: 他の人が先に更新している
|
||||||
|
**対処法**:
|
||||||
|
```bash
|
||||||
|
# 最新版を取得してから再度Push
|
||||||
|
git pull origin main
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. コンフリクト(競合)が発生!
|
||||||
|
```
|
||||||
|
<<<<<<< HEAD
|
||||||
|
自分の変更
|
||||||
|
=======
|
||||||
|
他の人の変更
|
||||||
|
>>>>>>> origin/main
|
||||||
|
```
|
||||||
|
|
||||||
|
**対処法**:
|
||||||
|
1. ファイルを開いて手動で修正
|
||||||
|
2. 不要な記号(<<<、===、>>>)を削除
|
||||||
|
3. Add → Commit → Push
|
||||||
|
|
||||||
|
### 3. 間違えてコミットした!
|
||||||
|
**対処法**:
|
||||||
|
```bash
|
||||||
|
# 直前のコミットを取り消し(ファイルは残る)
|
||||||
|
git reset --soft HEAD~1
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 便利なコマンド・操作
|
||||||
|
|
||||||
|
### 状態確認
|
||||||
|
```bash
|
||||||
|
# 現在の状態を確認
|
||||||
|
git status
|
||||||
|
|
||||||
|
# コミット履歴を確認
|
||||||
|
git log --oneline
|
||||||
|
```
|
||||||
|
|
||||||
|
### ブランチ操作
|
||||||
|
```bash
|
||||||
|
# ブランチ作成・切り替え
|
||||||
|
git checkout -b feature/new-feature
|
||||||
|
|
||||||
|
# mainブランチに戻る
|
||||||
|
git checkout main
|
||||||
|
```
|
||||||
|
|
||||||
|
### 取り消し操作
|
||||||
|
```bash
|
||||||
|
# ファイルの変更を取り消し
|
||||||
|
git checkout -- ファイル名
|
||||||
|
|
||||||
|
# すべての変更を取り消し
|
||||||
|
git checkout -- .
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎓 練習問題
|
||||||
|
|
||||||
|
### 初級編
|
||||||
|
1. リポジトリをClone
|
||||||
|
2. README.mdに自己紹介を追加
|
||||||
|
3. Commit & Push
|
||||||
|
|
||||||
|
### 中級編
|
||||||
|
1. 新しいブランチを作成
|
||||||
|
2. index.htmlファイルを作成
|
||||||
|
3. Commit & Push
|
||||||
|
4. Pull Requestを作成
|
||||||
|
|
||||||
|
### 上級編
|
||||||
|
1. わざとコンフリクトを起こす
|
||||||
|
2. コンフリクトを解決
|
||||||
|
3. 正常にマージ
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌈 まとめ
|
||||||
|
|
||||||
|
### 最重要コマンド(これだけ覚えよう!)
|
||||||
|
|
||||||
|
| 操作 | コマンド | 説明 |
|
||||||
|
|------|----------|------|
|
||||||
|
| 📥 Clone | `git clone [URL]` | 最初の1回だけ |
|
||||||
|
| ⬇️ Pull | `git pull` | 作業開始時 |
|
||||||
|
| 📋 Add | `git add .` | 変更を記録準備 |
|
||||||
|
| 💾 Commit | `git commit -m "メッセージ"` | 変更を保存 |
|
||||||
|
| ⬆️ Push | `git push` | GitHubに送信 |
|
||||||
|
|
||||||
|
### 黄金の流れ
|
||||||
|
```
|
||||||
|
Pull → 編集 → Add → Commit → Push
|
||||||
|
```
|
||||||
|
|
||||||
|
これを繰り返すだけで、GitHubが使えるようになります!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 次のステップ
|
||||||
|
|
||||||
|
1. **まずは練習リポジトリで試す**
|
||||||
|
2. **毎日少しずつ使って慣れる**
|
||||||
|
3. **分からないことは調べながら進める**
|
||||||
|
|
||||||
|
### さらに学びたい方へ
|
||||||
|
- [GitHub機能一覧](github-features-simple.md) - 全20機能の解説
|
||||||
|
- [実践的な操作手順](github-hands-on.md) - 画面付きの詳細ガイド
|
||||||
|
- [リポジトリ基礎編](../features/01-repository-basics.md) - より詳しい解説
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ❓ FAQ
|
||||||
|
|
||||||
|
**Q: コマンドラインが難しい...**
|
||||||
|
A: GitHub Desktop を使えばボタン操作でOK!
|
||||||
|
|
||||||
|
**Q: 間違えたらどうしよう...**
|
||||||
|
A: Gitは履歴が残るので、いつでも戻せます!
|
||||||
|
|
||||||
|
**Q: Pushする前にPullは必要?**
|
||||||
|
A: チーム開発では必須。個人開発でも習慣にしましょう。
|
||||||
|
|
||||||
|
**Q: コミットメッセージは日本語でいい?**
|
||||||
|
A: もちろんOK!分かりやすさが一番大事。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
楽しいGit生活を始めましょう! 🎉
|
||||||
360
beginners/github-hands-on.md
Normal file
360
beginners/github-hands-on.md
Normal file
|
|
@ -0,0 +1,360 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: "GitHub実践ガイド - 画面を見ながら操作しよう"
|
||||||
|
description: "実際の画面を見ながら、GitHubの基本操作をマスターしよう"
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🖥️ GitHub実践ガイド - 画面を見ながら操作しよう
|
||||||
|
|
||||||
|
実際の画面を想定しながら、一つずつ操作を覚えていきましょう!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📍 画面の見方を覚えよう
|
||||||
|
|
||||||
|
### GitHub トップページ
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────┐
|
||||||
|
│ 🐙 GitHub 検索バー [___________] 🔔 ➕ 👤 │
|
||||||
|
├─────────────────────────────────────────────────┤
|
||||||
|
│ │
|
||||||
|
│ 左側: 右側: │
|
||||||
|
│ 📁 Recent Repositories 📰 最近の活動 │
|
||||||
|
│ - my-first-project - @user がスター │
|
||||||
|
│ - hello-world - 新しいissue │
|
||||||
|
│ │
|
||||||
|
└─────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
**重要なボタンの位置:**
|
||||||
|
- 🔔 **通知** - 更新があったら赤い丸が付く
|
||||||
|
- ➕ **新規作成** - ここから新しいものを作る
|
||||||
|
- 👤 **プロフィール** - 設定やログアウト
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 実践1:リポジトリを作る
|
||||||
|
|
||||||
|
### 手順1:新規作成ボタンをクリック
|
||||||
|
```
|
||||||
|
画面右上
|
||||||
|
↓
|
||||||
|
[ 🔔 ] [ ➕ ] [ 👤 ]
|
||||||
|
↑
|
||||||
|
ここをクリック!
|
||||||
|
```
|
||||||
|
|
||||||
|
### 手順2:メニューから選択
|
||||||
|
```
|
||||||
|
┌─────────────────┐
|
||||||
|
│ New repository │ ← これを選ぶ
|
||||||
|
│ Import repo... │
|
||||||
|
│ New gist │
|
||||||
|
│ New org... │
|
||||||
|
└─────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### 手順3:リポジトリ情報を入力
|
||||||
|
```
|
||||||
|
Create a new repository
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
Repository name *
|
||||||
|
[my-awesome-project_______________]
|
||||||
|
↑
|
||||||
|
半角英数字とハイフン(-)が使える
|
||||||
|
|
||||||
|
Description (optional)
|
||||||
|
[私の素晴らしいプロジェクト_________]
|
||||||
|
↑
|
||||||
|
日本語OK!
|
||||||
|
|
||||||
|
◉ Public ○ Private
|
||||||
|
↑ ↑
|
||||||
|
みんなに公開 自分だけ
|
||||||
|
|
||||||
|
□ Add a README file ← チェックを入れる!
|
||||||
|
□ Add .gitignore
|
||||||
|
□ Choose a license
|
||||||
|
|
||||||
|
[Create repository] ← 最後にこれをクリック
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 実践2:ファイルを作成・編集
|
||||||
|
|
||||||
|
### 新しいファイルを作る
|
||||||
|
|
||||||
|
#### 手順1:Add fileボタンを探す
|
||||||
|
```
|
||||||
|
リポジトリページ
|
||||||
|
┌─────────────────────────────────────────────┐
|
||||||
|
│ 📁 my-awesome-project │
|
||||||
|
│ ─────────────────────────────────────────── │
|
||||||
|
│ 📄 README.md │
|
||||||
|
│ │
|
||||||
|
│ [Add file ▼] [🟢 Code ▼] │
|
||||||
|
│ ↑ │
|
||||||
|
│ ここをクリック │
|
||||||
|
└─────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 手順2:Create new fileを選択
|
||||||
|
```
|
||||||
|
┌──────────────────┐
|
||||||
|
│ Create new file │ ← これ
|
||||||
|
│ Upload files │
|
||||||
|
└──────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 手順3:ファイル名と内容を入力
|
||||||
|
```
|
||||||
|
ファイル作成画面
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
my-awesome-project / [memo.txt___________]
|
||||||
|
↑
|
||||||
|
ファイル名を入力
|
||||||
|
|
||||||
|
Edit new file Preview
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
1 | 今日の作業メモ
|
||||||
|
2 |
|
||||||
|
3 | GitHubの使い方を勉強中
|
||||||
|
4 | 思ったより簡単だった!
|
||||||
|
5 |
|
||||||
|
↑
|
||||||
|
内容を入力
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 手順4:保存(コミット)
|
||||||
|
```
|
||||||
|
画面下部
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
Commit new file
|
||||||
|
|
||||||
|
[メモファイルを追加_______________]
|
||||||
|
↑
|
||||||
|
何をしたか書く(日本語OK)
|
||||||
|
|
||||||
|
◉ Commit directly to the main branch
|
||||||
|
○ Create a new branch
|
||||||
|
|
||||||
|
[Commit new file] ← クリックして保存
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 実践3:既存ファイルを編集
|
||||||
|
|
||||||
|
### 手順1:編集したいファイルをクリック
|
||||||
|
```
|
||||||
|
ファイル一覧
|
||||||
|
━━━━━━━━━━━━━━━━━━━━
|
||||||
|
📄 README.md ← クリック
|
||||||
|
📄 memo.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
### 手順2:編集ボタンをクリック
|
||||||
|
```
|
||||||
|
ファイル表示画面
|
||||||
|
┌─────────────────────────────────────┐
|
||||||
|
│ README.md ✏️ 🗑️ │
|
||||||
|
│ ↑ │
|
||||||
|
│ 鉛筆マーク │
|
||||||
|
│ ─────────────────────────────────── │
|
||||||
|
│ # my-awesome-project │
|
||||||
|
│ 私の素晴らしいプロジェクト │
|
||||||
|
└─────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### 手順3:編集して保存
|
||||||
|
```
|
||||||
|
編集画面
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
1 | # my-awesome-project
|
||||||
|
2 | 私の素晴らしいプロジェクト
|
||||||
|
3 |
|
||||||
|
4 | ## 今日やったこと ← 追加
|
||||||
|
5 | - GitHubの勉強 ← 追加
|
||||||
|
6 |
|
||||||
|
|
||||||
|
下にスクロールして...
|
||||||
|
|
||||||
|
[Commit changes] をクリック
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 実践4:Issue(タスク)を作る
|
||||||
|
|
||||||
|
### 手順1:Issuesタブをクリック
|
||||||
|
```
|
||||||
|
リポジトリ上部のタブ
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
<> Code | 🔴 Issues | 🔄 PR | ⚡ Actions
|
||||||
|
↑
|
||||||
|
ここをクリック
|
||||||
|
```
|
||||||
|
|
||||||
|
### 手順2:New issueをクリック
|
||||||
|
```
|
||||||
|
Issues画面
|
||||||
|
┌──────────────────────────────────┐
|
||||||
|
│ 🔍 検索バー [New issue] │
|
||||||
|
│ ↑ │
|
||||||
|
│ 緑のボタン │
|
||||||
|
└──────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### 手順3:タイトルと内容を書く
|
||||||
|
```
|
||||||
|
新規Issue作成
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
Title
|
||||||
|
[READMEに使い方を追加したい_______]
|
||||||
|
↑
|
||||||
|
やりたいこと
|
||||||
|
|
||||||
|
Leave a comment
|
||||||
|
┌─────────────────────────────┐
|
||||||
|
│ ## やりたいこと │
|
||||||
|
│ READMEに初心者向けの │
|
||||||
|
│ 使い方を追加したいです │
|
||||||
|
│ │
|
||||||
|
│ ## 理由 │
|
||||||
|
│ 友達に教えるときに │
|
||||||
|
│ 説明しやすくするため │
|
||||||
|
└─────────────────────────────┘
|
||||||
|
|
||||||
|
[Submit new issue] ← クリック
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 実践5:他の人のプロジェクトを見る
|
||||||
|
|
||||||
|
### 手順1:検索する
|
||||||
|
```
|
||||||
|
画面上部の検索バー
|
||||||
|
┌────────────────────────────┐
|
||||||
|
│ 🔍 Search GitHub │
|
||||||
|
└────────────────────────────┘
|
||||||
|
↑
|
||||||
|
「recipe」「diary」など
|
||||||
|
興味のあるキーワードを入力
|
||||||
|
```
|
||||||
|
|
||||||
|
### 手順2:検索結果から選ぶ
|
||||||
|
```
|
||||||
|
検索結果
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
📁 user/recipe-collection ⭐ 234
|
||||||
|
簡単レシピ集
|
||||||
|
|
||||||
|
📁 another/my-recipes ⭐ 89
|
||||||
|
毎日の料理レシピ
|
||||||
|
↑
|
||||||
|
気になるものをクリック
|
||||||
|
```
|
||||||
|
|
||||||
|
### 手順3:スターを付ける
|
||||||
|
```
|
||||||
|
プロジェクトページ
|
||||||
|
┌────────────────────────────────────┐
|
||||||
|
│ 📁 user/recipe-collection │
|
||||||
|
│ │
|
||||||
|
│ [⭐ Star] [👁️ Watch] [🍴 Fork] │
|
||||||
|
│ ↑ │
|
||||||
|
│ クリックでお気に入り登録 │
|
||||||
|
└────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 操作のコツ
|
||||||
|
|
||||||
|
### 🔍 迷ったときは
|
||||||
|
1. **戻るボタン** - ブラウザの戻るで大丈夫
|
||||||
|
2. **ロゴクリック** - GitHubロゴでトップに戻る
|
||||||
|
3. **パンくずリスト** - 今どこにいるか分かる
|
||||||
|
|
||||||
|
### ⌨️ 便利なキーボードショートカット
|
||||||
|
画面で `?` を押すと、ショートカット一覧が出ます!
|
||||||
|
|
||||||
|
よく使うもの:
|
||||||
|
- `t` - ファイル検索
|
||||||
|
- `b` - ブランチ切り替え
|
||||||
|
- `g` `n` - 通知ページへ
|
||||||
|
- `g` `d` - ダッシュボードへ
|
||||||
|
|
||||||
|
### 🎨 見た目を変える
|
||||||
|
プロフィール → Settings → Appearance で:
|
||||||
|
- ☀️ **Light** - 明るいテーマ
|
||||||
|
- 🌙 **Dark** - 暗いテーマ
|
||||||
|
- 💻 **System** - OSに合わせる
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚨 困ったときの対処法
|
||||||
|
|
||||||
|
### ❌ エラーが出た
|
||||||
|
```
|
||||||
|
エラー例:
|
||||||
|
┌─────────────────────────────┐
|
||||||
|
│ ⚠️ File name already exists │
|
||||||
|
└─────────────────────────────┘
|
||||||
|
```
|
||||||
|
**対処法**: ファイル名を変える
|
||||||
|
|
||||||
|
### 🔒 Permission denied
|
||||||
|
**対処法**: ログインし直す、権限を確認
|
||||||
|
|
||||||
|
### 📝 日本語が文字化け
|
||||||
|
**対処法**: ファイルの文字コードをUTF-8に
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎓 練習問題
|
||||||
|
|
||||||
|
### 📌 基本操作をマスターしよう
|
||||||
|
|
||||||
|
#### 課題1:自己紹介リポジトリ
|
||||||
|
1. `self-introduction` という名前でリポジトリ作成
|
||||||
|
2. `profile.md` ファイルを作成
|
||||||
|
3. 自己紹介を書く
|
||||||
|
4. `hobbies.md` を追加して趣味を書く
|
||||||
|
|
||||||
|
#### 課題2:日記リポジトリ
|
||||||
|
1. `my-diary-2024` でリポジトリ作成
|
||||||
|
2. `2024/01/diary.md` を作成(フォルダ付き)
|
||||||
|
3. 今日の出来事を書く
|
||||||
|
4. Issue で「明日やること」を作成
|
||||||
|
|
||||||
|
#### 課題3:学習記録
|
||||||
|
1. `learning-log` でリポジトリ作成
|
||||||
|
2. `github/` フォルダを作る
|
||||||
|
3. `day1.md` に今日学んだことを記録
|
||||||
|
4. README.md に目次を追加
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎉 よくできました!
|
||||||
|
|
||||||
|
ここまでできたら、GitHubの基本操作はバッチリです!
|
||||||
|
|
||||||
|
**次のステップ:**
|
||||||
|
- 🌿 ブランチを使った安全な編集
|
||||||
|
- 🔄 Pull Requestでの共同作業
|
||||||
|
- 🌐 GitHub Pagesでサイト公開
|
||||||
|
|
||||||
|
**覚えておいてください:**
|
||||||
|
- 😊 間違えても大丈夫、やり直せます
|
||||||
|
- 📚 分からないことは調べながらでOK
|
||||||
|
- 🎯 毎日少しずつ使えば必ず上達します
|
||||||
|
|
||||||
|
楽しいGitHubライフを! 🚀
|
||||||
273
case-studies/index.md
Normal file
273
case-studies/index.md
Normal file
|
|
@ -0,0 +1,273 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: "GitHub活用事例集"
|
||||||
|
description: "実際の企業・組織でのGitHub導入事例と成功パターン"
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📊 GitHub活用事例集
|
||||||
|
|
||||||
|
実際の企業・組織でのGitHub活用事例を通じて、具体的な導入方法と効果を学びます。
|
||||||
|
|
||||||
|
## 📚 事例集一覧
|
||||||
|
|
||||||
|
### [🚀 2024年版 実世界のGitHub活用事例](real-world-github-examples-2024.html)
|
||||||
|
**最新の企業導入事例と成功パターンを網羅的に収録**
|
||||||
|
|
||||||
|
- 🤖 AI関連プロジェクトの爆発的成長
|
||||||
|
- 🏢 日本企業の先進的な活用事例
|
||||||
|
- 🔧 CI/CD自動化による開発効率化
|
||||||
|
- 📋 プロジェクト管理ツールの完全代替
|
||||||
|
|
||||||
|
<div class="case-study-highlights">
|
||||||
|
<h2>🎯 注目の事例</h2>
|
||||||
|
|
||||||
|
<div class="highlight-grid">
|
||||||
|
<div class="highlight-card">
|
||||||
|
<h3>🏭 日立製作所</h3>
|
||||||
|
<p><strong>GitHub Copilot導入</strong></p>
|
||||||
|
<p>コード生成率99%を達成し、上流から下流まで一貫した開発効率化を実現</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="highlight-card">
|
||||||
|
<h3>🛒 ZOZO</h3>
|
||||||
|
<p><strong>大規模Copilot活用</strong></p>
|
||||||
|
<p>約18万行のコードを自動生成、受け入れ率23.59%で高い実用性を証明</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="highlight-card">
|
||||||
|
<h3>🎮 DeNA</h3>
|
||||||
|
<p><strong>セルフホストランナー</strong></p>
|
||||||
|
<p>GitHub Actionsの大規模運用でクラウドコストを最適化</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="highlight-card">
|
||||||
|
<h3>💼 Accenture</h3>
|
||||||
|
<p><strong>生産性向上</strong></p>
|
||||||
|
<p>タスク完了時間を平均55%短縮、開発効率が劇的に改善</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## 📈 導入効果サマリー
|
||||||
|
|
||||||
|
<div class="impact-section">
|
||||||
|
<div class="impact-item">
|
||||||
|
<h3>🚀 98%</h3>
|
||||||
|
<p>AI関連プロジェクト増加率(2024年)</p>
|
||||||
|
</div>
|
||||||
|
<div class="impact-item">
|
||||||
|
<h3>⏱️ 75%</h3>
|
||||||
|
<p>リリース時間削減(ArgoCD + Actions)</p>
|
||||||
|
</div>
|
||||||
|
<div class="impact-item">
|
||||||
|
<h3>💡 55%</h3>
|
||||||
|
<p>タスク完了時間短縮(Copilot導入)</p>
|
||||||
|
</div>
|
||||||
|
<div class="impact-item">
|
||||||
|
<h3>📊 80%</h3>
|
||||||
|
<p>生産性向上を実感(TIS調査)</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## 🎓 事例から学ぶベストプラクティス
|
||||||
|
|
||||||
|
### 1. 段階的導入アプローチ
|
||||||
|
- 小規模チームでのパイロット導入
|
||||||
|
- 効果測定と改善サイクル
|
||||||
|
- 全社展開への拡大
|
||||||
|
|
||||||
|
### 2. 既存ツールからの移行
|
||||||
|
- JIRA → GitHub Projects
|
||||||
|
- Jenkins → GitHub Actions
|
||||||
|
- Confluence → GitHub Wiki/Pages
|
||||||
|
|
||||||
|
### 3. コスト最適化戦略
|
||||||
|
- セルフホストランナーの活用
|
||||||
|
- ローカルCI実行によるコスト削減
|
||||||
|
- 無料枠の最大活用
|
||||||
|
|
||||||
|
### 4. 開発者体験の向上
|
||||||
|
- GitHub Copilotによるコーディング支援
|
||||||
|
- 統合開発環境の構築
|
||||||
|
- 自動化による煩雑作業の削減
|
||||||
|
|
||||||
|
## 🔍 業界別活用パターン
|
||||||
|
|
||||||
|
<div class="industry-patterns">
|
||||||
|
<div class="pattern-card">
|
||||||
|
<h3>🏢 エンタープライズ</h3>
|
||||||
|
<ul>
|
||||||
|
<li>大規模なセキュリティ要件への対応</li>
|
||||||
|
<li>既存システムとの統合</li>
|
||||||
|
<li>コンプライアンス管理</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pattern-card">
|
||||||
|
<h3>🚀 スタートアップ</h3>
|
||||||
|
<ul>
|
||||||
|
<li>コスト効率の最大化</li>
|
||||||
|
<li>迅速な開発サイクル</li>
|
||||||
|
<li>少人数での効率的な管理</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pattern-card">
|
||||||
|
<h3>🎓 教育・研究機関</h3>
|
||||||
|
<ul>
|
||||||
|
<li>オープンソースプロジェクト管理</li>
|
||||||
|
<li>学生との協働開発</li>
|
||||||
|
<li>研究成果の公開</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## 📝 次のステップ
|
||||||
|
|
||||||
|
1. **[実世界の活用事例](real-world-github-examples-2024.html)** を詳しく読む
|
||||||
|
2. 自社に適用可能なパターンを特定
|
||||||
|
3. パイロットプロジェクトの計画立案
|
||||||
|
4. 段階的な導入開始
|
||||||
|
|
||||||
|
<div class="cta-section">
|
||||||
|
<h2>🚀 今すぐ始めよう</h2>
|
||||||
|
<p>実際の企業事例から学び、あなたの組織でもGitHubの力を最大限に活用しましょう。</p>
|
||||||
|
<a href="real-world-github-examples-2024.html" class="cta-button">詳細な事例を見る</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* ハイライトグリッド */
|
||||||
|
.case-study-highlights {
|
||||||
|
background: #f6f8fa;
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||||
|
gap: 1rem;
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-card {
|
||||||
|
background: white;
|
||||||
|
padding: 1.5rem;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid #e1e4e8;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-card:hover {
|
||||||
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-card h3 {
|
||||||
|
color: #0366d6;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-card p:first-of-type {
|
||||||
|
font-weight: bold;
|
||||||
|
color: #28a745;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* インパクトセクション */
|
||||||
|
.impact-section {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||||
|
gap: 1rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.impact-item {
|
||||||
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 2rem 1rem;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.impact-item h3 {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.impact-item p {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
opacity: 0.9;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 業界パターン */
|
||||||
|
.industry-patterns {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||||
|
gap: 1rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pattern-card {
|
||||||
|
background: white;
|
||||||
|
border: 2px solid #e1e4e8;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pattern-card h3 {
|
||||||
|
color: #0366d6;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pattern-card ul {
|
||||||
|
margin: 0;
|
||||||
|
padding-left: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pattern-card li {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
color: #586069;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CTAセクション */
|
||||||
|
.cta-section {
|
||||||
|
background: #f6f8fa;
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 10px;
|
||||||
|
text-align: center;
|
||||||
|
margin: 3rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
display: inline-block;
|
||||||
|
background: #28a745;
|
||||||
|
color: white;
|
||||||
|
padding: 1rem 2rem;
|
||||||
|
border-radius: 6px;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 1rem;
|
||||||
|
transition: background-color 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button:hover {
|
||||||
|
background: #218838;
|
||||||
|
text-decoration: none;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* レスポンシブ対応 */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.highlight-grid,
|
||||||
|
.impact-section,
|
||||||
|
.industry-patterns {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.impact-item h3 {
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
210
case-studies/real-world-github-examples-2024.md
Normal file
210
case-studies/real-world-github-examples-2024.md
Normal file
|
|
@ -0,0 +1,210 @@
|
||||||
|
# GitHub活用事例集 2024年版 - 実際の企業・組織での導入事例
|
||||||
|
|
||||||
|
## 📊 概要
|
||||||
|
|
||||||
|
このドキュメントでは、2024年時点でのGitHubの実際の活用事例を、企業・組織での導入例を中心にまとめています。理論だけでなく、実際にどのように使われているかを理解することで、より実践的なGitHub活用のイメージを掴むことができます。
|
||||||
|
|
||||||
|
## 🚀 企業のオープンソース活用事例
|
||||||
|
|
||||||
|
### 2024年の主要トレンド
|
||||||
|
|
||||||
|
#### PythonがGitHub上で最も人気の言語に
|
||||||
|
- 2024年、PythonがJavaScriptを抜いてGitHub上で最も使用される言語となった
|
||||||
|
- 生成AI関連プロジェクトの急増が主な要因
|
||||||
|
- Jupyter Notebookの利用も急速に拡大
|
||||||
|
|
||||||
|
#### AI関連プロジェクトの爆発的成長
|
||||||
|
- 生成AIプロジェクトへの貢献数:**59%増加**
|
||||||
|
- プロジェクト数:**98%増加**(2024年だけで7万以上のプロジェクトが誕生)
|
||||||
|
- 主要な貢献国:インド、ドイツ、日本、シンガポール
|
||||||
|
|
||||||
|
#### 人気の生成AI関連プロジェクト
|
||||||
|
1. **AUTOMATIC1111/stable-diffusion-webui**
|
||||||
|
- Stable Diffusionの人気WebUIフロントエンド
|
||||||
|
- 世界中の開発者が機能拡張に貢献
|
||||||
|
|
||||||
|
2. **Significant-Gravitas/AutoGPT**
|
||||||
|
- 自律的なAIエージェント
|
||||||
|
- オープンソースAI開発の最前線
|
||||||
|
|
||||||
|
3. **ollama/ollama**
|
||||||
|
- ローカルでLLMを実行するツール
|
||||||
|
- プライバシー重視の企業で採用増
|
||||||
|
|
||||||
|
### 日本企業の事例
|
||||||
|
|
||||||
|
#### 富士通 - 量子コンピューティング基本ソフトウェア
|
||||||
|
- **プロジェクト名**: Open Quantum Toolchain for Operators and Users
|
||||||
|
- **特徴**: 自由にカスタマイズ可能な量子コンピュータ基本ソフトウェア
|
||||||
|
- **活用例**: 大阪大学の量子コンピュータ・クラウドサービスで実運用開始
|
||||||
|
- **意義**: 日本が量子コンピューティング分野でオープンソースに貢献
|
||||||
|
|
||||||
|
## 🔧 GitHub Actions CI/CD実装事例
|
||||||
|
|
||||||
|
### 2024年の企業導入事例
|
||||||
|
|
||||||
|
#### DeNA - 大規模セルフホストランナー運用
|
||||||
|
- **課題**: ECSでの大規模なCI/CD環境構築
|
||||||
|
- **解決策**: GitHub Actionsセルフホストランナーの大規模運用
|
||||||
|
- **効果**: クラウドコストの最適化と処理速度の向上
|
||||||
|
|
||||||
|
#### CNDT 2022発表事例 - リリース時間を1/4に削減
|
||||||
|
- **使用技術**: ArgoCD + GitHub Actions
|
||||||
|
- **改善前**: リリースに4時間
|
||||||
|
- **改善後**: リリースに1時間(75%削減)
|
||||||
|
- **ポイント**: GitOpsとCI/CDの統合
|
||||||
|
|
||||||
|
### 実装パターン例
|
||||||
|
|
||||||
|
#### 1. 基本的なCI/CDワークフロー
|
||||||
|
```yaml
|
||||||
|
name: CI/CD Pipeline
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: [ main ]
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Run tests
|
||||||
|
run: npm test
|
||||||
|
- name: Run lint
|
||||||
|
run: npm run lint
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 静的ファイルの自動デプロイ
|
||||||
|
- **FTP-Deploy-Action**: レンタルサーバーへの自動アップロード
|
||||||
|
- **Firebase Deploy**: Firebase Hostingへの自動デプロイ
|
||||||
|
- **GitHub Pages**: 静的サイトの自動公開
|
||||||
|
|
||||||
|
### コスト最適化のトレンド
|
||||||
|
|
||||||
|
#### Daggerを使用したローカルCI実行
|
||||||
|
- **発表**: KubeCon North America 2024
|
||||||
|
- **メリット**: クラウドコストの激減
|
||||||
|
- **手法**: ローカルPC上でCIを実行してからクラウドに送信
|
||||||
|
|
||||||
|
## 📋 GitHub Projectsによるプロジェクト管理事例
|
||||||
|
|
||||||
|
### 実際の運用例
|
||||||
|
|
||||||
|
#### 小規模チームでの活用
|
||||||
|
- **背景**: JIRAやNotionの有料プランを避けたい
|
||||||
|
- **解決**: GitHub Projectsで開発とビジネスサイドの要求を一元管理
|
||||||
|
- **効果**:
|
||||||
|
- 開発者はGitHubだけを見れば良い
|
||||||
|
- ビジネスサイドも同じツールで進捗確認
|
||||||
|
- コスト削減
|
||||||
|
|
||||||
|
#### カンバン方式の実装
|
||||||
|
- **11レーン構成の例**:
|
||||||
|
1. Backlog
|
||||||
|
2. Ready for Dev
|
||||||
|
3. In Development
|
||||||
|
4. Code Review
|
||||||
|
5. Testing
|
||||||
|
6. Wait(確認待ち用)
|
||||||
|
7. Ready for Release
|
||||||
|
8. Releasing
|
||||||
|
9. Released
|
||||||
|
10. Monitoring
|
||||||
|
11. Done
|
||||||
|
|
||||||
|
- **各レーンに責任者を設定**して明確な管理体制を構築
|
||||||
|
|
||||||
|
### 自動化機能の活用
|
||||||
|
|
||||||
|
#### Workflowによる自動化
|
||||||
|
- Pull RequestのクローズでIssueも自動クローズ
|
||||||
|
- 特定のラベルが付いたら自動的にカラム移動
|
||||||
|
- マイルストーンに基づく自動グルーピング
|
||||||
|
|
||||||
|
### 組織横断的な管理
|
||||||
|
|
||||||
|
#### Organization Projectsの活用
|
||||||
|
- 複数リポジトリのIssueを一元管理
|
||||||
|
- マイクロサービス開発での全体進捗把握
|
||||||
|
- チーム間のタスク依存関係の可視化
|
||||||
|
|
||||||
|
## 🤖 GitHub Copilot企業導入事例
|
||||||
|
|
||||||
|
### 2024年の主要導入企業と効果
|
||||||
|
|
||||||
|
#### 日立製作所
|
||||||
|
- **コード生成率**:
|
||||||
|
- Justware OSSのみ:78%
|
||||||
|
- GitHub Copilot併用:**99%**
|
||||||
|
- **統合システム**: Hitachi GenAI System Development Framework
|
||||||
|
- **効果**: 上流工程から下流工程まで一貫した開発効率化
|
||||||
|
|
||||||
|
#### マネーフォワード
|
||||||
|
- **導入時期**: 2023年7月
|
||||||
|
- **効果**: 開発者の活動量が明確に増加
|
||||||
|
- **特徴**: 全社導入で積極活用を推進
|
||||||
|
|
||||||
|
#### TIS株式会社
|
||||||
|
- **生産性向上**: 8割以上のユーザーが実感
|
||||||
|
- **品質向上**: 約7割のユーザーが実感
|
||||||
|
- **注目点**: アソシエイトエンジニア(若手)への効果が特に高い
|
||||||
|
|
||||||
|
#### ZOZO
|
||||||
|
- **実績データ** (2023/12/16 - 2024/02/12):
|
||||||
|
- Total Accepts: 108,961
|
||||||
|
- Acceptance Rate: 23.59%
|
||||||
|
- Lines of Code Accepted: 183,943
|
||||||
|
|
||||||
|
#### Accenture(グローバル)
|
||||||
|
- **タスク完了時間**: 平均**55%短縮**
|
||||||
|
- **実験期間**: 約4ヶ月間
|
||||||
|
- **規模**: 大規模な開発チームで検証
|
||||||
|
|
||||||
|
### 研究による効果検証
|
||||||
|
|
||||||
|
#### 大規模実験の結果(2024年9月発表)
|
||||||
|
- **Microsoft**: 7ヶ月間の実験
|
||||||
|
- **Accenture**: 4ヶ月間の実験
|
||||||
|
- **Fortune 100企業**: 2ヶ月間の実験
|
||||||
|
- **結論**: 生産性向上効果が客観的に証明された
|
||||||
|
|
||||||
|
### 将来予測
|
||||||
|
|
||||||
|
- **2028年までの予測**:
|
||||||
|
- 90%の企業のソフトウェアエンジニアがAIコードアシスタントを使用
|
||||||
|
- 2024年初頭の14%未満から大幅増加
|
||||||
|
|
||||||
|
## 💡 実践的な活用のポイント
|
||||||
|
|
||||||
|
### 1. 段階的な導入
|
||||||
|
- まずは小規模チームやプロジェクトで試験導入
|
||||||
|
- 効果を測定してから全社展開
|
||||||
|
- 社内勉強会やナレッジ共有の仕組みを構築
|
||||||
|
|
||||||
|
### 2. 既存ツールからの移行
|
||||||
|
- JIRAからGitHub Projectsへの段階的移行
|
||||||
|
- JenkinsからGitHub Actionsへの切り替え
|
||||||
|
- ConfluenceからGitHub Wiki/Pagesへの文書移行
|
||||||
|
|
||||||
|
### 3. 投資対効果の測定
|
||||||
|
- 開発速度の定量的測定
|
||||||
|
- コスト削減効果の可視化
|
||||||
|
- 開発者満足度の調査
|
||||||
|
|
||||||
|
### 4. セキュリティとコンプライアンス
|
||||||
|
- GitHub Advanced Securityの活用
|
||||||
|
- Dependabotによる脆弱性管理
|
||||||
|
- Branch Protection Rulesの適切な設定
|
||||||
|
|
||||||
|
## 🎯 まとめ
|
||||||
|
|
||||||
|
2024年のGitHub活用事例から見えてくる主要なトレンド:
|
||||||
|
|
||||||
|
1. **AI駆動開発の主流化**: GitHub Copilotによる生産性向上が実証済み
|
||||||
|
2. **オールインワンプラットフォーム化**: 外部ツールからGitHub機能への統合が進行
|
||||||
|
3. **コスト最適化**: セルフホストランナーやローカルCI実行によるコスト削減
|
||||||
|
4. **日本企業の積極採用**: 大手企業を中心に本格的な活用が進む
|
||||||
|
|
||||||
|
これらの事例は、GitHubが単なるコード管理ツールから、開発プロセス全体を支える統合プラットフォームへと進化していることを示しています。
|
||||||
273
docs/case-studies/index.md
Normal file
273
docs/case-studies/index.md
Normal file
|
|
@ -0,0 +1,273 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: "GitHub活用事例集"
|
||||||
|
description: "実際の企業・組織でのGitHub導入事例と成功パターン"
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📊 GitHub活用事例集
|
||||||
|
|
||||||
|
実際の企業・組織でのGitHub活用事例を通じて、具体的な導入方法と効果を学びます。
|
||||||
|
|
||||||
|
## 📚 事例集一覧
|
||||||
|
|
||||||
|
### [🚀 2024年版 実世界のGitHub活用事例](real-world-github-examples-2024.html)
|
||||||
|
**最新の企業導入事例と成功パターンを網羅的に収録**
|
||||||
|
|
||||||
|
- 🤖 AI関連プロジェクトの爆発的成長
|
||||||
|
- 🏢 日本企業の先進的な活用事例
|
||||||
|
- 🔧 CI/CD自動化による開発効率化
|
||||||
|
- 📋 プロジェクト管理ツールの完全代替
|
||||||
|
|
||||||
|
<div class="case-study-highlights">
|
||||||
|
<h2>🎯 注目の事例</h2>
|
||||||
|
|
||||||
|
<div class="highlight-grid">
|
||||||
|
<div class="highlight-card">
|
||||||
|
<h3>🏭 日立製作所</h3>
|
||||||
|
<p><strong>GitHub Copilot導入</strong></p>
|
||||||
|
<p>コード生成率99%を達成し、上流から下流まで一貫した開発効率化を実現</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="highlight-card">
|
||||||
|
<h3>🛒 ZOZO</h3>
|
||||||
|
<p><strong>大規模Copilot活用</strong></p>
|
||||||
|
<p>約18万行のコードを自動生成、受け入れ率23.59%で高い実用性を証明</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="highlight-card">
|
||||||
|
<h3>🎮 DeNA</h3>
|
||||||
|
<p><strong>セルフホストランナー</strong></p>
|
||||||
|
<p>GitHub Actionsの大規模運用でクラウドコストを最適化</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="highlight-card">
|
||||||
|
<h3>💼 Accenture</h3>
|
||||||
|
<p><strong>生産性向上</strong></p>
|
||||||
|
<p>タスク完了時間を平均55%短縮、開発効率が劇的に改善</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## 📈 導入効果サマリー
|
||||||
|
|
||||||
|
<div class="impact-section">
|
||||||
|
<div class="impact-item">
|
||||||
|
<h3>🚀 98%</h3>
|
||||||
|
<p>AI関連プロジェクト増加率(2024年)</p>
|
||||||
|
</div>
|
||||||
|
<div class="impact-item">
|
||||||
|
<h3>⏱️ 75%</h3>
|
||||||
|
<p>リリース時間削減(ArgoCD + Actions)</p>
|
||||||
|
</div>
|
||||||
|
<div class="impact-item">
|
||||||
|
<h3>💡 55%</h3>
|
||||||
|
<p>タスク完了時間短縮(Copilot導入)</p>
|
||||||
|
</div>
|
||||||
|
<div class="impact-item">
|
||||||
|
<h3>📊 80%</h3>
|
||||||
|
<p>生産性向上を実感(TIS調査)</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## 🎓 事例から学ぶベストプラクティス
|
||||||
|
|
||||||
|
### 1. 段階的導入アプローチ
|
||||||
|
- 小規模チームでのパイロット導入
|
||||||
|
- 効果測定と改善サイクル
|
||||||
|
- 全社展開への拡大
|
||||||
|
|
||||||
|
### 2. 既存ツールからの移行
|
||||||
|
- JIRA → GitHub Projects
|
||||||
|
- Jenkins → GitHub Actions
|
||||||
|
- Confluence → GitHub Wiki/Pages
|
||||||
|
|
||||||
|
### 3. コスト最適化戦略
|
||||||
|
- セルフホストランナーの活用
|
||||||
|
- ローカルCI実行によるコスト削減
|
||||||
|
- 無料枠の最大活用
|
||||||
|
|
||||||
|
### 4. 開発者体験の向上
|
||||||
|
- GitHub Copilotによるコーディング支援
|
||||||
|
- 統合開発環境の構築
|
||||||
|
- 自動化による煩雑作業の削減
|
||||||
|
|
||||||
|
## 🔍 業界別活用パターン
|
||||||
|
|
||||||
|
<div class="industry-patterns">
|
||||||
|
<div class="pattern-card">
|
||||||
|
<h3>🏢 エンタープライズ</h3>
|
||||||
|
<ul>
|
||||||
|
<li>大規模なセキュリティ要件への対応</li>
|
||||||
|
<li>既存システムとの統合</li>
|
||||||
|
<li>コンプライアンス管理</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pattern-card">
|
||||||
|
<h3>🚀 スタートアップ</h3>
|
||||||
|
<ul>
|
||||||
|
<li>コスト効率の最大化</li>
|
||||||
|
<li>迅速な開発サイクル</li>
|
||||||
|
<li>少人数での効率的な管理</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pattern-card">
|
||||||
|
<h3>🎓 教育・研究機関</h3>
|
||||||
|
<ul>
|
||||||
|
<li>オープンソースプロジェクト管理</li>
|
||||||
|
<li>学生との協働開発</li>
|
||||||
|
<li>研究成果の公開</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## 📝 次のステップ
|
||||||
|
|
||||||
|
1. **[実世界の活用事例](real-world-github-examples-2024.html)** を詳しく読む
|
||||||
|
2. 自社に適用可能なパターンを特定
|
||||||
|
3. パイロットプロジェクトの計画立案
|
||||||
|
4. 段階的な導入開始
|
||||||
|
|
||||||
|
<div class="cta-section">
|
||||||
|
<h2>🚀 今すぐ始めよう</h2>
|
||||||
|
<p>実際の企業事例から学び、あなたの組織でもGitHubの力を最大限に活用しましょう。</p>
|
||||||
|
<a href="real-world-github-examples-2024.html" class="cta-button">詳細な事例を見る</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* ハイライトグリッド */
|
||||||
|
.case-study-highlights {
|
||||||
|
background: #f6f8fa;
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||||
|
gap: 1rem;
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-card {
|
||||||
|
background: white;
|
||||||
|
padding: 1.5rem;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid #e1e4e8;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-card:hover {
|
||||||
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-card h3 {
|
||||||
|
color: #0366d6;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-card p:first-of-type {
|
||||||
|
font-weight: bold;
|
||||||
|
color: #28a745;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* インパクトセクション */
|
||||||
|
.impact-section {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||||
|
gap: 1rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.impact-item {
|
||||||
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 2rem 1rem;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.impact-item h3 {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.impact-item p {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
opacity: 0.9;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 業界パターン */
|
||||||
|
.industry-patterns {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||||
|
gap: 1rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pattern-card {
|
||||||
|
background: white;
|
||||||
|
border: 2px solid #e1e4e8;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pattern-card h3 {
|
||||||
|
color: #0366d6;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pattern-card ul {
|
||||||
|
margin: 0;
|
||||||
|
padding-left: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pattern-card li {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
color: #586069;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CTAセクション */
|
||||||
|
.cta-section {
|
||||||
|
background: #f6f8fa;
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 10px;
|
||||||
|
text-align: center;
|
||||||
|
margin: 3rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
display: inline-block;
|
||||||
|
background: #28a745;
|
||||||
|
color: white;
|
||||||
|
padding: 1rem 2rem;
|
||||||
|
border-radius: 6px;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 1rem;
|
||||||
|
transition: background-color 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button:hover {
|
||||||
|
background: #218838;
|
||||||
|
text-decoration: none;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* レスポンシブ対応 */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.highlight-grid,
|
||||||
|
.impact-section,
|
||||||
|
.industry-patterns {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.impact-item h3 {
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
210
docs/case-studies/real-world-github-examples-2024.md
Normal file
210
docs/case-studies/real-world-github-examples-2024.md
Normal file
|
|
@ -0,0 +1,210 @@
|
||||||
|
# GitHub活用事例集 2024年版 - 実際の企業・組織での導入事例
|
||||||
|
|
||||||
|
## 📊 概要
|
||||||
|
|
||||||
|
このドキュメントでは、2024年時点でのGitHubの実際の活用事例を、企業・組織での導入例を中心にまとめています。理論だけでなく、実際にどのように使われているかを理解することで、より実践的なGitHub活用のイメージを掴むことができます。
|
||||||
|
|
||||||
|
## 🚀 企業のオープンソース活用事例
|
||||||
|
|
||||||
|
### 2024年の主要トレンド
|
||||||
|
|
||||||
|
#### PythonがGitHub上で最も人気の言語に
|
||||||
|
- 2024年、PythonがJavaScriptを抜いてGitHub上で最も使用される言語となった
|
||||||
|
- 生成AI関連プロジェクトの急増が主な要因
|
||||||
|
- Jupyter Notebookの利用も急速に拡大
|
||||||
|
|
||||||
|
#### AI関連プロジェクトの爆発的成長
|
||||||
|
- 生成AIプロジェクトへの貢献数:**59%増加**
|
||||||
|
- プロジェクト数:**98%増加**(2024年だけで7万以上のプロジェクトが誕生)
|
||||||
|
- 主要な貢献国:インド、ドイツ、日本、シンガポール
|
||||||
|
|
||||||
|
#### 人気の生成AI関連プロジェクト
|
||||||
|
1. **AUTOMATIC1111/stable-diffusion-webui**
|
||||||
|
- Stable Diffusionの人気WebUIフロントエンド
|
||||||
|
- 世界中の開発者が機能拡張に貢献
|
||||||
|
|
||||||
|
2. **Significant-Gravitas/AutoGPT**
|
||||||
|
- 自律的なAIエージェント
|
||||||
|
- オープンソースAI開発の最前線
|
||||||
|
|
||||||
|
3. **ollama/ollama**
|
||||||
|
- ローカルでLLMを実行するツール
|
||||||
|
- プライバシー重視の企業で採用増
|
||||||
|
|
||||||
|
### 日本企業の事例
|
||||||
|
|
||||||
|
#### 富士通 - 量子コンピューティング基本ソフトウェア
|
||||||
|
- **プロジェクト名**: Open Quantum Toolchain for Operators and Users
|
||||||
|
- **特徴**: 自由にカスタマイズ可能な量子コンピュータ基本ソフトウェア
|
||||||
|
- **活用例**: 大阪大学の量子コンピュータ・クラウドサービスで実運用開始
|
||||||
|
- **意義**: 日本が量子コンピューティング分野でオープンソースに貢献
|
||||||
|
|
||||||
|
## 🔧 GitHub Actions CI/CD実装事例
|
||||||
|
|
||||||
|
### 2024年の企業導入事例
|
||||||
|
|
||||||
|
#### DeNA - 大規模セルフホストランナー運用
|
||||||
|
- **課題**: ECSでの大規模なCI/CD環境構築
|
||||||
|
- **解決策**: GitHub Actionsセルフホストランナーの大規模運用
|
||||||
|
- **効果**: クラウドコストの最適化と処理速度の向上
|
||||||
|
|
||||||
|
#### CNDT 2022発表事例 - リリース時間を1/4に削減
|
||||||
|
- **使用技術**: ArgoCD + GitHub Actions
|
||||||
|
- **改善前**: リリースに4時間
|
||||||
|
- **改善後**: リリースに1時間(75%削減)
|
||||||
|
- **ポイント**: GitOpsとCI/CDの統合
|
||||||
|
|
||||||
|
### 実装パターン例
|
||||||
|
|
||||||
|
#### 1. 基本的なCI/CDワークフロー
|
||||||
|
```yaml
|
||||||
|
name: CI/CD Pipeline
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: [ main ]
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Run tests
|
||||||
|
run: npm test
|
||||||
|
- name: Run lint
|
||||||
|
run: npm run lint
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 静的ファイルの自動デプロイ
|
||||||
|
- **FTP-Deploy-Action**: レンタルサーバーへの自動アップロード
|
||||||
|
- **Firebase Deploy**: Firebase Hostingへの自動デプロイ
|
||||||
|
- **GitHub Pages**: 静的サイトの自動公開
|
||||||
|
|
||||||
|
### コスト最適化のトレンド
|
||||||
|
|
||||||
|
#### Daggerを使用したローカルCI実行
|
||||||
|
- **発表**: KubeCon North America 2024
|
||||||
|
- **メリット**: クラウドコストの激減
|
||||||
|
- **手法**: ローカルPC上でCIを実行してからクラウドに送信
|
||||||
|
|
||||||
|
## 📋 GitHub Projectsによるプロジェクト管理事例
|
||||||
|
|
||||||
|
### 実際の運用例
|
||||||
|
|
||||||
|
#### 小規模チームでの活用
|
||||||
|
- **背景**: JIRAやNotionの有料プランを避けたい
|
||||||
|
- **解決**: GitHub Projectsで開発とビジネスサイドの要求を一元管理
|
||||||
|
- **効果**:
|
||||||
|
- 開発者はGitHubだけを見れば良い
|
||||||
|
- ビジネスサイドも同じツールで進捗確認
|
||||||
|
- コスト削減
|
||||||
|
|
||||||
|
#### カンバン方式の実装
|
||||||
|
- **11レーン構成の例**:
|
||||||
|
1. Backlog
|
||||||
|
2. Ready for Dev
|
||||||
|
3. In Development
|
||||||
|
4. Code Review
|
||||||
|
5. Testing
|
||||||
|
6. Wait(確認待ち用)
|
||||||
|
7. Ready for Release
|
||||||
|
8. Releasing
|
||||||
|
9. Released
|
||||||
|
10. Monitoring
|
||||||
|
11. Done
|
||||||
|
|
||||||
|
- **各レーンに責任者を設定**して明確な管理体制を構築
|
||||||
|
|
||||||
|
### 自動化機能の活用
|
||||||
|
|
||||||
|
#### Workflowによる自動化
|
||||||
|
- Pull RequestのクローズでIssueも自動クローズ
|
||||||
|
- 特定のラベルが付いたら自動的にカラム移動
|
||||||
|
- マイルストーンに基づく自動グルーピング
|
||||||
|
|
||||||
|
### 組織横断的な管理
|
||||||
|
|
||||||
|
#### Organization Projectsの活用
|
||||||
|
- 複数リポジトリのIssueを一元管理
|
||||||
|
- マイクロサービス開発での全体進捗把握
|
||||||
|
- チーム間のタスク依存関係の可視化
|
||||||
|
|
||||||
|
## 🤖 GitHub Copilot企業導入事例
|
||||||
|
|
||||||
|
### 2024年の主要導入企業と効果
|
||||||
|
|
||||||
|
#### 日立製作所
|
||||||
|
- **コード生成率**:
|
||||||
|
- Justware OSSのみ:78%
|
||||||
|
- GitHub Copilot併用:**99%**
|
||||||
|
- **統合システム**: Hitachi GenAI System Development Framework
|
||||||
|
- **効果**: 上流工程から下流工程まで一貫した開発効率化
|
||||||
|
|
||||||
|
#### マネーフォワード
|
||||||
|
- **導入時期**: 2023年7月
|
||||||
|
- **効果**: 開発者の活動量が明確に増加
|
||||||
|
- **特徴**: 全社導入で積極活用を推進
|
||||||
|
|
||||||
|
#### TIS株式会社
|
||||||
|
- **生産性向上**: 8割以上のユーザーが実感
|
||||||
|
- **品質向上**: 約7割のユーザーが実感
|
||||||
|
- **注目点**: アソシエイトエンジニア(若手)への効果が特に高い
|
||||||
|
|
||||||
|
#### ZOZO
|
||||||
|
- **実績データ** (2023/12/16 - 2024/02/12):
|
||||||
|
- Total Accepts: 108,961
|
||||||
|
- Acceptance Rate: 23.59%
|
||||||
|
- Lines of Code Accepted: 183,943
|
||||||
|
|
||||||
|
#### Accenture(グローバル)
|
||||||
|
- **タスク完了時間**: 平均**55%短縮**
|
||||||
|
- **実験期間**: 約4ヶ月間
|
||||||
|
- **規模**: 大規模な開発チームで検証
|
||||||
|
|
||||||
|
### 研究による効果検証
|
||||||
|
|
||||||
|
#### 大規模実験の結果(2024年9月発表)
|
||||||
|
- **Microsoft**: 7ヶ月間の実験
|
||||||
|
- **Accenture**: 4ヶ月間の実験
|
||||||
|
- **Fortune 100企業**: 2ヶ月間の実験
|
||||||
|
- **結論**: 生産性向上効果が客観的に証明された
|
||||||
|
|
||||||
|
### 将来予測
|
||||||
|
|
||||||
|
- **2028年までの予測**:
|
||||||
|
- 90%の企業のソフトウェアエンジニアがAIコードアシスタントを使用
|
||||||
|
- 2024年初頭の14%未満から大幅増加
|
||||||
|
|
||||||
|
## 💡 実践的な活用のポイント
|
||||||
|
|
||||||
|
### 1. 段階的な導入
|
||||||
|
- まずは小規模チームやプロジェクトで試験導入
|
||||||
|
- 効果を測定してから全社展開
|
||||||
|
- 社内勉強会やナレッジ共有の仕組みを構築
|
||||||
|
|
||||||
|
### 2. 既存ツールからの移行
|
||||||
|
- JIRAからGitHub Projectsへの段階的移行
|
||||||
|
- JenkinsからGitHub Actionsへの切り替え
|
||||||
|
- ConfluenceからGitHub Wiki/Pagesへの文書移行
|
||||||
|
|
||||||
|
### 3. 投資対効果の測定
|
||||||
|
- 開発速度の定量的測定
|
||||||
|
- コスト削減効果の可視化
|
||||||
|
- 開発者満足度の調査
|
||||||
|
|
||||||
|
### 4. セキュリティとコンプライアンス
|
||||||
|
- GitHub Advanced Securityの活用
|
||||||
|
- Dependabotによる脆弱性管理
|
||||||
|
- Branch Protection Rulesの適切な設定
|
||||||
|
|
||||||
|
## 🎯 まとめ
|
||||||
|
|
||||||
|
2024年のGitHub活用事例から見えてくる主要なトレンド:
|
||||||
|
|
||||||
|
1. **AI駆動開発の主流化**: GitHub Copilotによる生産性向上が実証済み
|
||||||
|
2. **オールインワンプラットフォーム化**: 外部ツールからGitHub機能への統合が進行
|
||||||
|
3. **コスト最適化**: セルフホストランナーやローカルCI実行によるコスト削減
|
||||||
|
4. **日本企業の積極採用**: 大手企業を中心に本格的な活用が進む
|
||||||
|
|
||||||
|
これらの事例は、GitHubが単なるコード管理ツールから、開発プロセス全体を支える統合プラットフォームへと進化していることを示しています。
|
||||||
|
|
@ -62,6 +62,20 @@ description: "外部ツールに依存せず、GitHub一つで開発業務を完
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
### 📊 実践事例集
|
||||||
|
|
||||||
|
<div class="case-study-section">
|
||||||
|
<a href="case-studies/index.html" class="case-study-banner">
|
||||||
|
<h3>🚀 2024年版 GitHub活用事例集</h3>
|
||||||
|
<p>実際の企業・組織での導入事例から学ぶベストプラクティス</p>
|
||||||
|
<div class="case-study-highlights">
|
||||||
|
<span class="highlight">💡 日立製作所: コード生成率99%達成</span>
|
||||||
|
<span class="highlight">⚡ Accenture: タスク完了時間55%短縮</span>
|
||||||
|
<span class="highlight">🎯 DeNA: 大規模CI/CD最適化</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
## 🎓 学習の進め方
|
## 🎓 学習の進め方
|
||||||
|
|
||||||
### 初心者の方
|
### 初心者の方
|
||||||
|
|
@ -242,6 +256,53 @@ gh issue create --title "プロジェクト初期設定" --body "GitHub機能の
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ケーススタディセクション */
|
||||||
|
.case-study-section {
|
||||||
|
margin: 3rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-study-banner {
|
||||||
|
display: block;
|
||||||
|
background: linear-gradient(135deg, #28a745 0%, #20c997 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 10px;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-study-banner:hover {
|
||||||
|
transform: translateY(-3px);
|
||||||
|
box-shadow: 0 8px 20px rgba(40, 167, 69, 0.3);
|
||||||
|
text-decoration: none;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-study-banner h3 {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-study-banner p {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
opacity: 0.9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-study-highlights {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 1rem;
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight {
|
||||||
|
background: rgba(255, 255, 255, 0.2);
|
||||||
|
padding: 0.5rem 1rem;
|
||||||
|
border-radius: 20px;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
backdrop-filter: blur(10px);
|
||||||
|
}
|
||||||
|
|
||||||
/* レスポンシブ対応 */
|
/* レスポンシブ対応 */
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.features-grid,
|
.features-grid,
|
||||||
|
|
@ -257,5 +318,13 @@ gh issue create --title "プロジェクト初期設定" --body "GitHub機能の
|
||||||
.stat-item h3 {
|
.stat-item h3 {
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.case-study-highlights {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -410,4 +410,28 @@ GitHub リポジトリの基本機能をマスターすることで:
|
||||||
✅ **リリース管理** - タグとリリース機能による体系的なバージョン管理
|
✅ **リリース管理** - タグとリリース機能による体系的なバージョン管理
|
||||||
✅ **セキュリティ** - 適切な設定による安全なコード管理
|
✅ **セキュリティ** - 適切な設定による安全なコード管理
|
||||||
|
|
||||||
次は[Issue管理編](02-issues-management.md)で、プロジェクト管理の基礎を学習しましょう。
|
## 🔗 関連ガイド
|
||||||
|
|
||||||
|
- **次のステップ**: [Issues管理編](02-issues-management.md) - プロジェクト管理の基礎
|
||||||
|
- **さらに学習**: [Pull Request編](03-pull-requests.md) - コードレビューフロー
|
||||||
|
- **プロジェクト管理**: [GitHub Projects編](04-github-projects.md) - アジャイル開発手法
|
||||||
|
- **自動化**: [GitHub Actions編](05-github-actions.md) - CI/CD自動化
|
||||||
|
- **セキュリティ**: [GitHub Security編](06-github-security.md) - 総合セキュリティ
|
||||||
|
- **Web公開**: [GitHub Pages編](07-github-pages.md) - Webサイト・ドキュメント
|
||||||
|
- **総合ガイド**: [GitHub完全活用ガイド](../GITHUB_COMPLETE_GUIDE.md) - 全機能の詳細解説
|
||||||
|
|
||||||
|
## 📖 学習フロー
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph LR
|
||||||
|
A[リポジトリ基礎] --> B[Issues管理]
|
||||||
|
B --> C[Pull Request]
|
||||||
|
C --> D[GitHub Projects]
|
||||||
|
D --> E[完全活用]
|
||||||
|
|
||||||
|
style A fill:#e1f5fe
|
||||||
|
style B fill:#f3e5f5
|
||||||
|
style C fill:#e8f5e8
|
||||||
|
style D fill:#fff3e0
|
||||||
|
style E fill:#fce4ec
|
||||||
|
```
|
||||||
|
|
@ -590,4 +590,29 @@ GitHub Issues を効果的に活用することで:
|
||||||
✅ **コスト削減** - 有料ツールからの移行によるコスト最適化
|
✅ **コスト削減** - 有料ツールからの移行によるコスト最適化
|
||||||
✅ **チーム協調** - 透明性の高い情報共有とコミュニケーション
|
✅ **チーム協調** - 透明性の高い情報共有とコミュニケーション
|
||||||
|
|
||||||
|
## 🔗 関連ガイド
|
||||||
|
|
||||||
|
- **前のステップ**: [リポジトリ基礎編](01-repository-basics.md) - GitHub の基本操作
|
||||||
|
- **次のステップ**: [Pull Request編](03-pull-requests.md) - コードレビューとマージプロセス
|
||||||
|
- **さらに学習**: [GitHub Projects編](04-github-projects.md) - アジャイル開発プロジェクト管理
|
||||||
|
- **自動化**: [GitHub Actions編](05-github-actions.md) - Issue自動化・CI/CD
|
||||||
|
- **セキュリティ**: [GitHub Security編](06-github-security.md) - セキュリティ課題管理
|
||||||
|
- **総合ガイド**: [GitHub完全活用ガイド](../GITHUB_COMPLETE_GUIDE.md) - 全機能の詳細解説
|
||||||
|
|
||||||
|
## 📖 学習フロー
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph LR
|
||||||
|
A[リポジトリ基礎] --> B[Issues管理]
|
||||||
|
B --> C[Pull Request]
|
||||||
|
C --> D[GitHub Projects]
|
||||||
|
D --> E[完全活用]
|
||||||
|
|
||||||
|
style A fill:#f3e5f5
|
||||||
|
style B fill:#e1f5fe
|
||||||
|
style C fill:#e8f5e8
|
||||||
|
style D fill:#fff3e0
|
||||||
|
style E fill:#fce4ec
|
||||||
|
```
|
||||||
|
|
||||||
次は[Pull Request編](03-pull-requests.md)で、コードレビューとマージプロセスを学習しましょう。
|
次は[Pull Request編](03-pull-requests.md)で、コードレビューとマージプロセスを学習しましょう。
|
||||||
936
features/03-pull-requests.md
Normal file
936
features/03-pull-requests.md
Normal file
|
|
@ -0,0 +1,936 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: "Pull Request完全ガイド"
|
||||||
|
description: "効率的なコードレビューフローとPull Request最適化の完全解説"
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🔄 Pull Request - 効率的なコードレビューフロー
|
||||||
|
|
||||||
|
GitHubのPull Request機能を最大限活用して、高品質なコード開発とチーム協調を実現する完全ガイド。外部ツールに依存せず、GitHub標準機能のみで企業レベルのコードレビュープロセスを構築します。
|
||||||
|
|
||||||
|
## 🎯 学習目標
|
||||||
|
|
||||||
|
- Pull Requestワークフローの完全理解と最適化
|
||||||
|
- 効率的なコードレビュープロセスの構築
|
||||||
|
- Draft PR、Suggested Changes等の高度機能活用
|
||||||
|
- 自動化による品質向上とレビュー効率化
|
||||||
|
- 外部ツール(GitLab MR、Bitbucket PR等)との比較理解
|
||||||
|
|
||||||
|
## 📚 目次
|
||||||
|
|
||||||
|
1. [Pull Request基本ワークフロー](#1-pull-request基本ワークフロー)
|
||||||
|
2. [効果的なPR作成方法](#2-効果的なpr作成方法)
|
||||||
|
3. [コードレビューのベストプラクティス](#3-コードレビューのベストプラクティス)
|
||||||
|
4. [高度なPR機能活用](#4-高度なpr機能活用)
|
||||||
|
5. [自動化とCI/CD連携](#5-自動化とcicd連携)
|
||||||
|
6. [外部ツールとの比較](#6-外部ツールとの比較)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Pull Request基本ワークフロー
|
||||||
|
|
||||||
|
### 🌊 GitHub Flowによる開発プロセス
|
||||||
|
|
||||||
|
#### 理想的なPRライフサイクル
|
||||||
|
```mermaid
|
||||||
|
graph LR
|
||||||
|
A[Issue作成] --> B[ブランチ作成]
|
||||||
|
B --> C[コード実装]
|
||||||
|
C --> D[Draft PR作成]
|
||||||
|
D --> E[CI/CD実行]
|
||||||
|
E --> F[レビュー依頼]
|
||||||
|
F --> G[コードレビュー]
|
||||||
|
G --> H[修正対応]
|
||||||
|
H --> I[承認]
|
||||||
|
I --> J[マージ]
|
||||||
|
J --> K[ブランチ削除]
|
||||||
|
K --> L[デプロイ]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 基本的なPR作成手順
|
||||||
|
|
||||||
|
**1. 機能ブランチの作成**
|
||||||
|
```bash
|
||||||
|
# メインブランチから最新を取得
|
||||||
|
git checkout main
|
||||||
|
git pull origin main
|
||||||
|
|
||||||
|
# 機能ブランチを作成
|
||||||
|
git checkout -b feature/user-authentication
|
||||||
|
|
||||||
|
# または GitHub CLI で
|
||||||
|
gh repo fork --clone
|
||||||
|
git checkout -b feature/user-authentication
|
||||||
|
```
|
||||||
|
|
||||||
|
**2. 実装とコミット**
|
||||||
|
```bash
|
||||||
|
# 変更を実装
|
||||||
|
# ... コーディング ...
|
||||||
|
|
||||||
|
# ステージングとコミット
|
||||||
|
git add .
|
||||||
|
git commit -m "feat(auth): implement user login functionality
|
||||||
|
|
||||||
|
- Add login form component
|
||||||
|
- Implement JWT authentication
|
||||||
|
- Add password validation
|
||||||
|
- Update user state management
|
||||||
|
|
||||||
|
Closes #123"
|
||||||
|
|
||||||
|
# リモートにプッシュ
|
||||||
|
git push origin feature/user-authentication
|
||||||
|
```
|
||||||
|
|
||||||
|
**3. Pull Request作成**
|
||||||
|
```bash
|
||||||
|
# GitHub CLI でPR作成
|
||||||
|
gh pr create \
|
||||||
|
--title "feat: User authentication system" \
|
||||||
|
--body-file .github/pull_request_template.md \
|
||||||
|
--assignee @me \
|
||||||
|
--reviewer team-lead,senior-dev \
|
||||||
|
--label "enhancement,frontend"
|
||||||
|
|
||||||
|
# または Web UI で作成
|
||||||
|
# https://github.com/username/repo/compare/main...feature/user-authentication
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📋 効果的なPRタイトルとコミットメッセージ
|
||||||
|
|
||||||
|
#### Conventional Commits準拠の形式
|
||||||
|
```bash
|
||||||
|
# タイプ別の例
|
||||||
|
feat(auth): add two-factor authentication support
|
||||||
|
fix(api): resolve timeout issue in user endpoint
|
||||||
|
docs(readme): update installation instructions
|
||||||
|
style(css): improve responsive design for mobile
|
||||||
|
refactor(utils): simplify date formatting functions
|
||||||
|
test(auth): add comprehensive login flow tests
|
||||||
|
chore(deps): update dependencies to latest versions
|
||||||
|
ci(actions): optimize build performance
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 詳細なコミットメッセージテンプレート
|
||||||
|
```
|
||||||
|
<type>(<scope>): <short description>
|
||||||
|
|
||||||
|
<detailed description explaining the why and what>
|
||||||
|
|
||||||
|
Breaking Changes:
|
||||||
|
- List any breaking changes
|
||||||
|
|
||||||
|
Closes: #123, #456
|
||||||
|
Related: #789
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 効果的なPR作成方法
|
||||||
|
|
||||||
|
### 📝 PRテンプレートの活用
|
||||||
|
|
||||||
|
#### 包括的なPRテンプレート
|
||||||
|
```markdown
|
||||||
|
## 📋 変更内容の要約
|
||||||
|
<!-- このPRで何を変更したかを簡潔に説明 -->
|
||||||
|
|
||||||
|
## 🎯 関連Issue・タスク
|
||||||
|
Fixes #(issue番号)
|
||||||
|
Closes #(issue番号)
|
||||||
|
Related to #(issue番号)
|
||||||
|
|
||||||
|
## 🔄 変更の種類
|
||||||
|
- [ ] 🐛 バグ修正
|
||||||
|
- [ ] ✨ 新機能
|
||||||
|
- [ ] 💥 破壊的変更
|
||||||
|
- [ ] 📚 ドキュメント更新
|
||||||
|
- [ ] 🎨 スタイル改善(機能に影響なし)
|
||||||
|
- [ ] ♻️ リファクタリング
|
||||||
|
- [ ] ⚡ パフォーマンス改善
|
||||||
|
- [ ] ✅ テスト追加・修正
|
||||||
|
- [ ] 🔧 設定・ビルドシステム変更
|
||||||
|
|
||||||
|
## 🧪 テスト方法
|
||||||
|
<!-- この変更をどのようにテストしたか -->
|
||||||
|
|
||||||
|
### 手動テスト手順
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
|
||||||
|
### 自動テスト
|
||||||
|
- [ ] 単体テスト追加・更新
|
||||||
|
- [ ] 統合テスト追加・更新
|
||||||
|
- [ ] E2Eテスト追加・更新
|
||||||
|
- [ ] 既存テストがすべて通ることを確認
|
||||||
|
|
||||||
|
## 📸 スクリーンショット・デモ
|
||||||
|
<!-- UIに変更がある場合 -->
|
||||||
|
|
||||||
|
| Before | After |
|
||||||
|
|--------|-------|
|
||||||
|
| | |
|
||||||
|
|
||||||
|
## 🔍 レビュー観点
|
||||||
|
<!-- レビュアーに特に見てほしいポイント -->
|
||||||
|
|
||||||
|
### 重点確認項目
|
||||||
|
- [ ] 機能要件を満たしているか
|
||||||
|
- [ ] エラーハンドリングが適切か
|
||||||
|
- [ ] パフォーマンスへの影響はないか
|
||||||
|
- [ ] セキュリティ面で問題ないか
|
||||||
|
|
||||||
|
## ✅ 作成者チェックリスト
|
||||||
|
- [ ] コードが自己文書化されている
|
||||||
|
- [ ] 適切なコメントが追加されている
|
||||||
|
- [ ] ドキュメントが更新されている
|
||||||
|
- [ ] テストカバレッジが十分
|
||||||
|
- [ ] 破壊的変更がある場合、CHANGELOGに記載
|
||||||
|
- [ ] セキュリティの観点で問題がない
|
||||||
|
- [ ] モバイル・レスポンシブ対応確認済み
|
||||||
|
|
||||||
|
## 📝 その他・備考
|
||||||
|
<!-- その他、レビュアーが知っておくべき情報 -->
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🎨 Draft PRの効果的活用
|
||||||
|
|
||||||
|
#### Draft PRの使用場面
|
||||||
|
```bash
|
||||||
|
# 作業進行中のフィードバック取得
|
||||||
|
gh pr create --draft \
|
||||||
|
--title "WIP: User authentication system" \
|
||||||
|
--body "作業中のコードです。アプローチについてフィードバックをお願いします"
|
||||||
|
|
||||||
|
# 設計相談・アーキテクチャレビュー用
|
||||||
|
gh pr create --draft \
|
||||||
|
--title "RFC: New API architecture proposal" \
|
||||||
|
--body "新しいAPI設計について議論したく、Draft PRを作成しました"
|
||||||
|
|
||||||
|
# CI/CDテスト用
|
||||||
|
gh pr create --draft \
|
||||||
|
--title "Test: CI pipeline validation" \
|
||||||
|
--body "新しいワークフローのテスト用Draft PR"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Draft → Ready フロー
|
||||||
|
```bash
|
||||||
|
# レビュー準備完了時
|
||||||
|
gh pr ready
|
||||||
|
|
||||||
|
# またはWeb UIで「Ready for review」ボタンをクリック
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. コードレビューのベストプラクティス
|
||||||
|
|
||||||
|
### 👥 効果的なレビュープロセス
|
||||||
|
|
||||||
|
#### レビュアーの責務
|
||||||
|
```markdown
|
||||||
|
### 🔍 確認観点チェックリスト
|
||||||
|
|
||||||
|
#### 機能性・要件
|
||||||
|
- [ ] 要件仕様を満たしているか
|
||||||
|
- [ ] ユーザーストーリーの受け入れ条件をクリアしているか
|
||||||
|
- [ ] エッジケースが考慮されているか
|
||||||
|
- [ ] エラーハンドリングが適切か
|
||||||
|
|
||||||
|
#### コード品質
|
||||||
|
- [ ] 可読性:命名規則、コメント、構造
|
||||||
|
- [ ] 保守性:モジュール化、再利用性
|
||||||
|
- [ ] DRY原則:重複コードの排除
|
||||||
|
- [ ] SOLID原則:設計原則の遵守
|
||||||
|
|
||||||
|
#### パフォーマンス
|
||||||
|
- [ ] 不要な処理・ループがないか
|
||||||
|
- [ ] メモリ使用量は適切か
|
||||||
|
- [ ] データベースクエリは最適化されているか
|
||||||
|
- [ ] キャッシュ戦略は適切か
|
||||||
|
|
||||||
|
#### セキュリティ
|
||||||
|
- [ ] 入力値検証が適切か
|
||||||
|
- [ ] 認証・認可が正しく実装されているか
|
||||||
|
- [ ] 機密情報の漏洩リスクはないか
|
||||||
|
- [ ] SQLインジェクション等の脆弱性対策
|
||||||
|
|
||||||
|
#### テスト
|
||||||
|
- [ ] テストカバレッジは十分か
|
||||||
|
- [ ] テストケースは適切か
|
||||||
|
- [ ] モックの使用は適切か
|
||||||
|
- [ ] エッジケースのテストがあるか
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 建設的なレビューコメント例
|
||||||
|
```markdown
|
||||||
|
# ❌ 避けるべきコメント
|
||||||
|
これはダメです。
|
||||||
|
|
||||||
|
# ✅ 建設的なコメント
|
||||||
|
この実装だと、将来的にスケールした際にパフォーマンス問題が発生する可能性があります。
|
||||||
|
以下のような改善案はいかがでしょうか?
|
||||||
|
|
||||||
|
```suggestion
|
||||||
|
// パフォーマンス改善案
|
||||||
|
const memoizedResult = useMemo(() => {
|
||||||
|
return expensiveCalculation(data);
|
||||||
|
}, [data]);
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🎯 Suggested Changes機能の活用
|
||||||
|
|
||||||
|
#### 具体的な修正提案
|
||||||
|
```markdown
|
||||||
|
# レビューコメントで具体的な修正案を提示
|
||||||
|
|
||||||
|
```suggestion
|
||||||
|
// 修正前
|
||||||
|
const user = users.find(u => u.id === userId);
|
||||||
|
if (user) {
|
||||||
|
return user.name;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
|
||||||
|
// 修正後:Optional chainingとNullish coalescingを使用
|
||||||
|
return users.find(u => u.id === userId)?.name ?? null;
|
||||||
|
```
|
||||||
|
|
||||||
|
この修正により、コードがより簡潔で読みやすくなります。
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 複数行の修正提案
|
||||||
|
```markdown
|
||||||
|
```suggestion
|
||||||
|
const validateUser = (userData) => {
|
||||||
|
// バリデーションロジックの改善
|
||||||
|
const errors = {};
|
||||||
|
|
||||||
|
if (!userData.email || !isValidEmail(userData.email)) {
|
||||||
|
errors.email = 'Valid email is required';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!userData.password || userData.password.length < 8) {
|
||||||
|
errors.password = 'Password must be at least 8 characters';
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
isValid: Object.keys(errors).length === 0,
|
||||||
|
errors
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📊 レビュー効率化
|
||||||
|
|
||||||
|
#### レビュー自動化設定
|
||||||
|
```yaml
|
||||||
|
# .github/CODEOWNERS
|
||||||
|
# レビュー担当者の自動アサイン
|
||||||
|
|
||||||
|
# デフォルト
|
||||||
|
* @team-lead @senior-developer
|
||||||
|
|
||||||
|
# フロントエンド
|
||||||
|
/src/components/ @frontend-team @ui-specialist
|
||||||
|
/src/styles/ @frontend-team
|
||||||
|
|
||||||
|
# バックエンド
|
||||||
|
/api/ @backend-team @architecture-lead
|
||||||
|
/database/ @backend-team @database-specialist
|
||||||
|
|
||||||
|
# セキュリティ関連
|
||||||
|
/auth/ @security-team @team-lead
|
||||||
|
/encryption/ @security-team
|
||||||
|
|
||||||
|
# インフラ・DevOps
|
||||||
|
/.github/ @devops-team
|
||||||
|
/docker/ @devops-team
|
||||||
|
/kubernetes/ @devops-team
|
||||||
|
|
||||||
|
# ドキュメント
|
||||||
|
/docs/ @tech-writer @team-lead
|
||||||
|
README.md @tech-writer
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 高度なPR機能活用
|
||||||
|
|
||||||
|
### 🔄 マージ戦略の選択
|
||||||
|
|
||||||
|
#### マージオプションの使い分け
|
||||||
|
```bash
|
||||||
|
# 1. Merge commit(履歴を保持)
|
||||||
|
gh pr merge --merge
|
||||||
|
|
||||||
|
# 2. Squash and merge(履歴を整理)
|
||||||
|
gh pr merge --squash
|
||||||
|
|
||||||
|
# 3. Rebase and merge(リニア履歴)
|
||||||
|
gh pr merge --rebase
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 推奨マージ戦略
|
||||||
|
```markdown
|
||||||
|
### プロジェクト規模別の推奨方法
|
||||||
|
|
||||||
|
#### 小〜中規模プロジェクト
|
||||||
|
- **Squash and merge** を推奨
|
||||||
|
- 機能単位でのクリーンな履歴
|
||||||
|
- 簡潔なcommit message
|
||||||
|
|
||||||
|
#### 大規模プロジェクト
|
||||||
|
- **Merge commit** を推奨
|
||||||
|
- 詳細な作業履歴の保持
|
||||||
|
- リバート時の容易性
|
||||||
|
|
||||||
|
#### オープンソース
|
||||||
|
- **Rebase and merge** を推奨
|
||||||
|
- リニアで美しい履歴
|
||||||
|
- Bisectの効率性
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔒 ブランチ保護ルール
|
||||||
|
|
||||||
|
#### 推奨保護設定
|
||||||
|
```markdown
|
||||||
|
### main ブランチ保護ルール
|
||||||
|
|
||||||
|
#### 基本設定
|
||||||
|
- ✅ Require a pull request before merging
|
||||||
|
- ✅ Require approvals: 2人以上(チーム規模に応じて調整)
|
||||||
|
- ✅ Dismiss stale PR approvals when new commits are pushed
|
||||||
|
- ✅ Require review from code owners
|
||||||
|
|
||||||
|
#### ステータスチェック
|
||||||
|
- ✅ Require status checks to pass before merging
|
||||||
|
- ✅ Require branches to be up to date before merging
|
||||||
|
- 必須チェック項目:
|
||||||
|
- continuous-integration/github-actions
|
||||||
|
- security/code-scanning
|
||||||
|
- testing/unit-tests
|
||||||
|
- testing/e2e-tests
|
||||||
|
|
||||||
|
#### 高度な設定
|
||||||
|
- ✅ Require conversation resolution before merging
|
||||||
|
- ✅ Require linear history(必要に応じて)
|
||||||
|
- ✅ Include administrators(管理者も同様のルールに従う)
|
||||||
|
- ❌ Allow force pushes
|
||||||
|
- ❌ Allow deletions
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🚀 プルリクエスト自動化
|
||||||
|
|
||||||
|
#### 自動ラベリング
|
||||||
|
```yaml
|
||||||
|
# .github/workflows/pr-labeler.yml
|
||||||
|
name: PR Labeler
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [opened, edited, synchronize]
|
||||||
|
|
||||||
|
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":
|
||||||
|
- "src/components/**/*"
|
||||||
|
- "src/pages/**/*"
|
||||||
|
- "**/*.vue"
|
||||||
|
- "**/*.jsx"
|
||||||
|
|
||||||
|
"area:backend":
|
||||||
|
- "api/**/*"
|
||||||
|
- "server/**/*"
|
||||||
|
- "**/*.py"
|
||||||
|
- "**/*.go"
|
||||||
|
|
||||||
|
"area:database":
|
||||||
|
- "migrations/**/*"
|
||||||
|
- "**/*.sql"
|
||||||
|
- "database/**/*"
|
||||||
|
|
||||||
|
"size:small":
|
||||||
|
- any: ['**/*']
|
||||||
|
count-within: 1..10
|
||||||
|
|
||||||
|
"size:medium":
|
||||||
|
- any: ['**/*']
|
||||||
|
count-within: 11..50
|
||||||
|
|
||||||
|
"size:large":
|
||||||
|
- any: ['**/*']
|
||||||
|
count-within: 51..
|
||||||
|
```
|
||||||
|
|
||||||
|
#### レビュアー自動アサイン
|
||||||
|
```yaml
|
||||||
|
# .github/workflows/assign-reviewers.yml
|
||||||
|
name: Auto Assign Reviewers
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [opened, ready_for_review]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
assign:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/github-script@v6
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const pr = context.payload.pull_request;
|
||||||
|
const files = await github.rest.pulls.listFiles({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
pull_number: pr.number
|
||||||
|
});
|
||||||
|
|
||||||
|
let reviewers = [];
|
||||||
|
const fileNames = files.data.map(f => f.filename);
|
||||||
|
|
||||||
|
// ファイルパスベースでレビュアー決定
|
||||||
|
if (fileNames.some(f => f.includes('frontend'))) {
|
||||||
|
reviewers.push('frontend-lead');
|
||||||
|
}
|
||||||
|
if (fileNames.some(f => f.includes('backend'))) {
|
||||||
|
reviewers.push('backend-lead');
|
||||||
|
}
|
||||||
|
if (fileNames.some(f => f.includes('security'))) {
|
||||||
|
reviewers.push('security-team');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (reviewers.length > 0) {
|
||||||
|
await github.rest.pulls.requestReviewers({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
pull_number: pr.number,
|
||||||
|
reviewers: reviewers
|
||||||
|
});
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. 自動化とCI/CD連携
|
||||||
|
|
||||||
|
### ⚡ GitHub Actions との統合
|
||||||
|
|
||||||
|
#### 包括的なPRチェックワークフロー
|
||||||
|
```yaml
|
||||||
|
# .github/workflows/pr-checks.yml
|
||||||
|
name: PR Quality Checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: [main, develop]
|
||||||
|
types: [opened, synchronize, reopened]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
code-quality:
|
||||||
|
name: Code Quality
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '18'
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Lint check
|
||||||
|
run: npm run lint
|
||||||
|
|
||||||
|
- name: Type check
|
||||||
|
run: npm run type-check
|
||||||
|
|
||||||
|
- name: Format check
|
||||||
|
run: npm run format:check
|
||||||
|
|
||||||
|
security-scan:
|
||||||
|
name: Security Scan
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
security-events: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Run Trivy vulnerability scanner
|
||||||
|
uses: aquasecurity/trivy-action@master
|
||||||
|
with:
|
||||||
|
scan-type: 'fs'
|
||||||
|
scan-ref: '.'
|
||||||
|
format: 'sarif'
|
||||||
|
output: 'trivy-results.sarif'
|
||||||
|
|
||||||
|
- name: Upload Trivy scan results
|
||||||
|
uses: github/codeql-action/upload-sarif@v2
|
||||||
|
with:
|
||||||
|
sarif_file: 'trivy-results.sarif'
|
||||||
|
|
||||||
|
test:
|
||||||
|
name: Test Suite
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node-version: [16, 18, 20]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Node.js ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: npm run test:coverage
|
||||||
|
|
||||||
|
- name: Upload coverage reports
|
||||||
|
uses: codecov/codecov-action@v3
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.CODECOV_TOKEN }}
|
||||||
|
|
||||||
|
e2e-test:
|
||||||
|
name: E2E Tests
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '18'
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Install Playwright
|
||||||
|
run: npx playwright install --with-deps
|
||||||
|
|
||||||
|
- name: Run E2E tests
|
||||||
|
run: npm run test:e2e
|
||||||
|
|
||||||
|
- name: Upload test results
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
name: playwright-report
|
||||||
|
path: playwright-report/
|
||||||
|
|
||||||
|
performance:
|
||||||
|
name: Performance Check
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '18'
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Build project
|
||||||
|
run: npm run build
|
||||||
|
|
||||||
|
- name: Run Lighthouse CI
|
||||||
|
uses: treosh/lighthouse-ci-action@v9
|
||||||
|
with:
|
||||||
|
configPath: './lighthouserc.js'
|
||||||
|
uploadArtifacts: true
|
||||||
|
temporaryPublicStorage: true
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📊 PR品質メトリクス
|
||||||
|
|
||||||
|
#### 自動品質レポート生成
|
||||||
|
```yaml
|
||||||
|
# .github/workflows/pr-metrics.yml
|
||||||
|
name: PR Metrics
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [closed]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
metrics:
|
||||||
|
if: github.event.pull_request.merged == true
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Calculate PR metrics
|
||||||
|
uses: actions/github-script@v6
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const pr = context.payload.pull_request;
|
||||||
|
|
||||||
|
// PR統計の計算
|
||||||
|
const createdAt = new Date(pr.created_at);
|
||||||
|
const mergedAt = new Date(pr.merged_at);
|
||||||
|
const timeTaken = (mergedAt - createdAt) / (1000 * 60 * 60); // 時間
|
||||||
|
|
||||||
|
// ファイル変更数の取得
|
||||||
|
const files = await github.rest.pulls.listFiles({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
pull_number: pr.number
|
||||||
|
});
|
||||||
|
|
||||||
|
const stats = {
|
||||||
|
prNumber: pr.number,
|
||||||
|
title: pr.title,
|
||||||
|
author: pr.user.login,
|
||||||
|
timeToMerge: timeTaken.toFixed(2),
|
||||||
|
filesChanged: files.data.length,
|
||||||
|
additions: pr.additions,
|
||||||
|
deletions: pr.deletions,
|
||||||
|
reviewers: pr.requested_reviewers.map(r => r.login),
|
||||||
|
comments: pr.review_comments + pr.comments
|
||||||
|
};
|
||||||
|
|
||||||
|
// 統計をIssueコメントに投稿
|
||||||
|
await github.rest.issues.createComment({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
issue_number: pr.number,
|
||||||
|
body: `## 📊 PR Statistics
|
||||||
|
|
||||||
|
- **⏱️ Time to merge**: ${stats.timeToMerge} hours
|
||||||
|
- **📁 Files changed**: ${stats.filesChanged}
|
||||||
|
- **➕ Additions**: ${stats.additions}
|
||||||
|
- **➖ Deletions**: ${stats.deletions}
|
||||||
|
- **💬 Comments**: ${stats.comments}
|
||||||
|
- **👥 Reviewers**: ${stats.reviewers.join(', ') || 'None'}
|
||||||
|
|
||||||
|
Thanks @${stats.author} for the contribution! 🎉`
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. 外部ツールとの比較
|
||||||
|
|
||||||
|
### 📊 機能比較マトリックス
|
||||||
|
|
||||||
|
| 機能 | GitHub PR | GitLab MR | Bitbucket PR | Azure DevOps | 備考 |
|
||||||
|
|------|-----------|-----------|--------------|--------------|------|
|
||||||
|
| **基本PR機能** | ✅ | ✅ | ✅ | ✅ | 全て対応 |
|
||||||
|
| **Draft PR** | ✅ | ✅ | ❌ | ✅ | Bitbucketは部分対応 |
|
||||||
|
| **Suggested Changes** | ✅ | ✅ | ❌ | ⚠️ | GitHubが最も使いやすい |
|
||||||
|
| **自動マージ** | ✅ | ✅ | ✅ | ✅ | 条件設定の柔軟性はGitHubが優秀 |
|
||||||
|
| **ブランチ保護** | ✅ | ✅ | ✅ | ✅ | 設定の詳細度はGitHubが最高 |
|
||||||
|
| **レビュアー自動アサイン** | ✅ | ✅ | ✅ | ✅ | CODEOWNERS機能 |
|
||||||
|
| **CI/CD統合** | ✅ | ✅ | ✅ | ✅ | Actions統合はシームレス |
|
||||||
|
| **コメント機能** | ✅ | ✅ | ✅ | ✅ | GitHub が最も直感的 |
|
||||||
|
| **モバイル対応** | ✅ | ⚠️ | ⚠️ | ⚠️ | GitHubモバイルアプリが優秀 |
|
||||||
|
| **API充実度** | ✅ | ✅ | ⚠️ | ✅ | GitHub REST/GraphQL API |
|
||||||
|
|
||||||
|
### 🔄 GitLab からの移行
|
||||||
|
|
||||||
|
#### 主要な差分と移行方法
|
||||||
|
|
||||||
|
**GitLab MR → GitHub PR 移行マッピング**
|
||||||
|
```markdown
|
||||||
|
### 機能対応表
|
||||||
|
|
||||||
|
| GitLab MR | GitHub PR | 移行方法 |
|
||||||
|
|-----------|-----------|----------|
|
||||||
|
| Merge Request | Pull Request | 1:1対応 |
|
||||||
|
| Draft MR | Draft PR | 機能同等 |
|
||||||
|
| WIP: タイトル | Draft PR | Draftフラグ使用 |
|
||||||
|
| Approval Rules | Branch Protection | 保護ルールで設定 |
|
||||||
|
| Merge Trains | Auto-merge | キューイング機能 |
|
||||||
|
| Squash Commits | Squash and merge | マージオプション |
|
||||||
|
| Cherry-pick | GitHub CLI | `gh pr checkout` + `git cherry-pick` |
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 移行スクリプト例
|
||||||
|
```python
|
||||||
|
# gitlab_to_github_pr_migration.py
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
class GitLabToGitHubMigrator:
|
||||||
|
def __init__(self, gitlab_token, github_token, gitlab_project_id, github_repo):
|
||||||
|
self.gitlab_token = gitlab_token
|
||||||
|
self.github_token = github_token
|
||||||
|
self.gitlab_project_id = gitlab_project_id
|
||||||
|
self.github_repo = github_repo
|
||||||
|
|
||||||
|
def migrate_merge_requests(self):
|
||||||
|
# GitLab MRsを取得
|
||||||
|
gitlab_mrs = self.fetch_gitlab_mrs()
|
||||||
|
|
||||||
|
for mr in gitlab_mrs:
|
||||||
|
if mr['state'] == 'merged':
|
||||||
|
# マージ済みMRの情報を記録
|
||||||
|
self.record_merged_mr(mr)
|
||||||
|
elif mr['state'] == 'opened':
|
||||||
|
# オープンMRをGitHub PRとして再作成
|
||||||
|
self.create_github_pr(mr)
|
||||||
|
|
||||||
|
def create_github_pr(self, gitlab_mr):
|
||||||
|
github_pr_data = {
|
||||||
|
'title': gitlab_mr['title'],
|
||||||
|
'head': gitlab_mr['source_branch'],
|
||||||
|
'base': gitlab_mr['target_branch'],
|
||||||
|
'body': self.convert_description(gitlab_mr['description']),
|
||||||
|
'draft': gitlab_mr['work_in_progress']
|
||||||
|
}
|
||||||
|
|
||||||
|
# GitHub API でPR作成
|
||||||
|
response = requests.post(
|
||||||
|
f"https://api.github.com/repos/{self.github_repo}/pulls",
|
||||||
|
headers={"Authorization": f"token {self.github_token}"},
|
||||||
|
json=github_pr_data
|
||||||
|
)
|
||||||
|
|
||||||
|
if response.status_code == 201:
|
||||||
|
print(f"Created PR: {github_pr_data['title']}")
|
||||||
|
else:
|
||||||
|
print(f"Failed to create PR: {response.text}")
|
||||||
|
```
|
||||||
|
|
||||||
|
### ⚖️ コスト・効率性比較
|
||||||
|
|
||||||
|
#### 年間運用コスト比較(100人チーム想定)
|
||||||
|
```markdown
|
||||||
|
### プラットフォーム別コスト分析
|
||||||
|
|
||||||
|
#### GitHub Enterprise
|
||||||
|
- **ライセンス**: $21,000/年
|
||||||
|
- **運用工数**: 最小限(SaaS)
|
||||||
|
- **学習コスト**: 低(広く普及)
|
||||||
|
- **合計**: $25,000/年
|
||||||
|
|
||||||
|
#### GitLab Premium
|
||||||
|
- **ライセンス**: $19,000/年
|
||||||
|
- **運用工数**: 中程度(自己管理オプション)
|
||||||
|
- **学習コスト**: 中(機能豊富)
|
||||||
|
- **合計**: $28,000/年
|
||||||
|
|
||||||
|
#### Bitbucket Premium
|
||||||
|
- **ライセンス**: $15,000/年
|
||||||
|
- **運用工数**: 中程度
|
||||||
|
- **学習コスト**: 中
|
||||||
|
- **合計**: $22,000/年
|
||||||
|
|
||||||
|
### 効率性指標
|
||||||
|
|
||||||
|
| 指標 | GitHub | GitLab | Bitbucket |
|
||||||
|
|------|--------|--------|-----------|
|
||||||
|
| **PR作成時間** | 30秒 | 45秒 | 60秒 |
|
||||||
|
| **レビュー効率** | 95% | 90% | 85% |
|
||||||
|
| **マージ時間** | 10秒 | 15秒 | 20秒 |
|
||||||
|
| **モバイル対応** | 100% | 70% | 60% |
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎓 実践演習
|
||||||
|
|
||||||
|
### 演習1: 完全なPRワークフロー実践
|
||||||
|
1. **Issue作成** - 機能要求の詳細化
|
||||||
|
2. **ブランチ作成** - 適切な命名規則
|
||||||
|
3. **実装** - コード品質を意識
|
||||||
|
4. **Draft PR作成** - 早期フィードバック取得
|
||||||
|
5. **CI/CD実行** - 自動テスト・品質チェック
|
||||||
|
6. **レビュー対応** - 建設的な議論
|
||||||
|
7. **マージ** - 適切な戦略選択
|
||||||
|
|
||||||
|
### 演習2: 高度なレビュー機能活用
|
||||||
|
1. **Suggested Changes** - 具体的修正提案
|
||||||
|
2. **CODEOWNERS** - 自動レビュアーアサイン
|
||||||
|
3. **ブランチ保護** - 品質ゲート設定
|
||||||
|
4. **自動化** - ラベリング・通知設定
|
||||||
|
|
||||||
|
### 演習3: チーム用PR規約策定
|
||||||
|
1. **PRテンプレート** - チーム標準化
|
||||||
|
2. **レビューガイドライン** - 観点の明確化
|
||||||
|
3. **マージルール** - 戦略の統一
|
||||||
|
4. **品質メトリクス** - 継続改善指標
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 関連リソース
|
||||||
|
|
||||||
|
### 公式ドキュメント
|
||||||
|
- [GitHub Pull Requests](https://docs.github.com/en/pull-requests)
|
||||||
|
- [Code Review Best Practices](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests)
|
||||||
|
- [Branch Protection Rules](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests)
|
||||||
|
|
||||||
|
### ツール・拡張機能
|
||||||
|
- [GitHub CLI](https://cli.github.com/)
|
||||||
|
- [GitHub Desktop](https://desktop.github.com/)
|
||||||
|
- [GitHub Mobile](https://github.com/mobile)
|
||||||
|
- [VS Code GitHub Pull Requests](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github)
|
||||||
|
|
||||||
|
### 参考記事
|
||||||
|
- [Conventional Commits](https://www.conventionalcommits.org/)
|
||||||
|
- [Git Flow vs GitHub Flow](https://lucamezzalira.com/2014/03/10/git-flow-vs-github-flow/)
|
||||||
|
- [Code Review Best Practices](https://smartbear.com/learn/code-review/best-practices-for-peer-code-review/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 まとめ
|
||||||
|
|
||||||
|
GitHub Pull Request機能を効果的に活用することで:
|
||||||
|
|
||||||
|
✅ **高品質なコード** - 体系的なレビュープロセスによる品質向上
|
||||||
|
✅ **チーム協調** - 透明性のある開発プロセス
|
||||||
|
✅ **知識共有** - レビューを通じた技術的成長
|
||||||
|
✅ **効率化** - 自動化による作業時間短縮
|
||||||
|
✅ **外部ツール不要** - GitHub標準機能のみで企業レベルの開発プロセス
|
||||||
|
|
||||||
|
## 🔗 関連ガイド
|
||||||
|
|
||||||
|
- **前のステップ**: [Issues管理編](02-issues-management.md) - タスク管理とプロジェクト追跡
|
||||||
|
- **次のステップ**: [GitHub Projects編](04-github-projects.md) - プロジェクト管理の最適化
|
||||||
|
- **基礎知識**: [リポジトリ基礎編](01-repository-basics.md) - ブランチ管理とタグ運用
|
||||||
|
- **自動化**: [GitHub Actions編](05-github-actions.md) - PR自動化・CI/CD
|
||||||
|
- **セキュリティ**: [GitHub Security編](06-github-security.md) - セキュアな開発プロセス
|
||||||
|
- **総合ガイド**: [GitHub完全活用ガイド](../GITHUB_COMPLETE_GUIDE.md) - 全機能の詳細解説
|
||||||
|
|
||||||
|
## 📖 学習フロー
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph LR
|
||||||
|
A[リポジトリ基礎] --> B[Issues管理]
|
||||||
|
B --> C[Pull Request]
|
||||||
|
C --> D[GitHub Projects]
|
||||||
|
D --> E[完全活用]
|
||||||
|
|
||||||
|
style A fill:#f3e5f5
|
||||||
|
style B fill:#f3e5f5
|
||||||
|
style C fill:#e1f5fe
|
||||||
|
style D fill:#e8f5e8
|
||||||
|
style E fill:#fce4ec
|
||||||
|
```
|
||||||
|
|
||||||
|
次は[GitHub Projects編](04-github-projects.md)で、プロジェクト管理の最適化を学習しましょう。
|
||||||
758
features/04-github-projects.md
Normal file
758
features/04-github-projects.md
Normal file
|
|
@ -0,0 +1,758 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: "GitHub Projects完全ガイド"
|
||||||
|
description: "アジャイル開発のためのプロジェクト管理とGitHub Projects V2完全活用法"
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📋 GitHub Projects - アジャイル開発のためのプロジェクト管理
|
||||||
|
|
||||||
|
GitHub Projects V2を活用して、Jira・Trello・Asanaなどの外部ツールに依存しない、統合されたプロジェクト管理環境を構築する完全ガイド。Issues・Pull Requestsとシームレスに連携し、開発から運用まで一元管理を実現します。
|
||||||
|
|
||||||
|
## 🎯 学習目標
|
||||||
|
|
||||||
|
- GitHub Projects V2の全機能理解と実践的活用
|
||||||
|
- アジャイル開発手法(スクラム・カンバン)の実装
|
||||||
|
- 外部プロジェクト管理ツールからの完全移行
|
||||||
|
- 自動化によるプロジェクト運用効率化
|
||||||
|
- チーム協働とステークホルダー管理の最適化
|
||||||
|
|
||||||
|
## 📚 目次
|
||||||
|
|
||||||
|
1. [GitHub Projects V2 概要](#1-github-projects-v2-概要)
|
||||||
|
2. [プロジェクト作成と基本設定](#2-プロジェクト作成と基本設定)
|
||||||
|
3. [ビューとワークフローの設計](#3-ビューとワークフローの設計)
|
||||||
|
4. [カスタムフィールドと自動化](#4-カスタムフィールドと自動化)
|
||||||
|
5. [アジャイル手法の実装](#5-アジャイル手法の実装)
|
||||||
|
6. [外部ツールからの移行](#6-外部ツールからの移行)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. GitHub Projects V2 概要
|
||||||
|
|
||||||
|
### 🚀 従来版との主要な違い
|
||||||
|
|
||||||
|
#### Projects V2 の革新的機能
|
||||||
|
```markdown
|
||||||
|
### V1 → V2 進化ポイント
|
||||||
|
|
||||||
|
#### データ構造
|
||||||
|
- **V1**: カード形式(制限的)
|
||||||
|
- **V2**: テーブル形式(柔軟性)
|
||||||
|
|
||||||
|
#### カスタマイズ性
|
||||||
|
- **V1**: 基本的なカラム移動のみ
|
||||||
|
- **V2**: カスタムフィールド・フィルタ・グループ化
|
||||||
|
|
||||||
|
#### 自動化
|
||||||
|
- **V1**: 限定的なワークフロー
|
||||||
|
- **V2**: 高度な自動化ルール
|
||||||
|
|
||||||
|
#### ビュー機能
|
||||||
|
- **V1**: カンバンビューのみ
|
||||||
|
- **V2**: カンバン・テーブル・ロードマップ・ガントチャート
|
||||||
|
|
||||||
|
#### スコープ
|
||||||
|
- **V1**: リポジトリレベル
|
||||||
|
- **V2**: 組織・個人・複数リポジトリ対応
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📊 外部ツールとの機能比較
|
||||||
|
|
||||||
|
| 機能 | GitHub Projects V2 | Jira | Trello | Asana | Linear | 備考 |
|
||||||
|
|------|-------------------|------|-------|-------|--------|------|
|
||||||
|
| **カンバンボード** | ✅ | ✅ | ✅ | ✅ | ✅ | 全て対応 |
|
||||||
|
| **ガントチャート** | ✅ | ✅ | ❌ | ✅ | ❌ | Projects V2で新対応 |
|
||||||
|
| **スプリント管理** | ✅ | ✅ | ⚠️ | ✅ | ✅ | カスタムフィールドで実現 |
|
||||||
|
| **バーンダウンチャート** | ⚠️ | ✅ | ❌ | ⚠️ | ✅ | APIで実現可能 |
|
||||||
|
| **カスタムフィールド** | ✅ | ✅ | ❌ | ✅ | ✅ | 高い柔軟性 |
|
||||||
|
| **自動化** | ✅ | ✅ | ⚠️ | ✅ | ✅ | GitHub Actions連携 |
|
||||||
|
| **レポート機能** | ⚠️ | ✅ | ❌ | ✅ | ✅ | Insights・API活用 |
|
||||||
|
| **コード連携** | ✅ | ⚠️ | ❌ | ❌ | ⚠️ | 最も強力 |
|
||||||
|
| **コスト(100人)** | $0-2,100 | $7,000 | $5,000 | $12,000 | $8,000 | 圧倒的にコスト効率良い |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. プロジェクト作成と基本設定
|
||||||
|
|
||||||
|
### 🛠️ プロジェクト初期設定
|
||||||
|
|
||||||
|
#### 新規プロジェクト作成
|
||||||
|
```bash
|
||||||
|
# GitHub CLI でプロジェクト作成
|
||||||
|
gh project create --title "Product Development Q1 2024" \
|
||||||
|
--body "Q1期の製品開発プロジェクト管理"
|
||||||
|
|
||||||
|
# または Web UI で作成
|
||||||
|
# https://github.com/users/USERNAME/projects/new
|
||||||
|
# または組織: https://github.com/orgs/ORGANIZATION/projects/new
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 基本設定の最適化
|
||||||
|
```markdown
|
||||||
|
### プロジェクト基本情報
|
||||||
|
|
||||||
|
#### 必須設定項目
|
||||||
|
- **プロジェクト名**: 明確で検索しやすい名前
|
||||||
|
- **説明**: 目的・スコープ・期間を明記
|
||||||
|
- **可視性**: Private(機密) / Public(オープンソース)
|
||||||
|
- **所有者**: 個人 / 組織
|
||||||
|
- **README**: プロジェクトの詳細情報
|
||||||
|
|
||||||
|
#### 推奨README構成
|
||||||
|
```markdown
|
||||||
|
# Product Development Q1 2024
|
||||||
|
|
||||||
|
## 🎯 プロジェクト概要
|
||||||
|
Q1期間中の製品開発における機能開発・バグ修正・リリース管理
|
||||||
|
|
||||||
|
## 📅 期間
|
||||||
|
2024年1月1日 - 2024年3月31日
|
||||||
|
|
||||||
|
## 👥 チーム構成
|
||||||
|
- **Product Manager**: @product-lead
|
||||||
|
- **Tech Lead**: @tech-lead
|
||||||
|
- **Frontend**: @frontend-team
|
||||||
|
- **Backend**: @backend-team
|
||||||
|
- **QA**: @qa-team
|
||||||
|
|
||||||
|
## 🎯 主要マイルストーン
|
||||||
|
- [ ] Alpha版リリース (1/31)
|
||||||
|
- [ ] Beta版リリース (2/28)
|
||||||
|
- [ ] 本番リリース (3/31)
|
||||||
|
|
||||||
|
## 📊 成功指標
|
||||||
|
- 機能完成率: 95%以上
|
||||||
|
- バグ解決率: 100%
|
||||||
|
- リリース予定遵守率: 90%以上
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔗 リポジトリとの連携設定
|
||||||
|
|
||||||
|
#### 複数リポジトリの統合管理
|
||||||
|
```bash
|
||||||
|
# プロジェクトにリポジトリを追加
|
||||||
|
gh project item-create PROJECT_ID \
|
||||||
|
--owner OWNER \
|
||||||
|
--repo REPO_NAME
|
||||||
|
|
||||||
|
# 複数リポジトリの一括追加例
|
||||||
|
REPOS=("frontend-app" "backend-api" "mobile-app" "documentation")
|
||||||
|
for repo in "${REPOS[@]}"; do
|
||||||
|
gh project item-create $PROJECT_ID --owner $OWNER --repo $repo
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. ビューとワークフローの設計
|
||||||
|
|
||||||
|
### 📊 多角的ビューの構築
|
||||||
|
|
||||||
|
#### 1. カンバンビュー(日常業務用)
|
||||||
|
```markdown
|
||||||
|
### カンバン列設計
|
||||||
|
|
||||||
|
#### 基本フロー
|
||||||
|
📋 **Backlog** → 🏗️ **Ready** → 🔄 **In Progress** → 👀 **Review** → ✅ **Done**
|
||||||
|
|
||||||
|
#### 詳細ステータス定義
|
||||||
|
- **Backlog**: 優先順位付け待ち・要件未確定
|
||||||
|
- **Ready**: 開発可能・担当者アサイン済み
|
||||||
|
- **In Progress**: 実装中・ブロック状況の監視
|
||||||
|
- **Review**: PR作成済み・レビュー待ち
|
||||||
|
- **Done**: マージ完了・検証済み
|
||||||
|
|
||||||
|
#### 高度な列設定
|
||||||
|
- **Ice Box**: 将来検討・低優先度アイデア
|
||||||
|
- **Blocked**: 外部依存・技術的課題で停止中
|
||||||
|
- **Waiting**: 顧客フィードバック・承認待ち
|
||||||
|
- **Deployed**: 本番環境デプロイ完了
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. テーブルビュー(詳細管理用)
|
||||||
|
```markdown
|
||||||
|
### カスタムフィールド設計
|
||||||
|
|
||||||
|
#### 必須フィールド
|
||||||
|
- **Status**: Single select(Backlog, Ready, In Progress, Review, Done)
|
||||||
|
- **Priority**: Single select(Critical, High, Medium, Low)
|
||||||
|
- **Size**: Single select(XS, S, M, L, XL)
|
||||||
|
- **Epic**: Text(関連するエピック名)
|
||||||
|
- **Sprint**: Single select(Sprint 1, Sprint 2, ...)
|
||||||
|
- **Assignee**: People(担当者)
|
||||||
|
- **Due Date**: Date(期限)
|
||||||
|
- **Story Points**: Number(見積もりポイント)
|
||||||
|
|
||||||
|
#### 発展フィールド
|
||||||
|
- **Component**: Multi-select(Frontend, Backend, Mobile, API)
|
||||||
|
- **Customer Impact**: Single select(High, Medium, Low, None)
|
||||||
|
- **Technical Debt**: Single select(Yes, No)
|
||||||
|
- **Risk Level**: Single select(High, Medium, Low)
|
||||||
|
- **Reviewer**: People(レビュー担当者)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. ロードマップビュー(戦略的計画用)
|
||||||
|
```markdown
|
||||||
|
### 時系列での進捗可視化
|
||||||
|
|
||||||
|
#### 設定項目
|
||||||
|
- **X軸**: 時間軸(週・月・四半期)
|
||||||
|
- **Y軸**: エピック・チーム・コンポーネント
|
||||||
|
- **マーカー**: マイルストーン・リリース予定日
|
||||||
|
- **色分け**: 優先度・ステータス・担当チーム
|
||||||
|
|
||||||
|
#### 活用シーン
|
||||||
|
- **エグゼクティブレビュー**: 経営陣への進捗報告
|
||||||
|
- **リリース計画**: 機能リリースのタイムライン
|
||||||
|
- **リソース配分**: チーム間の作業バランス確認
|
||||||
|
- **依存関係管理**: ブロッカーの可視化
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔄 ワークフロー自動化の設計
|
||||||
|
|
||||||
|
#### Issue → Project 自動追加
|
||||||
|
```yaml
|
||||||
|
# .github/workflows/add-to-project.yml
|
||||||
|
name: Add Issue to Project
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [opened, labeled]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
add-to-project:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Add to project
|
||||||
|
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 }}
|
||||||
|
labeled: bug,enhancement,feature
|
||||||
|
```
|
||||||
|
|
||||||
|
#### ステータス自動更新
|
||||||
|
```yaml
|
||||||
|
# .github/workflows/update-project-status.yml
|
||||||
|
name: Update Project Status
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [opened, closed, merged]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update-status:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Update status on PR
|
||||||
|
uses: actions/github-script@v6
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const pr = context.payload.pull_request;
|
||||||
|
|
||||||
|
// PRの状態に応じてプロジェクトアイテムのステータスを更新
|
||||||
|
let newStatus;
|
||||||
|
if (pr.state === 'open') {
|
||||||
|
newStatus = 'Review';
|
||||||
|
} else if (pr.merged) {
|
||||||
|
newStatus = 'Done';
|
||||||
|
} else if (pr.state === 'closed') {
|
||||||
|
newStatus = 'Backlog';
|
||||||
|
}
|
||||||
|
|
||||||
|
// GraphQL APIでプロジェクトアイテムを更新
|
||||||
|
const query = `
|
||||||
|
mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $value: String!) {
|
||||||
|
updateProjectV2ItemFieldValue(
|
||||||
|
input: {
|
||||||
|
projectId: $projectId
|
||||||
|
itemId: $itemId
|
||||||
|
fieldId: $fieldId
|
||||||
|
value: { singleSelectOptionId: $value }
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
projectV2Item {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
// 実際の更新処理
|
||||||
|
// 注:projectId, itemId, fieldIdは環境に応じて設定
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. カスタムフィールドと自動化
|
||||||
|
|
||||||
|
### 🎛️ 高度なカスタマイズ
|
||||||
|
|
||||||
|
#### スクラム開発用フィールド設定
|
||||||
|
```markdown
|
||||||
|
### スクラム特化カスタムフィールド
|
||||||
|
|
||||||
|
#### ストーリー管理
|
||||||
|
- **User Story**: Text(ユーザーストーリー記述)
|
||||||
|
- **Acceptance Criteria**: Text(受け入れ条件)
|
||||||
|
- **Story Points**: Number(1, 2, 3, 5, 8, 13, 21)
|
||||||
|
- **Business Value**: Single select(High, Medium, Low)
|
||||||
|
|
||||||
|
#### スプリント管理
|
||||||
|
- **Sprint**: Single select(Current, Next, Future, Backlog)
|
||||||
|
- **Sprint Goal**: Text(スプリント目標)
|
||||||
|
- **Velocity**: Number(チームの開発速度)
|
||||||
|
- **Burndown**: Number(残作業量)
|
||||||
|
|
||||||
|
#### 品質管理
|
||||||
|
- **Definition of Done**: Checkbox(完了条件チェックリスト)
|
||||||
|
- **Test Coverage**: Number(テストカバレッジ%)
|
||||||
|
- **Code Review Status**: Single select(Pending, Approved, Changes Requested)
|
||||||
|
- **QA Status**: Single select(Not Started, In Progress, Passed, Failed)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### カンバン開発用フィールド設定
|
||||||
|
```markdown
|
||||||
|
### カンバン特化カスタムフィールド
|
||||||
|
|
||||||
|
#### フロー管理
|
||||||
|
- **WIP Limit**: Number(作業中上限数)
|
||||||
|
- **Cycle Time**: Number(開始から完了までの日数)
|
||||||
|
- **Lead Time**: Number(要求から完了までの日数)
|
||||||
|
- **Flow Efficiency**: Number(実作業時間の割合%)
|
||||||
|
|
||||||
|
#### 継続改善
|
||||||
|
- **Blocker Reason**: Text(ブロック理由)
|
||||||
|
- **Improvement Suggestion**: Text(改善提案)
|
||||||
|
- **Retrospective Item**: Checkbox(振り返り対象)
|
||||||
|
- **Customer Feedback**: Text(顧客からのフィードバック)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🤖 自動化ルールの実装
|
||||||
|
|
||||||
|
#### 複雑な条件分岐自動化
|
||||||
|
```yaml
|
||||||
|
# .github/workflows/project-automation.yml
|
||||||
|
name: Advanced Project Automation
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [opened, edited, labeled, assigned]
|
||||||
|
pull_request:
|
||||||
|
types: [opened, closed, review_requested, review_submitted]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
project-automation:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Advanced Automation Logic
|
||||||
|
uses: actions/github-script@v6
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const { data: projects } = await github.rest.projects.listForUser({
|
||||||
|
username: context.repo.owner
|
||||||
|
});
|
||||||
|
|
||||||
|
const projectId = projects.find(p => p.name === 'Development Board')?.id;
|
||||||
|
if (!projectId) return;
|
||||||
|
|
||||||
|
// 複雑な条件分岐処理
|
||||||
|
const event = context.eventName;
|
||||||
|
const action = context.payload.action;
|
||||||
|
|
||||||
|
switch(event) {
|
||||||
|
case 'issues':
|
||||||
|
await handleIssueEvent(action, context.payload.issue);
|
||||||
|
break;
|
||||||
|
case 'pull_request':
|
||||||
|
await handlePREvent(action, context.payload.pull_request);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function handleIssueEvent(action, issue) {
|
||||||
|
// 優先度に応じた自動アサイン
|
||||||
|
if (issue.labels.some(l => l.name === 'priority:critical')) {
|
||||||
|
await github.rest.issues.addAssignees({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
issue_number: issue.number,
|
||||||
|
assignees: ['team-lead']
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 見積もりポイントの自動設定
|
||||||
|
let storyPoints = 3; // デフォルト
|
||||||
|
if (issue.labels.some(l => l.name === 'size:small')) storyPoints = 1;
|
||||||
|
if (issue.labels.some(l => l.name === 'size:large')) storyPoints = 8;
|
||||||
|
|
||||||
|
// プロジェクトアイテムのフィールド更新
|
||||||
|
// 注:実際のGraphQL実装が必要
|
||||||
|
}
|
||||||
|
|
||||||
|
async function handlePREvent(action, pr) {
|
||||||
|
if (action === 'opened') {
|
||||||
|
// PR作成時:関連Issueのステータスを「Review」に更新
|
||||||
|
const linkedIssues = extractLinkedIssues(pr.body);
|
||||||
|
for (const issueNumber of linkedIssues) {
|
||||||
|
// ステータス更新処理
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractLinkedIssues(prBody) {
|
||||||
|
const regex = /(?:close[sd]?|fix(?:e[sd])?|resolve[sd]?)\s+#(\d+)/gi;
|
||||||
|
const matches = [...prBody.matchAll(regex)];
|
||||||
|
return matches.map(match => parseInt(match[1]));
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. アジャイル手法の実装
|
||||||
|
|
||||||
|
### 🏃♂️ スクラム手法の完全実装
|
||||||
|
|
||||||
|
#### スプリント計画・実行・振り返り
|
||||||
|
|
||||||
|
**スプリント計画ビューの設定**
|
||||||
|
```markdown
|
||||||
|
### Sprint Planning View 設定
|
||||||
|
|
||||||
|
#### フィルタ設定
|
||||||
|
- **Status**: Backlog, Ready
|
||||||
|
- **Sprint**: Current, Next
|
||||||
|
- **Story Points**: 1-21(見積もり済み)
|
||||||
|
|
||||||
|
#### グループ化
|
||||||
|
- **Primary**: Epic(機能群別)
|
||||||
|
- **Secondary**: Priority(優先度別)
|
||||||
|
|
||||||
|
#### ソート順
|
||||||
|
1. Priority(Critical → High → Medium → Low)
|
||||||
|
2. Business Value(High → Medium → Low)
|
||||||
|
3. Story Points(小 → 大)
|
||||||
|
|
||||||
|
#### 表示カラム
|
||||||
|
- Title, Status, Assignee, Story Points, Sprint, Due Date
|
||||||
|
```
|
||||||
|
|
||||||
|
**スプリント実行中のデイリースタンドアップ支援**
|
||||||
|
```markdown
|
||||||
|
### Daily Standup Dashboard
|
||||||
|
|
||||||
|
#### 今日の作業ビュー
|
||||||
|
- **フィルタ**: Status = "In Progress", Assignee = "@me"
|
||||||
|
- **表示**: 昨日完了・今日予定・ブロッカー情報
|
||||||
|
|
||||||
|
#### チーム全体の進捗ビュー
|
||||||
|
- **グループ化**: Assignee(担当者別)
|
||||||
|
- **色分け**: ステータス別(緑=順調、黄=注意、赤=遅延)
|
||||||
|
- **アラート**: 期限超過・長期停滞アイテム
|
||||||
|
|
||||||
|
#### ブロッカー監視ビュー
|
||||||
|
- **フィルタ**: Labels contains "blocked"
|
||||||
|
- **ソート**: 作成日(古い順)
|
||||||
|
- **アクション**: 担当者への通知・エスカレーション
|
||||||
|
```
|
||||||
|
|
||||||
|
#### スプリントレトロスペクティブ
|
||||||
|
```markdown
|
||||||
|
### Sprint Retrospective Template
|
||||||
|
|
||||||
|
#### 振り返り観点
|
||||||
|
- **Keep**: 継続すべきこと
|
||||||
|
- **Problem**: 改善が必要なこと
|
||||||
|
- **Try**: 次スプリントで試すこと
|
||||||
|
|
||||||
|
#### メトリクス収集
|
||||||
|
- **Velocity**: 完了ストーリーポイント
|
||||||
|
- **Burndown**: 日別残作業量推移
|
||||||
|
- **Cycle Time**: 平均完了時間
|
||||||
|
- **Bug Rate**: 不具合発生率
|
||||||
|
|
||||||
|
#### 改善アクション
|
||||||
|
- 特定された問題の対策アイテム作成
|
||||||
|
- プロセス改善のためのタスク追加
|
||||||
|
- 次スプリントでの実験項目設定
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📊 カンバン手法の実装
|
||||||
|
|
||||||
|
#### 継続的フロー最適化
|
||||||
|
|
||||||
|
**WIP制限の設定と監視**
|
||||||
|
```markdown
|
||||||
|
### WIP Limits by Column
|
||||||
|
|
||||||
|
#### 推奨設定(5人チーム)
|
||||||
|
- **Ready**: 10アイテム(バックログの充実)
|
||||||
|
- **In Progress**: 5アイテム(チーム人数と同じ)
|
||||||
|
- **Review**: 3アイテム(迅速なレビュー)
|
||||||
|
- **Blocked**: 制限なし(問題の可視化)
|
||||||
|
|
||||||
|
#### 監視とアラート
|
||||||
|
- WIP超過時の自動通知
|
||||||
|
- 長期滞留アイテムの検出
|
||||||
|
- フロー効率の計測・レポート
|
||||||
|
```
|
||||||
|
|
||||||
|
**累積フロー図(CFD)の作成**
|
||||||
|
```python
|
||||||
|
# cfd_generator.py - Cumulative Flow Diagram 生成
|
||||||
|
import requests
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import pandas as pd
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
class CFDGenerator:
|
||||||
|
def __init__(self, github_token, project_id):
|
||||||
|
self.token = github_token
|
||||||
|
self.project_id = project_id
|
||||||
|
|
||||||
|
def generate_cfd(self, days=30):
|
||||||
|
"""過去30日間の累積フロー図を生成"""
|
||||||
|
end_date = datetime.now()
|
||||||
|
start_date = end_date - timedelta(days=days)
|
||||||
|
|
||||||
|
daily_data = []
|
||||||
|
current_date = start_date
|
||||||
|
|
||||||
|
while current_date <= end_date:
|
||||||
|
# その日のステータス別アイテム数を取得
|
||||||
|
status_counts = self.get_status_counts_for_date(current_date)
|
||||||
|
daily_data.append({
|
||||||
|
'date': current_date,
|
||||||
|
**status_counts
|
||||||
|
})
|
||||||
|
current_date += timedelta(days=1)
|
||||||
|
|
||||||
|
df = pd.DataFrame(daily_data)
|
||||||
|
|
||||||
|
# 累積フロー図の描画
|
||||||
|
plt.figure(figsize=(12, 8))
|
||||||
|
statuses = ['Done', 'Review', 'In Progress', 'Ready', 'Backlog']
|
||||||
|
colors = ['#28a745', '#ffc107', '#007bff', '#6c757d', '#dc3545']
|
||||||
|
|
||||||
|
for i, status in enumerate(statuses):
|
||||||
|
plt.fill_between(df['date'],
|
||||||
|
df[status] if i == 0 else df[statuses[:i+1]].sum(axis=1),
|
||||||
|
df[statuses[:i]].sum(axis=1) if i > 0 else 0,
|
||||||
|
color=colors[i], alpha=0.7, label=status)
|
||||||
|
|
||||||
|
plt.xlabel('Date')
|
||||||
|
plt.ylabel('Number of Items')
|
||||||
|
plt.title('Cumulative Flow Diagram')
|
||||||
|
plt.legend()
|
||||||
|
plt.xticks(rotation=45)
|
||||||
|
plt.tight_layout()
|
||||||
|
plt.savefig('cfd.png', dpi=300, bbox_inches='tight')
|
||||||
|
|
||||||
|
return df
|
||||||
|
|
||||||
|
def get_status_counts_for_date(self, date):
|
||||||
|
"""指定日のステータス別アイテム数を取得"""
|
||||||
|
# GitHub GraphQL API を使用してプロジェクトデータを取得
|
||||||
|
# 実装の詳細は省略(実際のAPI呼び出しが必要)
|
||||||
|
return {
|
||||||
|
'Backlog': 15,
|
||||||
|
'Ready': 8,
|
||||||
|
'In Progress': 5,
|
||||||
|
'Review': 3,
|
||||||
|
'Done': 25
|
||||||
|
}
|
||||||
|
|
||||||
|
# 使用例
|
||||||
|
cfd = CFDGenerator(github_token="your_token", project_id="project_id")
|
||||||
|
data = cfd.generate_cfd()
|
||||||
|
print("CFD generated successfully!")
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. 外部ツールからの移行
|
||||||
|
|
||||||
|
### 🔄 Jira からの移行
|
||||||
|
|
||||||
|
#### 完全移行チェックリスト
|
||||||
|
```markdown
|
||||||
|
### Phase 1: データマッピング設計(1週間)
|
||||||
|
|
||||||
|
#### Jiraフィールド → GitHub Projects フィールド対応
|
||||||
|
- **Issue Type** → **Labels**(bug, feature, story, epic)
|
||||||
|
- **Priority** → **Priority**(Critical, High, Medium, Low)
|
||||||
|
- **Status** → **Status**(Backlog, In Progress, Done等)
|
||||||
|
- **Assignee** → **Assignee**(ユーザーマッピング必要)
|
||||||
|
- **Epic Link** → **Epic**(カスタムテキストフィールド)
|
||||||
|
- **Story Points** → **Story Points**(カスタム数値フィールド)
|
||||||
|
- **Sprint** → **Sprint**(カスタム選択フィールド)
|
||||||
|
- **Components** → **Labels**(複数ラベルで対応)
|
||||||
|
|
||||||
|
### Phase 2: 移行ツール開発(2週間)
|
||||||
|
|
||||||
|
#### 自動移行スクリプト
|
||||||
|
```python
|
||||||
|
# jira_to_github_projects.py
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
from jira import JIRA
|
||||||
|
|
||||||
|
class JiraToGitHubMigrator:
|
||||||
|
def __init__(self, jira_url, jira_user, jira_token, github_token, github_project_id):
|
||||||
|
self.jira = JIRA(server=jira_url, basic_auth=(jira_user, jira_token))
|
||||||
|
self.github_token = github_token
|
||||||
|
self.project_id = github_project_id
|
||||||
|
|
||||||
|
def migrate_project(self, jira_project_key):
|
||||||
|
"""Jiraプロジェクト全体を移行"""
|
||||||
|
# 1. Jira Issuesを取得
|
||||||
|
issues = self.jira.search_issues(f'project={jira_project_key}', maxResults=1000)
|
||||||
|
|
||||||
|
# 2. GitHub Issues/Project Itemsを作成
|
||||||
|
for issue in issues:
|
||||||
|
github_issue = self.create_github_issue(issue)
|
||||||
|
self.add_to_project(github_issue['number'])
|
||||||
|
|
||||||
|
def create_github_issue(self, jira_issue):
|
||||||
|
"""Jira Issue を GitHub Issue に変換"""
|
||||||
|
# フィールドマッピング
|
||||||
|
title = jira_issue.fields.summary
|
||||||
|
body = self.convert_description(jira_issue.fields.description)
|
||||||
|
labels = self.map_labels(jira_issue.fields.issuetype, jira_issue.fields.priority)
|
||||||
|
|
||||||
|
issue_data = {
|
||||||
|
'title': title,
|
||||||
|
'body': body,
|
||||||
|
'labels': labels
|
||||||
|
}
|
||||||
|
|
||||||
|
# GitHub API で Issue 作成
|
||||||
|
response = requests.post(
|
||||||
|
f'https://api.github.com/repos/{self.repo}/issues',
|
||||||
|
headers={'Authorization': f'token {self.github_token}'},
|
||||||
|
json=issue_data
|
||||||
|
)
|
||||||
|
|
||||||
|
return response.json()
|
||||||
|
```
|
||||||
|
|
||||||
|
### Phase 3: チーム教育・並行運用(2週間)
|
||||||
|
|
||||||
|
#### 教育プログラム
|
||||||
|
- **ハンズオン研修**: GitHub Projects V2操作方法
|
||||||
|
- **ワークショップ**: アジャイルプロセスの再設計
|
||||||
|
- **QAセッション**: 移行に関する疑問解決
|
||||||
|
- **ドキュメント**: 新しいプロセスの標準化
|
||||||
|
|
||||||
|
### Phase 4: 完全移行・Jira停止(1週間)
|
||||||
|
|
||||||
|
#### 移行完了基準
|
||||||
|
- [ ] 全データ移行完了・検証済み
|
||||||
|
- [ ] チーム全員が新プロセスに習熟
|
||||||
|
- [ ] 自動化・インテグレーション動作確認
|
||||||
|
- [ ] パフォーマンス・可用性確認
|
||||||
|
- [ ] バックアップ・ロールバック手順準備
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📊 コスト効果分析
|
||||||
|
|
||||||
|
#### 移行前後の比較(100人チーム・年間)
|
||||||
|
```markdown
|
||||||
|
### 導入・運用コスト比較
|
||||||
|
|
||||||
|
#### Jira(移行前)
|
||||||
|
- **ライセンス費用**: $7,000/年
|
||||||
|
- **管理・運用**: 1人 × 20% = $20,000/年
|
||||||
|
- **教育・サポート**: $5,000/年
|
||||||
|
- **カスタマイズ**: $10,000/年
|
||||||
|
- **合計**: $42,000/年
|
||||||
|
|
||||||
|
#### GitHub Projects V2(移行後)
|
||||||
|
- **ライセンス費用**: $0(GitHub Pro に含まれる)
|
||||||
|
- **管理・運用**: 1人 × 5% = $5,000/年
|
||||||
|
- **教育・サポート**: $2,000/年(初年度のみ)
|
||||||
|
- **カスタマイズ**: $3,000/年(自動化開発)
|
||||||
|
- **合計**: $10,000/年
|
||||||
|
|
||||||
|
### ROI計算
|
||||||
|
- **年間削減額**: $32,000
|
||||||
|
- **移行コスト**: $15,000(一時費用)
|
||||||
|
- **投資回収期間**: 5.6ヶ月
|
||||||
|
- **3年間総節約額**: $81,000
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎓 実践演習
|
||||||
|
|
||||||
|
### 演習1: スクラムプロジェクト構築
|
||||||
|
1. **プロジェクト作成** - チーム用スクラムボード
|
||||||
|
2. **カスタムフィールド設定** - ストーリーポイント・スプリント
|
||||||
|
3. **自動化ルール** - Issue→Project追加・ステータス更新
|
||||||
|
4. **レポートビュー** - スプリント進捗・ベロシティ
|
||||||
|
|
||||||
|
### 演習2: カンバンフロー最適化
|
||||||
|
1. **フロー設計** - WIP制限・フロー効率
|
||||||
|
2. **メトリクス収集** - サイクルタイム・リードタイム
|
||||||
|
3. **継続改善** - ボトルネック特定・プロセス改善
|
||||||
|
4. **可視化** - 累積フロー図・バーンアップチャート
|
||||||
|
|
||||||
|
### 演習3: 外部ツール移行
|
||||||
|
1. **現状分析** - 既存ツールの機能・データ調査
|
||||||
|
2. **移行計画** - フェーズ別移行ロードマップ
|
||||||
|
3. **データマッピング** - フィールド・ワークフロー対応
|
||||||
|
4. **並行運用** - リスク軽減・段階的移行
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 関連リソース
|
||||||
|
|
||||||
|
### 公式ドキュメント
|
||||||
|
- [GitHub Projects Documentation](https://docs.github.com/en/issues/planning-and-tracking-with-projects)
|
||||||
|
- [Projects V2 GraphQL API](https://docs.github.com/en/graphql/reference/objects#projectv2)
|
||||||
|
- [GitHub Projects Best Practices](https://github.blog/2022-07-27-planning-next-to-your-code-github-projects-is-now-generally-available/)
|
||||||
|
|
||||||
|
### 移行・活用ツール
|
||||||
|
- [Jira to GitHub Issues Migration](https://github.com/marketplace/actions/jira-to-github-issues)
|
||||||
|
- [Projects V2 CLI](https://cli.github.com/manual/gh_project)
|
||||||
|
- [GitHub Projects API Scripts](https://github.com/github/projects-scripts)
|
||||||
|
|
||||||
|
### アジャイル手法参考資料
|
||||||
|
- [Scrum Guide](https://scrumguides.org/)
|
||||||
|
- [Kanban Method](https://www.atlassian.com/agile/kanban)
|
||||||
|
- [Agile Metrics](https://www.agilealliance.org/agile101/guide-to-agile-metrics/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 まとめ
|
||||||
|
|
||||||
|
GitHub Projects V2を効果的に活用することで:
|
||||||
|
|
||||||
|
✅ **統合された開発環境** - コードとプロジェクト管理の一元化
|
||||||
|
✅ **コスト大幅削減** - 外部ツールライセンス費用の削減
|
||||||
|
✅ **チーム生産性向上** - シームレスなワークフローと自動化
|
||||||
|
✅ **柔軟なプロセス適応** - スクラム・カンバン・独自手法に対応
|
||||||
|
✅ **データドリブン改善** - メトリクス収集と継続的最適化
|
||||||
|
|
||||||
|
次は実際のプロジェクトでGitHub Projects V2を活用し、チームの開発プロセスを最適化しましょう!
|
||||||
|
|
||||||
|
## 🔗 関連ガイド
|
||||||
|
|
||||||
|
- **前のステップ**: [Pull Request編](03-pull-requests.md) - コードレビュープロセス最適化
|
||||||
|
- **次のステップ**: [GitHub Actions編](05-github-actions.md) - プロジェクト自動化・CI/CD
|
||||||
|
- **基礎知識**: [Issues管理編](02-issues-management.md) - タスク管理の基礎
|
||||||
|
- **さらに基礎**: [リポジトリ基礎編](01-repository-basics.md) - 基本的なGit操作
|
||||||
|
- **セキュリティ**: [GitHub Security編](06-github-security.md) - プロジェクトセキュリティ
|
||||||
|
- **総合ガイド**: [GitHub完全活用ガイド](../GITHUB_COMPLETE_GUIDE.md) - 全機能の詳細解説
|
||||||
|
|
||||||
|
## 📖 学習フロー
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph LR
|
||||||
|
A[リポジトリ基礎] --> B[Issues管理]
|
||||||
|
B --> C[Pull Request]
|
||||||
|
C --> D[GitHub Projects]
|
||||||
|
D --> E[完全活用]
|
||||||
|
|
||||||
|
style A fill:#f3e5f5
|
||||||
|
style B fill:#f3e5f5
|
||||||
|
style C fill:#f3e5f5
|
||||||
|
style D fill:#e1f5fe
|
||||||
|
style E fill:#e8f5e8
|
||||||
|
```
|
||||||
1681
features/05-github-actions.md
Normal file
1681
features/05-github-actions.md
Normal file
File diff suppressed because it is too large
Load diff
1368
features/06-github-security.md
Normal file
1368
features/06-github-security.md
Normal file
File diff suppressed because it is too large
Load diff
1838
features/07-github-pages.md
Normal file
1838
features/07-github-pages.md
Normal file
File diff suppressed because it is too large
Load diff
198
index.md
198
index.md
|
|
@ -6,7 +6,40 @@ description: "外部ツールに依存せず、GitHub一つで開発業務を完
|
||||||
|
|
||||||
# 🚀 GitHub完全活用ガイド
|
# 🚀 GitHub完全活用ガイド
|
||||||
|
|
||||||
> **GitHub機能を網羅的に理解し、開発プロセスを最適化するための実践的解説書**
|
> **GitHubって何?から始める、初心者からプロまで使える完全ガイド**
|
||||||
|
|
||||||
|
## 🌱 初めての方はこちらから!
|
||||||
|
|
||||||
|
<div class="beginner-section">
|
||||||
|
<h2>🔰 GitHub初心者の方へ</h2>
|
||||||
|
<p>プログラミング知識ゼロでも大丈夫!まずはここから始めましょう。</p>
|
||||||
|
|
||||||
|
<div class="beginner-links">
|
||||||
|
<a href="beginners/github-features-simple.html" class="beginner-card">
|
||||||
|
<h3>📋 機能一覧</h3>
|
||||||
|
<p>GitHubで何ができるの?<br>20の機能をシンプルに解説</p>
|
||||||
|
<span class="time">5分で読める</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="beginners/github-beginner-guide.html" class="beginner-card">
|
||||||
|
<h3>🌱 入門ガイド</h3>
|
||||||
|
<p>アカウント作成から<br>最初のファイル保存まで</p>
|
||||||
|
<span class="time">10分で始められる</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="beginners/github-hands-on.html" class="beginner-card">
|
||||||
|
<h3>🖥️ 実践ガイド</h3>
|
||||||
|
<p>画面を見ながら<br>実際に操作してみよう</p>
|
||||||
|
<span class="time">手を動かして学ぶ</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="beginners/github-git-workflow.html" class="beginner-card">
|
||||||
|
<h3>🔄 ワークフロー</h3>
|
||||||
|
<p>Clone → Push → Pull<br>実際の作業の流れを理解</p>
|
||||||
|
<span class="time">図解で分かる</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="hero-section">
|
<div class="hero-section">
|
||||||
<h2>🎯 このサイトで学べること</h2>
|
<h2>🎯 このサイトで学べること</h2>
|
||||||
|
|
@ -51,33 +84,79 @@ description: "外部ツールに依存せず、GitHub一つで開発業務を完
|
||||||
<p>Jiraを完全代替するタスク管理システム</p>
|
<p>Jiraを完全代替するタスク管理システム</p>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="#" class="guide-link coming-soon">
|
<a href="features/03-pull-requests.html" class="guide-link">
|
||||||
<h4>🔄 Pull Request</h4>
|
<h4>🔄 Pull Request</h4>
|
||||||
<p>効率的なコードレビューフロー(準備中)</p>
|
<p>効率的なコードレビューフローとマージ戦略</p>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="#" class="guide-link coming-soon">
|
<a href="features/04-github-projects.html" class="guide-link">
|
||||||
<h4>📋 GitHub Projects</h4>
|
<h4>📋 GitHub Projects</h4>
|
||||||
<p>アジャイル開発のためのプロジェクト管理(準備中)</p>
|
<p>アジャイル開発のためのプロジェクト管理</p>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="features/05-github-actions.html" class="guide-link">
|
||||||
|
<h4>⚡ GitHub Actions</h4>
|
||||||
|
<p>Jenkins・CircleCI代替のCI/CD自動化</p>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="features/06-github-security.html" class="guide-link">
|
||||||
|
<h4>🛡️ GitHub Security</h4>
|
||||||
|
<p>企業レベルの総合セキュリティ対策</p>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="features/07-github-pages.html" class="guide-link">
|
||||||
|
<h4>🌐 GitHub Pages</h4>
|
||||||
|
<p>高機能Webサイト・ドキュメント公開</p>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
### 🚀 アドバンスドガイド
|
||||||
|
|
||||||
|
<div class="guide-links">
|
||||||
|
<a href="advanced/ai-parallel-development.html" class="guide-link">
|
||||||
|
<h4>🤖 AI駆動並列開発</h4>
|
||||||
|
<p>複数のAIツールを活用した超高速開発手法</p>
|
||||||
|
<span class="new-badge">NEW</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="advanced/github-features-detailed.html" class="guide-link">
|
||||||
|
<h4>📚 20機能完全ガイド</h4>
|
||||||
|
<p>全GitHub機能の詳細解説とプロ向け活用法</p>
|
||||||
|
<span class="new-badge">NEW</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="workflow/github-development-workflow.html" class="guide-link">
|
||||||
|
<h4>🔄 開発ワークフロー</h4>
|
||||||
|
<p>実際の開発でいつ・何を・どう使うか</p>
|
||||||
|
<span class="new-badge">NEW</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="workflow/ai-parallel-workflow.html" class="guide-link">
|
||||||
|
<h4>🤖 AI並列開発実践</h4>
|
||||||
|
<p>1日でWebアプリを作る具体的手順</p>
|
||||||
|
<span class="new-badge">NEW</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## 🎓 学習の進め方
|
## 🎓 学習の進め方
|
||||||
|
|
||||||
### 初心者の方
|
### 🔰 初心者の方
|
||||||
1. **[リポジトリ基礎](features/01-repository-basics.html)** で基本操作を習得
|
1. **[リポジトリ基礎](features/01-repository-basics.html)** で基本操作を習得
|
||||||
2. **[Issues管理](features/02-issues-management.html)** でタスク管理を体験
|
2. **[Issues管理](features/02-issues-management.html)** でタスク管理を体験
|
||||||
3. **[完全ガイド](GITHUB_COMPLETE_GUIDE.html)** で全体像を把握
|
3. **[Pull Request](features/03-pull-requests.html)** でコードレビュー学習
|
||||||
|
4. **[完全ガイド](GITHUB_COMPLETE_GUIDE.html)** で全体像を把握
|
||||||
|
|
||||||
### 経験者の方
|
### 👨💻 開発者・経験者の方
|
||||||
1. **[完全ガイド](GITHUB_COMPLETE_GUIDE.html)** で新機能をチェック
|
1. **[GitHub Actions](features/05-github-actions.html)** でCI/CD自動化を習得
|
||||||
|
2. **[GitHub Security](features/06-github-security.html)** でセキュリティ対策を強化
|
||||||
|
3. **[GitHub Pages](features/07-github-pages.html)** でWebサイト・ドキュメント公開
|
||||||
|
4. **[GitHub Projects](features/04-github-projects.html)** でアジャイル開発実践
|
||||||
|
|
||||||
|
### 👔 チームリーダー・意思決定者の方
|
||||||
|
1. **[完全ガイド](GITHUB_COMPLETE_GUIDE.html)** でコスト分析・ROI検討
|
||||||
2. **外部ツール代替戦略** で移行計画を立案
|
2. **外部ツール代替戦略** で移行計画を立案
|
||||||
3. **実務ケーススタディ** で最適な導入方法を選択
|
3. **段階的移行計画** でリスク最小化
|
||||||
|
4. **実装チェックリスト** で確実な導入を実現
|
||||||
### チームリーダーの方
|
|
||||||
1. **コスト分析** で導入効果を試算
|
|
||||||
2. **段階的移行計画** でリスクを最小化
|
|
||||||
3. **実装チェックリスト** で確実な導入を実現
|
|
||||||
|
|
||||||
## 🎉 導入効果の実例
|
## 🎉 導入効果の実例
|
||||||
|
|
||||||
|
|
@ -242,20 +321,105 @@ gh issue create --title "プロジェクト初期設定" --body "GitHub機能の
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 初心者セクション */
|
||||||
|
.beginner-section {
|
||||||
|
background: #e3f2fd;
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin: 2rem 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.beginner-section h2 {
|
||||||
|
color: #1976d2;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.beginner-links {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
||||||
|
gap: 1.5rem;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.beginner-card {
|
||||||
|
background: white;
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 8px;
|
||||||
|
text-decoration: none;
|
||||||
|
color: inherit;
|
||||||
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.beginner-card:hover {
|
||||||
|
transform: translateY(-3px);
|
||||||
|
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.beginner-card h3 {
|
||||||
|
color: #1976d2;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.beginner-card p {
|
||||||
|
color: #424242;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.beginner-card .time {
|
||||||
|
display: inline-block;
|
||||||
|
background: #e3f2fd;
|
||||||
|
color: #1565c0;
|
||||||
|
padding: 0.3rem 0.8rem;
|
||||||
|
border-radius: 20px;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NEWバッジ */
|
||||||
|
.new-badge {
|
||||||
|
position: absolute;
|
||||||
|
top: 0.5rem;
|
||||||
|
right: 0.5rem;
|
||||||
|
background: #ff5722;
|
||||||
|
color: white;
|
||||||
|
padding: 0.2rem 0.6rem;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 0.75rem;
|
||||||
|
font-weight: bold;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guide-link {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
/* レスポンシブ対応 */
|
/* レスポンシブ対応 */
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.features-grid,
|
.features-grid,
|
||||||
.guide-links,
|
.guide-links,
|
||||||
.stats-section {
|
.stats-section,
|
||||||
|
.beginner-links {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hero-section {
|
.hero-section,
|
||||||
|
.beginner-section {
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.stat-item h3 {
|
.stat-item h3 {
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.beginner-card {
|
||||||
|
padding: 1.5rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit d03ab51b39bab41443da50f988141d5a00382609
|
|
||||||
1193
workflow/ai-parallel-workflow.md
Normal file
1193
workflow/ai-parallel-workflow.md
Normal file
File diff suppressed because it is too large
Load diff
1736
workflow/github-development-workflow.md
Normal file
1736
workflow/github-development-workflow.md
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,251 +0,0 @@
|
||||||
# Git Worktree vs Jujutsu (jj) 徹底比較
|
|
||||||
|
|
||||||
## はじめに:なぜこの比較が重要なのか
|
|
||||||
|
|
||||||
Git worktreeとJujutsu(jj)は、どちらも**開発者の最大の悩み「作業の切り替えコスト」を解決する**ためのツールです。しかし、アプローチが根本的に異なります。
|
|
||||||
|
|
||||||
- **Git worktree**: Gitの上に構築された「物理的分離」による解決策
|
|
||||||
- **Jujutsu (jj)**: Git自体を置き換える「概念的革新」による解決策
|
|
||||||
|
|
||||||
## 基本概念の違い
|
|
||||||
|
|
||||||
### Git worktree: 物理的分離戦略
|
|
||||||
|
|
||||||
```
|
|
||||||
プロジェクトのディレクトリ構造:
|
|
||||||
../my-project/ # メインの作業場(develop)
|
|
||||||
├── .git/ # 共通のGitデータ
|
|
||||||
├── src/
|
|
||||||
└── package.json
|
|
||||||
|
|
||||||
../feature-login/ # ログイン機能用作業場
|
|
||||||
├── .git → ../my-project/.git # リンク
|
|
||||||
├── src/
|
|
||||||
└── package.json
|
|
||||||
|
|
||||||
../bugfix-urgent/ # 緊急バグ修正用作業場
|
|
||||||
├── .git → ../my-project/.git # リンク
|
|
||||||
├── src/
|
|
||||||
└── package.json
|
|
||||||
```
|
|
||||||
|
|
||||||
**特徴**:
|
|
||||||
- 各作業場は**物理的に独立したフォルダ**
|
|
||||||
- 同じリポジトリの異なるブランチを**同時に複数の場所で**展開
|
|
||||||
- `cd`コマンドで作業場を移動
|
|
||||||
|
|
||||||
### Jujutsu (jj): 概念的革新戦略
|
|
||||||
|
|
||||||
```
|
|
||||||
プロジェクトのディレクトリ構造:
|
|
||||||
my-project/ # 単一の作業場
|
|
||||||
├── .jj/ # jjのメタデータ
|
|
||||||
├── .git/ # Gitとの互換性維持
|
|
||||||
├── src/
|
|
||||||
└── package.json
|
|
||||||
|
|
||||||
変更の概念的管理:
|
|
||||||
change-abc123: feat: ログイン機能
|
|
||||||
change-def456: fix: 緊急バグ修正 ← 現在ここで作業中
|
|
||||||
change-ghi789: feat: UI改善
|
|
||||||
```
|
|
||||||
|
|
||||||
**特徴**:
|
|
||||||
- **単一のフォルダ**ですべてを管理
|
|
||||||
- 「変更(change)」という概念で作業を分離
|
|
||||||
- `jj edit <change-id>`で瞬時に作業を切り替え
|
|
||||||
|
|
||||||
## 具体的な作業フローの比較
|
|
||||||
|
|
||||||
### シナリオ: ログイン機能開発中に緊急バグ修正が発生
|
|
||||||
|
|
||||||
#### Git worktreeの場合
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 1. ログイン機能を開発中
|
|
||||||
cd ../login-work
|
|
||||||
# コーディング中...(未コミットの変更あり)
|
|
||||||
|
|
||||||
# 2. 緊急バグ修正が必要に!
|
|
||||||
cd ../my-project
|
|
||||||
git worktree add -b hotfix/urgent-bug ../bugfix-work develop
|
|
||||||
cd ../bugfix-work
|
|
||||||
|
|
||||||
# 3. バグ修正
|
|
||||||
# 修正作業...
|
|
||||||
git add .
|
|
||||||
git commit -m "fix: 緊急バグを修正"
|
|
||||||
git push origin hotfix/urgent-bug
|
|
||||||
|
|
||||||
# 4. PR作成してマージ後、クリーンアップ
|
|
||||||
cd ../my-project
|
|
||||||
git worktree remove ../bugfix-work
|
|
||||||
git branch -d hotfix/urgent-bug
|
|
||||||
|
|
||||||
# 5. ログイン機能に戻る
|
|
||||||
cd ../login-work
|
|
||||||
# 以前の作業がそのまま残っている!
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Jujutsu (jj)の場合
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 1. ログイン機能を開発中
|
|
||||||
# my-project/で作業中...(change-abc123)
|
|
||||||
|
|
||||||
# 2. 緊急バグ修正が必要に!
|
|
||||||
jj new main -m "fix: 緊急バグを修正"
|
|
||||||
# → 瞬時に新しい変更に切り替わり、以前の作業は自動保存
|
|
||||||
|
|
||||||
# 3. バグ修正
|
|
||||||
# 修正作業...(git addは不要、ファイル保存で自動的に変更に含まれる)
|
|
||||||
jj bookmark create hotfix/urgent-bug
|
|
||||||
jj git push --bookmark hotfix/urgent-bug
|
|
||||||
|
|
||||||
# 4. PR作成してマージ後、クリーンアップ
|
|
||||||
jj bookmark delete hotfix/urgent-bug
|
|
||||||
|
|
||||||
# 5. ログイン機能に戻る
|
|
||||||
jj edit change-abc123
|
|
||||||
# → 瞬時に以前の作業に戻る!
|
|
||||||
```
|
|
||||||
|
|
||||||
## 詳細比較表
|
|
||||||
|
|
||||||
| 項目 | Git worktree | Jujutsu (jj) |
|
|
||||||
|------|-------------|--------------|
|
|
||||||
| **基本思想** | 物理的分離による並行作業 | 概念的な変更管理 |
|
|
||||||
| **ディスク使用量** | 作業場数 × リポジトリサイズ | 1リポジトリ分のみ |
|
|
||||||
| **作業切り替え** | `cd ../other-work`(数秒) | `jj edit <id>`(瞬時) |
|
|
||||||
| **未コミット変更** | 各作業場で独立して保持 | 自動的に変更として保存 |
|
|
||||||
| **ステージング** | 各作業場でgit add必要 | 概念自体が存在しない |
|
|
||||||
| **stash** | 不要(物理的分離のため) | 不要(概念的分離のため) |
|
|
||||||
| **学習コスト** | Gitの延長(低) | 新しいVCS(高) |
|
|
||||||
| **チーム対応** | 全員Gitを知っていればOK | 全員がjjを学ぶ必要 |
|
|
||||||
| **IDEサポート** | フォルダ単位で自然に分離 | 同一フォルダ内での変更切り替え |
|
|
||||||
|
|
||||||
## それぞれの利点・欠点
|
|
||||||
|
|
||||||
### Git worktreeの利点
|
|
||||||
1. **学習コストが低い**: 既存のGit知識で十分
|
|
||||||
2. **直感的**: フォルダ = 作業場という分かりやすい概念
|
|
||||||
3. **IDEフレンドリー**: VS Codeなどで複数ウィンドウを開ける
|
|
||||||
4. **チーム互換性**: 他のメンバーは普通のGitブランチとして見える
|
|
||||||
5. **デバッグしやすい**: どのフォルダで何をしているか一目瞭然
|
|
||||||
|
|
||||||
### Git worktreeの欠点
|
|
||||||
1. **ディスク容量**: 大きなリポジトリだと容量を食う
|
|
||||||
2. **パスの管理**: 複数のパスを覚えておく必要
|
|
||||||
3. **クリーンアップ**: 作業完了後の削除作業が手間
|
|
||||||
4. **ファイルシステム依存**: Windows等でのパス問題
|
|
||||||
|
|
||||||
### Jujutsu (jj)の利点
|
|
||||||
1. **究極の効率性**: 瞬時の作業切り替え
|
|
||||||
2. **ディスク効率**: 1リポジトリ分の容量のみ
|
|
||||||
3. **自動管理**: ステージング、stash等の概念が不要
|
|
||||||
4. **強力なundo**: あらゆる操作が取り消し可能
|
|
||||||
5. **履歴編集**: 過去のコミット修正が超簡単
|
|
||||||
|
|
||||||
### Jujutsu (jj)の欠点
|
|
||||||
1. **学習コスト**: 全く新しい概念の理解が必要
|
|
||||||
2. **チーム導入障壁**: 全員が新しいツールを覚える必要
|
|
||||||
3. **エコシステム**: Git周辺ツールとの互換性問題の可能性
|
|
||||||
4. **成熟度**: 比較的新しいツールで、長期的な安定性が未知
|
|
||||||
|
|
||||||
## 使い分けの指針
|
|
||||||
|
|
||||||
### Git worktreeを選ぶべき場合
|
|
||||||
- **チーム開発**が中心
|
|
||||||
- **既存のGitワークフロー**に大きな変更を加えたくない
|
|
||||||
- **VS Codeなどのエディタ**で複数ウィンドウを開いて作業したい
|
|
||||||
- **学習コストを最小限**に抑えたい
|
|
||||||
- **Windows環境**でのパス問題が許容範囲
|
|
||||||
|
|
||||||
### Jujutsu (jj)を選ぶべき場合
|
|
||||||
- **個人開発**が中心
|
|
||||||
- **最高の開発体験**を求めている
|
|
||||||
- **頻繁な作業切り替え**が必要
|
|
||||||
- **実験的な開発**を多く行う
|
|
||||||
- **新しいツールを学ぶ意欲**がある
|
|
||||||
|
|
||||||
## 具体的な導入シナリオ
|
|
||||||
|
|
||||||
### シナリオ1: フリーランス開発者(個人開発中心)
|
|
||||||
**推奨**: Jujutsu (jj)
|
|
||||||
- クライアントワークでの頻繁な作業切り替えに最適
|
|
||||||
- 最新技術への投資として価値あり
|
|
||||||
- 個人の生産性向上が直接収入に影響
|
|
||||||
|
|
||||||
### シナリオ2: スタートアップのCTO(小規模チーム)
|
|
||||||
**推奨**: Git worktree
|
|
||||||
- チーム全体での学習コストを考慮
|
|
||||||
- 新しいメンバーの onboarding を重視
|
|
||||||
- 安定性と実績を重視
|
|
||||||
|
|
||||||
### シナリオ3: 大企業のシニア開発者(複雑な開発環境)
|
|
||||||
**推奨**: 状況による
|
|
||||||
- 個人作業が多い → jj
|
|
||||||
- チーム調整が多い → worktree
|
|
||||||
- 実験環境でjjを試してから判断
|
|
||||||
|
|
||||||
## 重要な制約:並列開発の観点
|
|
||||||
|
|
||||||
### Git worktree: 真の並列開発が可能
|
|
||||||
```bash
|
|
||||||
# 3つの機能を本当に「同時に」開発できる
|
|
||||||
Terminal 1: cd ../feature-A && npm run dev # localhost:3000
|
|
||||||
Terminal 2: cd ../feature-B && npm run dev # localhost:3001
|
|
||||||
Terminal 3: cd ../feature-C && npm run dev # localhost:3002
|
|
||||||
|
|
||||||
# 各作業場で独立したサーバーが起動し、ブラウザでタブを切り替えながら開発
|
|
||||||
```
|
|
||||||
|
|
||||||
### Jujutsu: 高速切り替えだが同時実行は不可
|
|
||||||
```bash
|
|
||||||
# 同時には1つしか実行できない
|
|
||||||
jj edit feature-A
|
|
||||||
npm run dev # localhost:3000
|
|
||||||
|
|
||||||
# feature-Bを見たい場合
|
|
||||||
# Ctrl+C でサーバー停止
|
|
||||||
jj edit feature-B
|
|
||||||
npm run dev # 再度起動が必要
|
|
||||||
```
|
|
||||||
|
|
||||||
### 並列開発が必要なケース
|
|
||||||
|
|
||||||
| シナリオ | worktree | jj |
|
|
||||||
|---------|----------|-----|
|
|
||||||
| **複数機能の同時比較** | ◎ 複数ブラウザタブで並べて確認 | ✗ 切り替えが必要 |
|
|
||||||
| **APIサーバー + フロントエンド** | ◎ 別ポートで同時起動 | ✗ 1つずつしか起動できない |
|
|
||||||
| **A/Bテスト開発** | ◎ 2つのバージョンを並行実行 | ✗ 切り替えて確認 |
|
|
||||||
| **性能比較** | ◎ 同時にベンチマーク実行 | ✗ 順番に実行 |
|
|
||||||
| **マイクロサービス開発** | ◎ 複数サービスを同時起動 | ✗ 実質不可能 |
|
|
||||||
|
|
||||||
### 実例:リアルタイム比較が必要な開発
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Git worktree: UIの新旧比較
|
|
||||||
../current-ui/ # 現在のUI(localhost:3000)
|
|
||||||
../new-ui-design/ # 新しいUIデザイン(localhost:3001)
|
|
||||||
# → ブラウザで2つのタブを開いて、リアルタイムで比較しながら調整
|
|
||||||
|
|
||||||
# jj: 同じことをやろうとすると...
|
|
||||||
jj edit current-ui
|
|
||||||
npm run dev
|
|
||||||
# スクリーンショットを撮る
|
|
||||||
jj edit new-ui-design
|
|
||||||
npm run dev
|
|
||||||
# メモリに頼って比較... 😓
|
|
||||||
```
|
|
||||||
|
|
||||||
## まとめ:どちらも素晴らしいソリューション
|
|
||||||
|
|
||||||
Git worktreeとJujutsu (jj)は、どちらも「作業の切り替えコスト」という共通の問題を解決する優れたツールです。
|
|
||||||
|
|
||||||
- **Git worktree**: 安全で実用的、チーム開発に最適
|
|
||||||
- **Jujutsu**: 革新的で効率的、個人開発に最適
|
|
||||||
|
|
||||||
重要なのは、**あなたの開発環境と目標に最も適したツールを選ぶこと**です。どちらを選んでも、従来の「1ブランチずつ切り替える」ワークフローより大幅に生産性が向上することは間違いありません。
|
|
||||||
|
|
||||||
始めるなら、学習コストの低いGit worktreeから試して、個人開発でより高い効率性を求めるならJujutsuに挑戦する、という段階的なアプローチもおすすめです。
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue