--- layout: default title: "GitHub開発ワークフロー完全ガイド - いつ、何を、どう使うか" description: "実際の開発でGitHubの各機能をどのタイミングで使うか、具体例で解説" --- # 🚀 GitHub開発ワークフロー完全ガイド 実際の開発プロジェクトで、GitHubの機能をいつ、どのように使うのか、時系列で解説します。 --- ## 📅 プロジェクト開始前(Day 0) ### 🎯 この日の重要性 **なぜプロジェクト開始前に1日をかけるのか?** 多くの開発者が「とりあえずコードを書き始めよう」と考えがちですが、これが後々の大きな問題の原因となります。Day 0での準備は「家を建てる前の基礎工事」のようなもの。見えない部分ですが、プロジェクト全体の成功を左右します。 **🤔 思考プロセス**: 「今日1日の投資で、今後数ヶ月の開発がスムーズになる」 --- ### 1. 🏗️ リポジトリ作成の戦略 #### なぜリポジトリ作成が最初なのか? リポジトリは「プロジェクトの住所」です。ここでの決定が、チーム全体の作業効率に直結します。 **🤔 思考プロセス**: 「このプロジェクトの性質を考えて、最適な設定は何か?」 ```bash # プロジェクトの性質を考慮した作成 gh repo create my-awesome-app --public --add-readme # 💡 選択の理由: # --public: オープンソースまたは採用活動に活用 # --add-readme: 最初からドキュメント重視の姿勢を示す ``` **⚠️ よくある判断ミス:** - 「とりあえずprivateで」→ 後でpublicにするとURL変更で混乱 - 「READMEは後で」→ 最初から整備する習慣がつかない - 「適当な名前で」→ 後で変更すると履歴が複雑に **✅ このタイミングで決めるべきこと:** ``` 1. リポジトリ名 - 分かりやすく、永続的に使える名前 2. 公開設定 - チームメンバーと将来の展望を考慮 3. 説明文 - プロジェクトの目的を一行で表現 4. トピック - 発見されやすさとカテゴライズ ``` --- ### 2. 🛠️ 初期設定の戦略的重要性 #### なぜテンプレートファイルを最初に作るのか? **🤔 思考プロセス**: 「後で困らないように、今ルールを決める」 テンプレートファイルは「未来のチームメンバー(自分も含む)へのガイドライン」です。忙しくなった時ほど、これらのテンプレートが品質を保つ生命線となります。 #### 各ファイルの戦略的意味 ```yaml # .github/ISSUE_TEMPLATE/bug_report.md # 🎯 目的: バグ報告の品質を統一 # 💡 効果: 再現可能なバグ報告により、デバッグ時間50%短縮 # .github/ISSUE_TEMPLATE/feature_request.md # 🎯 目的: 機能要求の背景と価値を明確化 # 💡 効果: 不要な機能開発を防ぎ、価値のある機能に集中 # .github/pull_request_template.md # 🎯 目的: レビューの観点と品質基準を統一 # 💡 効果: レビュー時間30%短縮、見落とし防止 # .gitignore # 🎯 目的: 不要ファイルのコミット防止 # 💡 効果: リポジトリサイズ適正化、セキュリティ向上 # README.md # 🎯 目的: プロジェクトの「顔」として機能 # 💡 効果: 新メンバーのオンボーディング時間70%短縮 ``` **実際の作成例:** ```markdown # .github/ISSUE_TEMPLATE/bug_report.md name: 🐛 バグ報告 description: 期待通りに動作しない問題を報告 title: "[BUG] " labels: ["bug"] body: - type: markdown attributes: value: | バグを報告していただき、ありがとうございます。 詳細な情報を提供していただくことで、迅速な修正が可能になります。 - type: textarea id: description attributes: label: 問題の説明 description: 何が起きているか、簡潔に説明してください placeholder: ログインボタンをクリックしても反応しない validations: required: true - type: textarea id: reproduction attributes: label: 再現手順 description: この問題を再現するための手順 placeholder: | 1. ログインページに移動 2. メールアドレスとパスワードを入力 3. ログインボタンをクリック 4. 何も起きない validations: required: true ``` **⚠️ テンプレート作成時の注意点:** - 長すぎると誰も使わない(1分で入力完了が目安) - 必須項目は最小限に(本当に必要な情報のみ) - 例を豊富に提供(迷わず入力できるように) --- ### 3. 📊 Project作成の戦略 #### なぜProjectsがタスク管理の要なのか? **🤔 思考プロセス**: 「散らばったタスクを一元管理して、進捗を可視化したい」 GitHub Projectsは単なるタスク管理ツールではありません。「チーム全体の意識を統一する」ためのコミュニケーションツールです。 ``` GitHub → Projects → New project 🎯 Project設定の深い意味: ├── 名前: "My App Development" │ 💡 理由: プロジェクトの目的が一目で分かる │ ❌ 悪い例: "開発", "作業"(曖昧すぎる) │ ✅ 良い例: "TaskFlow MVP開発", "ECサイトリニューアル" │ ├── テンプレート: "Team backlog" │ 💡 理由: チーム開発に最適化されたレイアウト │ 🔄 代替案: "Kanban"(個人開発向け), "Roadmap"(長期計画向け) │ └── フィールド追加: Priority, Story Points, Sprint 💡 各フィールドの戦略的意味: Priority (High/Medium/Low): 🎯 目的: リソース配分の明確化 💭 判断基準: - High: ユーザー影響大 + 技術的クリティカル - Medium: 重要だが代替手段あり - Low: あれば良い程度 Story Points (1,2,3,5,8,13): 🎯 目的: 工数見積もりの標準化 💭 判断基準: - 1: 30分程度(設定変更レベル) - 3: 半日程度(小機能追加) - 8: 2-3日程度(新機能開発) - 13: 1週間以上(要分割検討) Sprint (Sprint 1, Sprint 2...): 🎯 目的: 時間軸での管理 💭 判断基準: 1スプリント = 1-2週間で区切る ``` **プロジェクトボード設計の実際:** ``` 📋 カラム設計の思考プロセス: 🔄 従来の問題: To Do → Doing → Done └─ 何がボトルネックか分からない ✅ 改善されたフロー: 📥 Backlog → 🎯 Sprint → 🔨 In Progress → 👀 Review → ✅ Done 各カラムの意味: 📥 Backlog: いつかやるタスク(優先度付け済み) 🎯 Sprint: 今回のスプリントで完了予定 🔨 In Progress: 現在作業中(同時進行は1-2個まで) 👀 Review: 完了待ち(PRマージ待ち、テスト待ち) ✅ Done: 完全完了(本番反映済み) ``` --- ### 4. 📝 初期Issue作成の戦略 #### なぜ最初にIssueを作るのか? **🤔 思考プロセス**: 「やることを明確にして、迷いをなくす」 Issueは「作業の設計図」です。建築でも設計図なしに家を建てないように、開発でもIssueなしにコードを書くべきではありません。 #### Issue作成の戦略的アプローチ ```markdown # Issue #1: プロジェクト初期設定 ## 🎯 なぜこのIssueが最初なのか? 「インフラが整わないと、後続作業が全て遅れる」 ## 📋 具体的なタスク - [ ] 開発環境構築手順書作成 💡 理由: 新メンバー参加時の混乱防止 ⏱️ 想定時間: 2時間 📊 Story Points: 3 - [ ] コーディング規約決定 💡 理由: レビュー時の基準統一 ⏱️ 想定時間: 1時間 📊 Story Points: 2 - [ ] CI/CD設定 💡 理由: 品質担保の自動化 ⏱️ 想定時間: 4時間 📊 Story Points: 5 ## ✅ 完了の定義 - 新しいメンバーが1時間で開発開始できる - すべてのPRで自動テストが実行される - コードスタイルが自動チェックされる --- # Issue #2: 基本機能の要件定義 ## 🎯 なぜ要件定義に時間をかけるのか? 「曖昧な要件は、無限の手戻りを生む」 ## 📋 具体的なタスク - [ ] ユーザーストーリー作成 💡 理由: "誰が何のために"を明確化 🎯 目標: 「〜として、〜したい、なぜなら〜」形式で10個 📊 Story Points: 5 - [ ] 画面設計 💡 理由: UI/UXの方向性確定 🎯 目標: ワイヤーフレーム + ユーザーフロー 📊 Story Points: 8 - [ ] API設計 💡 理由: フロント・バックエンドの結合点明確化 🎯 目標: OpenAPI形式でのAPI仕様書 📊 Story Points: 5 ## ✅ 完了の定義 - チーム全員が同じゴールイメージを共有 - 技術的実現性が確認済み - 開発優先順位が決定済み ``` **Issue作成時の判断基準:** ``` 💡 良いIssueの条件: ✅ 1週間以内で完了可能 ✅ 完了の定義が明確 ✅ 他のIssueとの依存関係が最小 ✅ 誰が見ても理解できる ⚠️ 避けるべきIssue: ❌ "UIを改善する"(曖昧すぎる) ❌ "システム全体を作る"(大きすぎる) ❌ "バグを直す"(具体性がない) ❌ "いい感じにする"(主観的) ``` **この時点での成果:** ``` 🎉 Day 0完了時点での状態: ✅ 明確なプロジェクト方針 ✅ チーム作業の基盤完成 ✅ 品質担保の仕組み設置 ✅ 向こう2週間の作業計画 💪 これで開発開始の準備完了! 明日から迷いなく開発に集中できます。 ``` --- --- ## 🏃 開発開始(Week 1) ### 🎯 この週の戦略 **Week 1の重要性** 最初の1週間は「プロジェクトの方向性を決める」重要な期間です。ここでの判断や習慣が、プロジェクト全体の品質と効率を左右します。 **🤔 思考プロセス**: 「勢いに任せず、持続可能なペースを確立する」 **Week 1で確立すべき習慣:** - 📅 **計画的な作業**: 行き当たりばったりではなく、戦略的に - 🔄 **継続的な統合**: 小さく確実に積み重ねる - 👥 **チームコミュニケーション**: 問題の早期発見・解決 - 📊 **進捗の可視化**: 現実的な見通しを持つ ### 月曜日:スプリント計画 #### 🎯 月曜日の重要性 **なぜ月曜日に時間をかけて計画するのか?** 多くのチームが「とりあえず作業開始」してしまいますが、これが週の後半での混乱の原因となります。月曜日の2時間の計画で、週全体の効率が2倍になります。 **🤔 思考プロセス**: 「今週の終わりに、何を達成していたいか?」 --- #### 9:00-10:00 Project Boardでの戦略的計画 **この1時間での思考プロセス:** ``` 🤔 考えるべき質問: 1. 「チームの今のキャパシティは?」 2. 「前週の積み残しはある?」 3. 「今週のリスク要因は?」 4. 「優先順位の根拠は明確か?」 ``` **実際の作業フロー:** ```bash # 1. 前週の振り返り(5分) echo "前週完了: X件、積み残し: Y件" # → 見積もり精度の確認 # 2. 今週のキャパシティ確認(10分) # チームメンバーの稼働状況確認 # - 休暇予定 # - 他プロジェクト兼務 # - 会議・イベント予定 # 3. Backlogから優先度順に選択(30分) ``` **Projects操作の実際:** ``` 1. Projectsを開く 💭 「全体の流れは健全か?」 📊 ボトルネック分析: どのカラムに滞留があるか 2. BacklogからSprint 1に移動: 📌 Issue #3: ユーザー認証機能 (8pt) 💭 判断理由: "他の機能の前提となるため最優先" 📌 Issue #4: データベース設計 (5pt) 💭 判断理由: "認証機能と並行して進められる" 📌 Issue #5: ログイン画面UI (3pt) 💭 判断理由: "APIが完成してから着手で十分" 3. 各Issueにポイント設定 💡 ポイント設定の思考プロセス: - 過去の類似作業と比較 - 不確実性の要素を考慮 - チームメンバーのスキルレベル調整 ``` **⚠️ よくある計画ミス:** - 楽観的すぎる見積もり("今週は調子が良いから") - 割り込み作業を考慮しない("集中できる時間は実質60%") - 依存関係を無視("A完成前にBは着手できない") **✅ 良い計画の指標:** ``` 今週の計画が良いかの判断基準: - 総ポイント数が前週の実績±20%以内 - 依存関係がシンプル(並行作業可能) - 金曜日にデモできる状態になる - 各メンバーに適切な挑戦レベル ``` --- #### 10:00-11:00 チーム割り当てとコミュニケーション **この1時間の重要性:** **🤔 思考プロセス**: 「誰に何を任せれば、チーム全体が最も効果的に動くか?」 **メンバー割り当ての判断基準:** ```markdown # Issue #3: ユーザー認証機能 にコメント @frontend-dev さんへ 🎯 **今週お任せしたいこと**: ログイン画面UI実装 📋 **具体的なスコープ**: - ログイン/登録フォームのUI - バリデーション表示 - ローディング状態の表現 - エラーメッセージの表示 💡 **なぜあなたにお任せするか**: 前回のフォーム実装での丁寧な作業が印象的でした。 ユーザビリティへの配慮も期待しています。 ⏰ **完成目標**: 金曜日の15:00 🤝 **連携ポイント**: @backend-dev のAPI完成後に結合テスト ❓ **不明点・懸念があれば**: 遠慮なく早めにコメントください。 特にAPI仕様で不明な点があれば @backend-dev と私に声をかけてください。 --- @backend-dev さんへ 🎯 **今週お任せしたいこと**: 認証API実装 📋 **具体的なスコープ**: - JWT認証の実装 - ユーザー登録/ログインエンドポイント - トークンの有効期限管理 - セキュリティ要件の実装 💡 **なぜあなたにお任せするか**: セキュリティ周りの知識が豊富で、安心してお任せできるためです。 ⏰ **完成目標**: 木曜日の12:00(フロントエンド結合時間確保) 🤝 **連携ポイント**: API仕様確定後、@frontend-dev に連携 📊 **期待する品質レベル**: - OpenAPI仕様書の整備 - 単体テストのカバレッジ80%以上 - セキュリティスキャンの通過 期限: 金曜日まで(ただし木曜12:00が理想) ``` **割り当て時の深い配慮:** ``` 💭 メンバー選定時の思考: 技術的適性 (40%): - そのタスクに必要なスキル - 過去の類似作業での成果 - 成長機会としての価値 作業負荷 (30%): - 現在の担当案件数 - 集中できる時間の確保 - ストレスレベルの配慮 チーム効果 (30%): - 他メンバーとの連携しやすさ - 知識共有の効果 - モチベーション向上への影響 ``` **この時点でのチーム状態:** ``` ✅ 月曜11:00時点での達成状態: - 今週の明確なゴール設定完了 - 各メンバーの役割と責任が明確 - 依存関係とコミュニケーションポイント確認済み - リスク要因の事前把握完了 💪 これで今週の成功確率が大幅にアップ! ``` ### 火曜日:開発作業 #### 🎯 火曜日の重要性 **なぜ火曜日が「本格的な開発開始」なのか?** 月曜日に立てた計画を実際のコードに落とし込む日です。この日の作業の品質が、週全体のリズムを決めます。「美しいスタート」を切ることで、チーム全体のモチベーションが上がります。 **🤔 思考プロセス**: 「作業リズムを作って、調子を上げよう」 --- #### 9:00-10:00 ブランチ作成と環境準備 **この1時間での深い思考:** ```bash # 1. 精神的準備(5分) echo "🌅 おはようございます!今日は Issue #3 に集中します" # → 「今日のゴール」を意識に刷り込み # 2. 最新情報を取得(10分) git checkout main git pull origin main # 💭 思考: 「昨日から何か変わっているか?」 # 💭 確認: git log --oneline -5 # 3. 機能ブランチ作成(10分) git checkout -b feature/user-authentication # 💭 思考: 「ブランチ名が作業内容を適切に表現しているか?」 # 4. 作業環境確認(10分) # - エディターの設定確認 # - 開発サーバー起動 # - 必要なツールの動作確認 # 5. Issueの詳細確認(15分) # → GitHubでIssue #3を開いて、要件を再確認 # → 不明点があればコメントで質問 ``` **⚠️ よくあるミス:** - 最新情報取得をスキップ→ コンフリクトの原因 - 急いで環境確認を省略→ 後で原因不明のエラー - Issueを読まずにコード開始→ 方向性のズレ **✅ この時点での理想状態:** ``` ✅ 今日のゴールが明確 ✅ 作業環境が整っている ✅ 最新コードベースで作業開始 ✅ 要件への理解が十分 🚀 集中してコーディング開始! ``` --- #### 10:00-17:00 開発作業の実際 **この7時間のリズム作り:** **🤔 思考プロセス**: 「持続可能なペースで、確実に進歩しよう」 ```bash # 開発サイクル(繰り返し) # === 1サイクル:30-45分 === # Step 1: コード実装(30分) # 💭 思考: 「今、何を作っているのか明確に意識」 echo "💻 今からログインフォームコンポーネントを作ります" # Step 2: コミット(5分) git add src/components/LoginForm.jsx git commit -m "feat: ログインフォームのUI実装 #3 - フォームの基本レイアウト完成 - バリデーションメッセージ表示機能追加 - レスポンシブデザイン対応" # 💡 コミットメッセージのポイント: # - 何をしたか、なぜしたか明記 # - Issue番号で連携を明確化 # - 具体的な変更内容を簡潔に # Step 3: ブレイク(10分) # 🍵 コーヒーブレイクでリフレッシュ # 📱 GitHubで通知確認 # 💬 チームメンバーの進捗を軽くチェック ``` **開発中の意識すべきポイント:** ``` 🔍 こまめなチェックポイント: 1時間ごと: - 「予定通り進んでいるか?」 - 「不明点やブロック要因はないか?」 - 「作業の品質は維持できているか?」 コミット前: - 「コードが動作するか?」 - 「コーディング規約に沿っているか?」 - 「コミットメッセージは適切か?」 1日の終わり: - 「今日の成果を一言で表現すると?」 - 「明日のスタートポイントは明確か?」 ``` **1日の終わりのPush戦略:** ```bash # 17:00 - 1日の終わりのPush # 1. 作業内容の整理(5分) git status # 未コミットの変更確認 git log --oneline -3 # 今日のコミット履歴確認 # 2. Push実行 git push origin feature/user-authentication # 💡 Pushの意味: # - 他メンバーに進捗を可視化 # - バックアップとしての安心感 # - 依存作業をしているメンバーへの連携 # 3. 明日の準備(5分) echo "📝 明日のTODO: - API連携機能の実装 - ローディング状態の表示 - エラーハンドリングの実装" # 4. チームへの進捗共有 gh issue comment 3 --body "📦 今日の進捗報告: - ログインフォームのUI基本実装完了 - バリデーション機能追加 - レスポンシブデザイン対応 明日は@backend-dev のAPI完成を待って連携テストを実施予定です。" ``` --- #### 17:00-18:00 Draft PR作成の戦略 **なぜDraft PRを作るのか?** **🤔 思考プロセス**: 「不完全でもコミュニケーションを開始しよう」 Draft PRは「コードレビューではなく、方向性確認」が目的です。早い段階でチームに見てもらうことで、手戻りを防ぎます。 ```bash # Draft PR作成の実際 gh pr create --draft \ --title "WIP: ユーザー認証機能 #3" \ --body " ## 🏁 現在の状態 本 PR は **作業中** です。まだマージの準備ができていません。 ## 📝 目的 Issue #3 のユーザー認証機能を実装しています。 ## ✅ 完了したこと - ログインフォームのUI基本実装 - バリデーションメッセージ表示 - レスポンシブデザイン対応 ## 🔨 作業中 - API連携機能 - ローディング状態表示 - エラーハンドリング ## 🙏 レビューお願い 現在の実装方向で問題ないか、コメントいただけると嬉しいです。 特に以下の点で不安があります: 1. フォームのバリデーションロジック 2. CSSの構造とスタイル名 3. アクセシビリティへの配慮 📅 **予定**: 木曜日にレビュー準備完了予定です。 " ``` **Draft PRの効果:** ``` 💬 コミュニケーション効果: - 方向性の早期確認 - 他メンバーの作業内容把握 - コードスタイルの統一 - 加えて、モチベーション向上 🕰️ 時間短縮効果: - 最終レビュー時の手戻りが減る - 結合テスト時の問題発生率低下 - チーム全体のコード品質向上 ``` **この時点での成果:** ``` 🎉 火曜日完了時点での状態: ✅ 着実な進捗と成果物 ✅ チームとのコミュニケーション開始 ✅ 明日の作業内容が明確 ✅ コード品質の基盤作り 🚀 持続可能な開発リズムを構築中! ``` ### 水曜日:進捗確認 #### 🎯 水曜日の重要性 **なぜ水曜日に「進捗確認」が重要なのか?** 週の中間地点で、「当初の計画通りに進んでいるか」を確認し、必要に応じて軌道修正を行う日です。この日をおろそかにすると、金曜日に「できませんでした」という結果になりがちです。 **🤔 思考プロセス**: 「現実を正確に把握して、必要な調整を行う」 --- #### 10:00-11:00 スタンドアップ(Projectsでの深い分析) **この1時間の深い目的:** 単なる進捗確認ではなく、「チームの健康状態」を診断し、必要な治療を行う時間です。 ```bash # 1. Projectsダッシュボードでの分析(15分) echo "📊 プロジェクト健康診断開始..." # カラム別タスク数確認 Projects → Board View 📋 現在の状態: ├── 📥 Backlog: 2件 # 新規タスクの港 ├── 🎯 Sprint: 3件 # 今回のスプリント目標 ├── 🔨 In Progress: 3件 # 現在作業中 ← ここを詳細分析 ├── 👀 In Review: 0件 # レビュー待ち └── ✅ Done: 1件 # 完了済み # 2. 各タスクの詳細分析(20分) 🔍 In Progress の内容詳細: - Issue #3: ユーザー認証機能 (8pt) 💭 状態: 60%進捗中 👥 担当: @frontend-dev, @backend-dev ⚡ リスク: API結合のタイミング - Issue #4: データベース設計 (5pt) 💭 状態: 80%進捗中 👥 担当: @backend-dev ⚡ リスク: マイグレーションの動作確認 - Issue #5: ログイン画面UI (3pt) 💭 状態: 90%進捗中 👥 担当: @frontend-dev ⚡ リスク: なし(順調) ``` **分析結果に基づく判断:** ``` 📊 健康診断結果: ✅ ポジティブ要素: - 全体的な進捗は計画通り - チームメンバーのモチベーション上位 - 技術的な大きなブロッカーなし ⚠️ 注意が必要な箇所: - Issue #3 のAPI結合タイミング → 連携テストの時間確保が重要 💫 推奨アクション: 1. @frontend-dev と @backend-dev の結合テストを木曜午前に設定 2. Issue #3 のスコープを再確認(無理のない範囲か?) 3. リスクバッファとして、簡単なUIテストを追加 ``` **チームへのフィードバック:** ```bash # 3. チームミーティング(15分) echo "👥 チームスタンドアップ開始" # 各メンバーからの状態報告: @frontend-dev: "🚀 ログインUIは順調です。 明日の午前にAPI連携テストをしたいので、 @backend-dev さん、エンドポイントの準備状況を教えてください。" @backend-dev: "💪 APIは明日朝一には準備できます。 データベーススキーマもすでに完成しています。 10:00から一緒にテストしましょう!" # 主導者からのまとめ: "✅ 全体的に順調ですね! 明日の10:00に結合テストを実施して、 午後にはPRレビュー準備完了を目指しましょう。" ``` **スタンドアップの成果:** ``` 📊 スタンドアップ後の状態: - リスク要因の早期発見と対応策決定 - メンバー間の連携ポイント明確化 - 明日の具体的な作業スケジュール確定 - チームの一体感とモチベーション向上 ``` --- ### 木曜日:コードレビュー #### 🎯 木曜日の重要性 **なぜ木曜日が「コードレビューの日」なのか?** 水曜日に確認した進捗を元に、実際の成果物をチームで確認し、品質を保証する日です。「コードは動くが、チームで保守できるか?」を検証します。 **🤔 思考プロセス**: 「集合知で品質を高め、金曜日の統合を成功させる」 --- #### 10:00-12:00 結合テストと最終調整 **この2時間の深い目的:** 単なるバグ発見ではなく、「リリース可能な品質」まで引き上げる時間です。ここで妥協すると、本番で問題が発生します。 ```bash # 1. 環境準備とテストデータ作成(30分) echo "🧪 結合テスト環境の準備開始..." # テスト用のブランチ作成 git checkout -b integration/user-authentication git merge feature/user-authentication git merge feature/api-authentication # データベースのテストデータ準備 echo "📊 テストデータの準備..." # テストユーザーアカウント作成 # 異常ケース用のデータ準備 # セキュリティテスト用のデータ # 💡 なぜテストデータが重要か? # 本番で起こりうる様々なケースを再現 # エッジケースでの動作確認 # セキュリティホールの発見 ``` **結合テストの実施:** ```bash # 2. 段階的なテスト実行(90分) echo "🔍 Phase 1: 基本機能テスト(30分)" # ✅ 正常ケース # - 正しいメール/パスワードでログイン # - 新規ユーザー登録 # - ログアウト echo "⚠️ Phase 2: 異常ケーステスト(30分)" # ❌ エラーケース # - 間違ったパスワード # - 存在しないメールアドレス # - 空のフォーム送信 # - SQLインジェクション試行 echo "🚀 Phase 3: パフォーマンステスト(30分)" # 🏃‍♂️ 負荷テスト # - 同時ログイン数 # - レスポンス時間 # - メモリ使用量 ``` **発見した問題への対応:** ```bash # 3. 問題の記録と優先度決定 echo "📝 発見した問題の整理..." # 🔥 Critical(今すぐ修正必要) # - セキュリティホール # - 機能が全く動かない # ⚡ High(今日中に修正) # - UX上の大きな問題 # - データ不整合 # 📋 Medium(今スプリント中) # - 軽微なUIの問題 # - パフォーマンス改善 # 📝 Low(次スプリント) # - 機能改善のアイデア # - コードの最適化 ``` --- #### 14:00-16:00 Pull Requestレビュー **レビューの深い目的:** **🤔 思考プロセス**: 「コードの意図を理解し、改善点を建設的に提案する」 単なる間違い探しではなく、「チーム全体のコード品質向上」が目的です。レビューを通じて、知識共有と成長を促進します。 ```bash # Draft PRをReview readyに変更 gh pr ready 12 # レビュアーをアサイン gh pr edit 12 --add-reviewer @team-lead,@senior-dev # レビューリクエストのメッセージ gh pr comment 12 --body " 👀 **レビューお願いします!** ## 📝 レビューポイント 今回のPRで特に見ていただきたい点: 1. **セキュリティ** 🔒 - JWT の実装方法 - パスワードハッシュ化の手法 - XSS対策の実装 2. **コード品質** ✨ - 関数の責任分割 - エラーハンドリングの網羅性 - テストケースの充実度 3. **UX/UI** 🎨 - エラーメッセージの分かりやすさ - ローディング状態の表現 - アクセシビリティへの配慮 ## 🧪 テスト済み項目 - ✅ 基本的なログイン/ログアウト - ✅ 新規ユーザー登録 - ✅ エラーケースのハンドリング - ✅ セキュリティテスト - ✅ レスポンシブデザイン 📅 **マージ希望**: 明日の午前中 🙏 お忙しい中恐縮ですが、よろしくお願いします!" ``` **効果的なコードレビューの実践:** ```markdown # レビュアーからの建設的なフィードバック例 ## 🎯 良い点(必ず最初に) - エラーハンドリングが丁寧に実装されています - コードの可読性が高く、保守しやすそうです - テストケースが充実していて安心感があります ## 🤔 改善提案 ### セキュリティ向上 🔒 **現在のコード:** ```javascript const token = jwt.sign({userId: user.id}, SECRET_KEY); ``` **提案:** ```javascript const token = jwt.sign( {userId: user.id}, SECRET_KEY, {expiresIn: '24h'} // 有効期限を追加 ); ``` **理由:** JWTに有効期限を設定することで、トークン漏洩時のリスクを軽減できます。 ### パフォーマンス改善 ⚡ **提案:** ローディング状態をもう少し早く表示できると、体感速度が向上しそうです。 **具体案:** フォーム送信と同時にローディングを開始する ## ✅ その他 - CSSの命名規則が統一されていて素晴らしいです - コメントが適切で、将来のメンテナンスが楽になりそうです 全体的に高品質な実装だと思います!🎉 ``` **レビュー対応の実践:** ```bash # レビューコメントへの対応 echo "🔧 レビューフィードバックへの対応開始..." # 1. 各コメントに返信(感謝と対応方針) gh pr comment 12 --body " @reviewer さん、詳細なレビューありがとうございます!🙏 ## 対応方針 ### ✅ 即座に修正 - JWT有効期限の追加 → 修正してcommitします - ローディング表示の改善 → UX向上のため対応します ### 📝 次回スプリントで - CSS最適化 → Issue #8 として管理します 10分程度で修正完了予定です!" # 2. 実際の修正作業 # コードの修正 # テストの追加実行 # 修正内容のcommit git add . git commit -m "feat: レビューフィードバック対応 - JWT有効期限を24時間に設定 - ローディング表示のタイミング改善 - セキュリティテストケース追加" git push origin feature/user-authentication # 3. レビュー完了の通知 gh pr comment 12 --body " 🎉 **レビューフィードバック対応完了!** ## 修正内容 - ✅ JWT有効期限設定 (24時間) - ✅ ローディングUX改善 - ✅ 追加テストケース 再度ご確認いただけますでしょうか? よろしくお願いします! 🙏" ``` **木曜日終了時の状態:** ``` 📊 木曜日完了時点での成果: ✅ 結合テスト完了・品質保証 ✅ コードレビューによる改善実施 ✅ チーム全体の知識レベル向上 ✅ 明日のマージ準備完了 🚀 いよいよ金曜日の統合と本番リリース準備! ``` ### 金曜日:マージとデプロイ #### 🎯 金曜日の重要性 **なぜ金曜日が「統合とデプロイの日」なのか?** 一週間の成果を統合し、実際にユーザーに価値を届ける日です。「作った」だけでなく「届けた」ことで、初めて開発の意味があります。 **🤔 思考プロセス**: 「一週間の努力を確実に成果として結実させる」 --- #### 9:00-10:00 最終チェックとマージ **この1時間の深い目的:** 単なる「マージボタンを押す」ではなく、「リリース品質の最終確認」を行います。ここでの慎重さが、本番での安定性を保証します。 ```bash # 1. 最終環境での動作確認(20分) echo "🔍 本番前の最終確認開始..." # Production環境と同等の設定でテスト # - 本番データベースの構造 # - 本番と同じ環境変数 # - SSL証明書での動作確認 # 2. マージの実行(10分) echo "🔀 Pull Requestのマージ実行..." # レビュー承認の確認 gh pr checks 12 --watch # CI/CDパイプラインの通過確認 ✅ Build: Success ✅ Test: Success ✅ Security Scan: Success ✅ Performance Test: Success # 慎重なマージ実行 gh pr merge 12 --squash --body " 🎉 ユーザー認証機能を実装 ## 📝 今回のリリース内容 - ユーザー登録/ログイン機能 - JWT認証システム - セキュアなパスワード管理 - レスポンシブUIデザイン ## ✅ テスト済み項目 - 基本機能テスト: 全てpass - セキュリティテスト: 全てpass - パフォーマンステスト: 基準クリア - ブラウザ互換性: Chrome, Firefox, Safari対応 ## 👥 貢献者 @frontend-dev - UI実装とUX設計 @backend-dev - API実装とセキュリティ @team-lead - プロジェクト管理と品質保証 ありがとうございました!🙏" # 3. デプロイメントの準備(20分) # 本番環境への配信準備 git checkout main git pull origin main # デプロイメント設定の確認 # - 環境変数の設定 # - データベースマイグレーション # - CDNキャッシュのクリア # 4. リリースタグの作成(10分) echo "🏷️ リリースタグの作成..." # セマンティックバージョニングに従ったタグ git tag v1.2.0 -m "feat: ユーザー認証機能追加 新機能: - ユーザー登録・ログイン - JWT認証 - セキュアなセッション管理 改善: - UI/UXの向上 - セキュリティ強化 - パフォーマンス最適化" git push origin v1.2.0 ``` **マージ後の immediate follow-up:** ```bash # 5. 関連Issueのクローズ(5分) echo "📝 完了したIssueのクローズ..." # 自動クローズされなかったIssueを手動確認 gh issue close 3 --comment " 🎉 **機能完成のお知らせ** ユーザー認証機能が正式にリリースされました! ## 📦 リリース内容 - 新規ユーザー登録 - ログイン/ログアウト - パスワード再設定 - プロフィール管理 ## 🌐 確認方法 https://our-app.com/login テストアカウント: - Email: test@example.com - Password: Test123! 何か問題があれば Issue でお知らせください! ## 🙏 謝辞 この機能開発に関わったすべてのメンバーに感謝します: @frontend-dev @backend-dev @designer @tester 本当にありがとうございました!" ``` --- #### 11:00-12:00 本番デプロイと監視 **デプロイメントの実践:** ```bash # 1. 段階的デプロイメント(30分) echo "🚀 本番環境への配信開始..." # ステージング環境での最終確認 echo "⚙️ ステージング環境でのリハーサル..." # - 本番データの一部を使ったテスト # - 本番と同じインフラでの動作確認 # - パフォーマンス測定 # Blue-Greenデプロイメント実行 echo "🔄 Blue-Green デプロイメント実行..." # - 新バージョンをGreen環境に配信 # - ヘルスチェックの実行 # - トラフィックの段階的切り替え # 2. 本番監視体制(30分) echo "📊 本番環境の監視開始..." # リアルタイム監視ダッシュボード # - サーバーレスポンス時間 # - エラー率 # - ユーザーアクティビティ # - データベース接続状況 # アラート設定の確認 # - エラー率が5%を超えた場合 # - レスポンス時間が2秒を超えた場合 # - サーバーリソース使用率が80%を超えた場合 ``` **監視結果の確認:** ```bash # 3. 運用開始後の状況確認 echo "📈 デプロイ後30分間の状況レポート:" ✅ サーバー状態: - CPU使用率: 45% (正常) - メモリ使用率: 60% (正常) - レスポンス時間: 平均0.8秒 (良好) ✅ アプリケーション状態: - エラー率: 0.2% (正常範囲) - 新規ユーザー登録: 12件 - ログイン成功率: 98.5% ✅ データベース状態: - 接続プール: 正常 - クエリ実行時間: 平均50ms - 接続エラー: 0件 🎉 デプロイ成功!正常稼働中 ``` --- #### 14:00-15:00 週次レトロスペクティブ **この1時間の深い目的:** **🤔 思考プロセス**: 「今週の経験を来週の改善につなげる」 単なる振り返りではなく、「持続可能な改善サイクル」を作る時間です。問題を責めるのではなく、システムとプロセスの改善を議論します。 ```bash # 1. データに基づく振り返り(20分) echo "📊 今週の定量データ分析..." # GitHub Insightsでの分析 📈 今週の開発メトリクス: ├── Commits: 23件 (先週: 18件) ↗️ ├── Pull Requests: 3件 (すべてマージ済み) ├── Issues Closed: 4件 ├── Code Reviews: 8件 ├── CI/CD実行: 15回 (成功率: 93%) └── デプロイ: 1回 (成功) 🎯 品質メトリクス: ├── テストカバレッジ: 85% (目標: 80%以上) ✅ ├── Code Quality Score: A (良好) ├── Security Vulnerabilities: 0件 ✅ └── Performance: 改善 (+15%高速化) 👥 チームメトリクス: ├── 平均レビュー時間: 4時間 (目標: 8時間以内) ✅ ├── Issue解決時間: 平均2.3日 ├── メンバー満足度: 4.2/5.0 └── 学習・成長実感: 4.1/5.0 ``` **構造化された振り返り:** ```markdown # 2. KPT (Keep/Problem/Try) セッション(25分) ## 🎉 Keep (続けたいこと) ### プロセス面 - ✅ Draft PRでの早期フィードバック → 手戻りが大幅に減った - ✅ 水曜日の進捗確認 → リスクの早期発見ができた - ✅ 段階的なテスト実施 → 品質が格段に向上した ### 技術面 - ✅ 自動化されたCI/CDパイプライン → デプロイの安心感が大きい - ✅ チーム内でのコードレビュー文化 → 知識共有が促進された ### コミュニケーション面 - ✅ Issueでの詳細な要件定義 → 認識齟齬が劇的に減った - ✅ 建設的なフィードバック文化 → チームの心理的安全性向上 ## 🤔 Problem (課題・問題) ### 時間管理 - ⚠️ 結合テストで予期しないバグ発見 → 個別テストの強化が必要 - ⚠️ コードレビューの集中による待機時間 → レビュアーの分散が必要 ### 技術的課題 - ⚠️ パフォーマンステストの自動化不足 → 手動テストに時間がかかりすぎ - ⚠️ セキュリティテストの手法が限定的 → より包括的なテストが必要 ### プロセス改善 - ⚠️ 緊急バグ修正時の手順が曖昧 → ホットフィックス用プロセス整備 ## 🚀 Try (次週試したいこと) ### immediate(来週から) - 🎯 パフォーマンステスト自動化 → GitHub ActionsにLighthouse追加 - 🎯 コードレビューローテーション → 待機時間の短縮とスキル向上 - 🎯 セキュリティスキャン強化 → OWASP ZAPの導入 ### 中期的 (今月中) - 🎯 ホットフィックス専用フロー → 緊急時の対応手順書作成 - 🎯 自動テストカバレッジ拡大 → E2Eテスト導入検討 ### 長期的 (来月以降) - 🎯 開発環境の標準化 → Dockerコンテナ化推進 - 🎯 監視・ログ分析基盤 → より詳細な品質メトリクス収集 ``` **アクションプランの決定:** ```bash # 3. 具体的改善計画(15分) echo "📋 来週のアクションプラン決定..." # 優先度付きアクションアイテム 🥇 High Priority (来週必須): - [ ] GitHub ActionsにLighthouse追加 (@devops-lead) - [ ] コードレビューローテーション導入 (@team-lead) - [ ] ホットフィックス手順書作成 (@senior-dev) 🥈 Medium Priority (今月中): - [ ] E2Eテスト導入調査 (@qa-engineer) - [ ] セキュリティスキャン強化 (@security-champion) - [ ] 監視ダッシュボード改善 (@devops-lead) 🥉 Low Priority (来月以降): - [ ] 開発環境Docker化 (@infrastructure-team) - [ ] パフォーマンス分析基盤 (@backend-team) # 各アクションの担当者と期限を明確化 gh issue create --title "🎯 Performance Test Automation" \ --body "来週のレトロスペクティブで決定されたアクションアイテム ## 目的 パフォーマンステストの自動化により、品質保証の効率化を図る ## 具体的作業 - GitHub ActionsにLighthouse導入 - パフォーマンス基準値の設定 - 自動レポート生成 ## 期限 来週金曜日まで ## 担当 @devops-lead" \ --assignee devops-lead \ --label enhancement,high-priority ``` **週次完了の達成感:** ``` 🎉 金曜日完了時点での大きな成果: ✅ ユーザー認証機能を本番リリース ✅ 一週間のスプリント完全達成 ✅ チーム全体の成長と改善実感 ✅ 来週への明確な改善計画 🌟 持続可能な高品質開発サイクルを構築! ``` #### 14:00-15:00 Issue更新とドキュメンテーション **この1時間の戦略的意味:** **🤔 思考プロセス**: 「チームの知識を集約し、未来の自分たちへのメモを残す」 午前のスタンドアップで得た情報を、Issueやドキュメントに残すことで、チームの知識を資産化します。 ```markdown # Issue #3 に詳細な進捗コメントを追加 ## 📊 水曜日時点での進捗報告 ### ✅ 完了したこと - **ログインフォームUI基本実装**: レスポンシブデザイン、バリデーション表示 - **バリデーションロジック**: メール形式、パスワード強度チェック - **エラーメッセージ表示**: ユーザーフレンドリーなメッセージ - **アクセシビリティ対応**: ARIAラベル、キーボードナビゲーション ### 🔨 現在作業中 - **API連携機能**: エンドポイント呼び出し、レスポンス処理 - **ローディング状態表示**: ユーザーエクスペリエンス向上 - **エラーハンドリング**: ネットワークエラー、認証失敗対応 ### ⏳ 明日の予定 - **10:00** - @backend-dev と結合テスト実施 - **12:00** - 結合テスト結果に基づく修正作業 - **15:00** - PRレビュー準備完了目標 ### 💭 気づいたこと・改善点 - **バリデーションUX**: リアルタイムバリデーションでユーザビリティ大幅向上 - **アクセシビリティ**: 初期から考慮することで、後からの追加修正を回避 - **コード再利用性**: 他のフォームでも流用できるコンポーネント設計 ### ⚠️ 現在のリスク要因 - **APIスキーマ変更の可能性**: バックエンド開発進捗次第で調整が必要 - **ブラウザ互換性**: IE11サポートの必要性を再確認したい ### 🙏 チームへのお願い - **デザイナー**: エラー状態の視覚デザイン確認 - **QA**: 結合テスト後のE2Eテストシナリオ検討 - **プロダクトオーナー**: エラーメッセージのトーン・ボイス確認 --- **📈 メトリクス情報**: - コード行数: +150行 (テスト含む) - コンポーネント数: +2個 (再利用可能) - コミット数: 5個 (適切な粒度) - 作業時間: 8時間 (予定通り) ``` **ドキュメント更新の実際:** ```bash # プロジェクトWikiやREADMEの更新 echo "📝 知識のドキュメント化中..." # 1. 気づいたベストプラクティスをWikiに追加 # 2. トラブルシューティング情報をFAQに追加 # 3. コードサンプルをコメントで充実 ``` **この時点での成果:** ``` 🎉 水曜日完了時点での状態: ✅ チームの現実的な状態把握 ✅ リスクの早期発見と対応策決定 ✅ 知識と経験のチーム内共有 ✅ 明日の具体的アクションプラン 💪 木曜日の成功への確実な基盤作り完了! ``` ### 木曜日:コードレビュー #### 10:00 - PR準備完了 ```bash # Draft から通常のPRに変更 gh pr ready # PR説明を更新 ``` ```markdown ## 概要 ユーザー認証機能を実装しました。 ## 変更内容 - ログインフォームコンポーネント - 認証API(JWT使用) - Reduxでの状態管理 ## スクリーンショット ![ログイン画面](./screenshots/login.png) ## テスト - [x] ユニットテスト追加 - [x] E2Eテスト追加 ``` # ProjectsでSprint 1を確認 完了: 8件 未完了: 2件 → 次スプリントへ # 新しいDiscussion作成 タイトル: Sprint 1 振り返り カテゴリ: Team Updates ``` --- ## 🔄 日常的な開発サイクル ### 毎朝のルーティン(5分) ```bash # 1. 最新を取得 git checkout main git pull origin main # 2. 自分のブランチを更新 git checkout feature/my-feature git rebase main # 3. GitHub通知確認 # - 自分へのメンション # - レビューリクエスト # - CI/CDの結果 ``` ### Issue駆動開発 ``` 1. Issue確認 → 今日やること決定 2. ブランチ作成 → feature/issue-番号 3. 開発 → コミットメッセージに #番号 4. PR作成 → Issueと自動リンク 5. マージ → Issue自動クローズ ``` ### コミットのタイミング ```bash # ❌ 悪い例:1日分をまとめてコミット git add . git commit -m "今日の作業" # ✅ 良い例:機能単位でコミット git add src/components/Button.jsx git commit -m "feat(ui): カスタムボタンコンポーネント追加" git add src/styles/button.css git commit -m "style(ui): ボタンのスタイル追加" git add tests/Button.test.js git commit -m "test(ui): ボタンコンポーネントのテスト追加" ``` --- ## 🚨 トラブル発生時 ### バグ発見(緊急度:高) ```bash # 1. Issue作成 gh issue create \ --title "🐛 決済処理でエラー発生" \ --label "bug,urgent,production" \ --assignee "@payment-team" # 2. Hotfixブランチ git checkout -b hotfix/payment-error # 3. 修正 → テスト → PR # 4. 緊急マージ(レビュー1人でOK) ``` ### 機能追加リクエスト ```markdown # Discussions で議論 カテゴリ: Ideas タイトル: ダークモード対応について # 合意が取れたらIssue化 Issue #45: ダークモード実装 ラベル: enhancement, ui, sprint-3 ``` --- ## 📊 週次・月次の活動 ### 週次レビュー(金曜日) ``` 1. Projects確認 - 完了タスク数 - ベロシティ計算 - 来週の計画 2. Insights確認 - コード頻度 - コントリビューター統計 - PR/Issueの傾向 3. Wiki更新 - リリースノート - 新機能のドキュメント ``` ### 月次活動 ``` 1. マイルストーン設定 - 次月の大目標 - リリース計画 2. セキュリティレビュー - Dependabot アラート確認 - セキュリティアドバイザリ 3. パフォーマンス分析 - Actions の実行時間 - ビルド時間の最適化 ``` --- ## 🎯 シチュエーション別ガイド ### 新機能開発 ``` 1. Discussion で提案 2. Issue 作成 3. Projects に追加 4. ブランチ → 開発 → PR 5. レビュー → マージ 6. Release 作成 ``` ### バグ修正 ``` 1. Issue でバグ報告 2. 再現確認 3. Hotfixブランチ 4. 修正 → テスト 5. 緊急PR → マージ 6. パッチリリース ``` ### ドキュメント更新 ``` 1. Wiki 直接編集 または 2. docs/ フォルダで管理 3. PR でレビュー 4. GitHub Pages 自動更新 ``` ### 外部コントリビュータ ``` 1. Fork してもらう 2. Contribution Guide 参照 3. PR 受け取り 4. レビュー & フィードバック 5. マージ or 修正依頼 ``` --- ## 💡 プロのTips ### 1. ラベルの活用 ```yaml 種類: - bug: 不具合 - feature: 新機能 - docs: ドキュメント 優先度: - P0: 今すぐ - P1: 今週中 - P2: 今月中 状態: - ready: 着手可能 - blocked: ブロック中 - needs-review: レビュー待ち ``` ### 2. 自動化の極意 ```yaml # PR作成時に自動でProjectsに追加 # Issue作成時に自動でラベル付け # マージ時に自動でデプロイ # 定期的な依存関係更新 ``` ### 3. コミュニケーション ```markdown # Issue/PRでの良いコメント - 具体的な問題説明 - 再現手順 - 期待する結果 - スクリーンショット - 関連リンク ``` --- ## 📈 成果の可視化 ### GitHub Insights 活用 ``` Code frequency: コード追加/削除の推移 Pulse: 週次/月次のアクティビティ Contributors: 誰がどれだけ貢献したか Traffic: リポジトリの人気度 ``` ### Projects の分析 ``` - スプリント完了率 - 平均リードタイム - サイクルタイム - 未完了タスクの傾向 ``` --- ## 🎉 まとめ GitHubを使った開発は、**Issue → Branch → Commit → PR → Merge** のサイクルが基本。 各機能を適切なタイミングで使うことで: - 進捗が可視化される - チーム連携がスムーズ - 品質が保たれる - 履歴が残る まずは小さく始めて、徐々に機能を増やしていきましょう!