Skip to content

Instantly share code, notes, and snippets.

@Enchan1207
Last active February 10, 2024 04:29
Show Gist options
  • Save Enchan1207/0ea2c7a7d6a3c16aea5683435d1972f8 to your computer and use it in GitHub Desktop.
Save Enchan1207/0ea2c7a7d6a3c16aea5683435d1972f8 to your computer and use it in GitHub Desktop.
Issue駆動開発とは

Issue-driven development

Overview

 Issueドリブン開発(課題駆動開発、チケット駆動開発とも)は、issueつまり実装における課題をタスクとして管理・運用する開発手法です。
 新規機能の追加やバグ修正などをissueとして立て、それを解決するためのブランチを切り、コミットやPRで適宜issueを参照しながら開発を進めるというフローを取ります。

Workflow

 ここでは、かろうじてIssueドリブンと呼べるリポジトリとして Enchan1207/YoutubeKit を例に話を進めていきます。

1. create new issue

 まずは開発作業の起点となるissueを立てます。bugenhancementなど、適宜ラベルをふっておくと後々の管理がラクです。

スクリーンショット 2021-05-02 16 41 22

2. create and switch new branch

 立てたissueには自動で番号が振られます。(ここでは#11)

スクリーンショット 2021-05-02 16 45 18

 この番号を参照する形で新規ブランチを立てます。

git switch -c issue/11-APIResponseCache

 このように「一つのissueに一つのブランチが対応する」状態を作り、以降の作業は基本的にこのブランチ以下で行うようにします。

3. refer issue in commit message

 コミットメッセージ内に#{issue番号}を含めることで、issueとの相互参照が可能になります。
 どこまで実装したか、またそれに伴い発生した課題などをissue内で整理できるため、非常に便利です。

スクリーンショット 2021-05-02 17 07 13

コミットログには以下のように表示されます。#{issue番号}をクリックすると該当するissueに飛びます。

スクリーンショット 2021-05-02 17 08 09

4. PR & merge

 issueが一通り片付いたら、本流のブランチ(master, develop等)にPRを立てます。個人開発であればそのままmergeしてしまっても構わないでしょう。

スクリーンショット 2021-05-02 17 10 58

5. publish release

 溜まったissueを消化したら、新しいreleaseを立てます。releaseは必ず本流のブランチで立てるよう注意してください。
 この時、バージョンナンバーはSemantic versioningを参考にすると管理が容易になります(過去のバージョンのバグ修正もissueとして扱うことができるようになるため)。

スクリーンショット 2021-05-02 17 13 42

6. organize

 issueをクローズし、対応するリモートブランチを削除したらタスク終了です。insights/networkを確認すると、本流ブランチを中心にいくつものブランチが切られてはmergeされを繰り返す様子を拝むことができます。

スクリーンショット 2021-05-02 17 18 30

ありがとうございました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment