🌊

GitHubファーストな開発環境を構築

2025/01/14に公開

GitHub設定

GitHubでプロジェクト以外の工程もあれこれ管理するための環境を構築していきます。
個人開発でも環境を良くすることで開発のモチベーションが上がります。

mainリポジトリに直接pushすることを禁止する

個人開発ではありがちなmainリポジトリに直接pushして開発を行う行為を禁止します。
後述するCodeRabbitによるレビュー環境を構築するためでもあります。
また、Issueファーストな環境の構築を行うのでmainリポジトリに直接pushする必要がなくなります。

参考サイト

https://zenn.dev/json_hardcoder/articles/f9b534377103a4

ターゲットはmainに設定

設定項目

Require a pull request before mergingに追加の設定をする項目が設定はしない

ブランチの命名規則

GitHubのissueからブランチを作成
branch名はissueのタイトルになります
issueと紐づける事でマージ完了後にissueをcloseすることができます

Developmentからブランチを作成することができます
また、ローカルブランチを切り替えるコマンドも生成してくれる

issueのテンプレート

プロジェクト内に.github/ISSUE_TEMPLATEディレクトリを作成し、その中にテンプレートを配置します

.github/
└── ISSUE_TEMPLATE/
    ├── bug_report.md
    ├── documentation_improvement.md
    ├── feature_request.md
    ├── question.md
    └── task.md
  1. バグ報告 (Bug Report):
    • ソフトウェアの不具合や予期しない動作を報告するためのテンプレートです。再現手順、期待される結果、実際の結果、環境情報などを含めると良いでしょう
bug_report
---
name: バグ報告
about: バグを報告してプロジェクトの改善に貢献する
title: "[BUG] バグの簡単な説明"
labels: bug
assignees: ''

---

**バグの説明**
バグが何であるかを明確かつ簡潔に説明してください。

**再現手順**
バグを再現するための手順を記載してください:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**期待される動作**
期待される動作を明確かつ簡潔に説明してください。

**スクリーンショット**
可能であれば、問題を説明するのに役立つスクリーンショットを追加してください。

**デスクトップ (以下の情報を記入してください):**
 - OS: [e.g. Windows, macOS]
 - ブラウザ [e.g. Chrome, Safari]
 - バージョン [e.g. 22]

**スマートフォン (以下の情報を記入してください):**
 - デバイス: [e.g. iPhone6]
 - OS: [e.g. iOS8.1]
 - ブラウザ [e.g. stock browser, safari]
 - バージョン [e.g. 22]

**追加のコンテキスト**
ここに問題に関する他のコンテキストを追加してください。
  1. 機能リクエスト (Feature Request):
    • 新しい機能や改善を提案するためのテンプレートです。提案の詳細、利点、関連するスクリーンショットやモックアップを含めることができます
feature_request
---
name: 機能リクエスト
about: 新しい機能の提案
title: "[FEATURE] 機能の簡単な説明"
labels: enhancement
assignees: ''

---

**機能の説明**
提案する機能が何であるかを明確かつ簡潔に説明してください。

**動機**
この機能がなぜ必要か、どのように役立つかを説明してください。

**提案する解決策**
機能の実装方法についてのアイデアがあれば記載してください。

**代替案**
考えられる代替案や機能について記載してください。

**追加のコンテキスト**
ここに機能に関する他のコンテキストやスクリーンショットを追加してください。

  1. 質問 (Question):
    • プロジェクトに関する質問やサポートを求めるためのテンプレートです。具体的な質問内容や関連する背景情報を記載します
question
---
name: 質問
about: プロジェクトに関する質問
title: "[QUESTION] 質問の簡単な説明"
labels: question
assignees: ''

---

**質問の内容**
質問を明確かつ簡潔に説明してください。

**関連する背景情報**
質問に関連する背景情報や試したことを記載してください。

**追加のコンテキスト**
ここに質問に関する他のコンテキストを追加してください。

  1. ドキュメント改善 (Documentation Improvement):
    • ドキュメントの誤りや改善点を報告するためのテンプレートです。具体的な改善提案や誤りの詳細を含めます
documentation_improvement
---
name: ドキュメント改善
about: ドキュメントの誤りや改善点を報告する
title: "[DOCS] ドキュメントの簡単な説明"
labels: documentation
assignees: ''

---

**改善の説明**
改善が必要なドキュメントの部分を明確かつ簡潔に説明してください。

**提案する変更**
提案する具体的な変更内容を記載してください。

**関連するドキュメント**
関連するドキュメントやページへのリンクを記載してください。

**追加のコンテキスト**
ここに改善に関する他のコンテキストを追加してください。

  1. タスク (Task):
    • プロジェクト内の特定のタスクや作業項目を追跡するためのテンプレートです。タスクの詳細、目的、期限などを記載します。
task
---
name: タスク
about: プロジェクト内の特定のタスクや作業項目を追跡する
title: "[TASK] タスクの簡単な説明"
labels: task
assignees: ''

---

**タスクの説明**
タスクが何であるかを明確かつ簡潔に説明してください。

**目的**
このタスクの目的や達成したい結果を記載してください。

**作業項目**
- [ ] 作業項目1
- [ ] 作業項目2
- [ ] 作業項目3

**期限**
このタスクの完了期限を記載してください。

**追加のコンテキスト**
ここにタスクに関する他のコンテキストや関連情報を追加してください。

実行結果

main branchに反映されると新規でissueを作成する時にテンプレートを選択できるようになる

まとめ

面倒なルールなどを設定することで、作業工程が増え面倒になっているように見えるが、
Issueを作成する事でスタートとゴールを明確に設定してから作業することで結果作業の効率が上がると思います。

Issueとbranchが紐づいていることで作業内容が追いやすく記録も残りやす利点があると感じています。

作業が完了したらmainにマージすることでIssueをcloseするといった一連の流れが目に見えることで開発のモチベーションが上がると自分は思いました。

GitHubで編集を提案

Discussion