0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHubのIssueで依頼を記録する。頼んだことと直したことを一本につなげる【非エンジニアのGitHub入門⑤】

0
Posted at

前回は、プルリクエストで修正案を出し、確かめてから取り込む流れを体験しました。最後に「次回はIssue」と予告していたので、今回はそのIssue(イシュー)を使います。

仕事にたとえると、Issueは依頼票です。課題管理表の1行と言ってもかまいません。「ここを直してほしい」「こういうものを作りたい」という依頼を、1件ずつ番号を付けて記録しておく場所です。

依頼は、記録しておかないとすぐに散らばります。第1回の佐藤さんの場面を思い出してください。修正の依頼はチャットに、補足はメールに、確認結果は佐藤さんの記憶の中にありました。今回は、その「依頼」の部分をGitHubの中に置いてみます。

Issueに書くもの

Issueには、仕事として片付けたいことを何でも書けます1。直したいところ、追加したいもの、思いついたアイデア、誰かに相談したいこと。どれも1件のIssueになります。

Issueを立てると、「#1」「#2」のような番号が自動で付きます。この番号が、あとで依頼と修正をつなぐ鍵になります。

書くときのコツは、1つのIssueに1つの依頼だけを書くことです。「READMEを直す」のように大きくまとめると、どこまでやれば済んだのかが分からなくなります。「READMEに問い合わせ先を書く」のように、終わりが見える単位に分けておくと、片付いたかどうかがはっきりします。

Issueには、Open(対応中)とClosed(対応済み)の2つの状態があります。対応が済んだIssueは閉じますが、消えるわけではありません。どんな依頼があり、どう片付いたのかは、あとからいつでもたどれます。

Issueを立てる

第3回から使っている work-notes リポジトリで試します。READMEに「問い合わせ先」を書き足してほしい、という依頼を記録してみましょう。

リポジトリの上に並ぶタブから「Issues(イシュー)」を開き、緑の「New issue(新しいイシュー)」を押します2。タイトルと本文を書く画面が出ます。

タイトルは、何をしたいのかが一目で分かる短い文にします。

READMEに問い合わせ先を書く

本文には、なぜそれが必要なのかと、やることを書きます。

READMEを見た人が、誰に聞けばよいか分からない。
問い合わせ先を書いておけば、迷わずに済む。

- [ ] 担当部署を書く
- [ ] 連絡方法を書く

- [ ] で始まる行は、Issueの画面ではチェックボックスになります3。終わった項目にチェックを入れていけば、どこまで進んだのかが一目で分かります。ここでも、空行を1つ入れてから箇条書きを始めておくのが確実です。

書けたら、右下の緑の「Create(作成)」ボタンを押します2。

Issueの作成画面
AdobeExpressPhotos_aca4a8f9de8d4c6f930383ecadde46de_CopyEdited.png

画像① タイトルには「何を」、本文には「なぜ」と、やることを書く

作成すると、タイトルの横に「#1」のような番号が付きます。本文のチェックボックスも、押せる形で表示されているはずです。

番号は、1から順に付くとは限りません。Issueとプルリクエストは、同じリポジトリの中で1つの通し番号を分け合っているからです。第4回の練習で work-notes にプルリクエストを1つ作っていれば、それが「#1」なので、今回のIssueは多くの場合「#2」になります。この先の手順では、表示された番号をそのまま使ってください。この記事の画像は、第4回の撮影でプルリクエストを2つ作ったリポジトリで撮っているため、番号が「#3」になっています。

画面の右側には、Assignees(担当者)やLabels(ラベル)といった欄が並んでいます。担当者を決めたり、「急ぎ」「質問」のような札を付けて分類したりするためのものです1。一人で使ううちは空欄のままで困りません。

作成されたIssue
image.png

画像② 番号が付き、やることがチェックボックスになっている

コメントで相談する

Issueの下には、コメント欄があります。依頼について相談したいことは、ここに書きます。

たとえば、問い合わせ先を個人の名前にするか、部署の名前にするか。担当者が替わるたびに書き直すのは手間なので、部署名にしよう、という結論になったとします。そのやり取りを、コメントとして残しておきます。

担当者が替わっても書き直さずに済むよう、個人名ではなく部署名にします。

書けたら、コメント欄の下にある「Comment(コメントする)」を押して投稿します。

Issueに付けたコメント
image.png

画像③ 相談した内容と結論を、依頼と同じ場所に残す

メールやチャットで相談すると、依頼とは別の場所に結論が散らばります。Issueのコメントなら、依頼と相談と結論が、1つの画面に並んだままです。

同僚に意見を聞きたいときは、コメントに「@」に続けてその人のアカウント名を書きます。名前を呼ばれた人には、通知が届く仕組みです1。関係する別のIssueがあれば、「#」に続けて番号を書くだけで、そのIssueへのリンクになります。今回は一人で練習しているので、どちらも使わなくて構いません。リポジトリを複数人で使うようになったときに、思い出してください。

Issueとプルリクエストをつなぐ

依頼が固まったら、修正に取りかかります。やり方は第4回と同じです。READMEを編集し、2つ目の選択肢(新しいブランチを作って、プルリクエストを始める)で記録します。

READMEの最後に、空行を入れてから次の2行を書き足します。2行の間にも、空行を1つ入れてください。入れないと、Previewで1行につながって表示されることがあります。

問い合わせ先:営業企画部

連絡方法:社内チャットの営業企画部チャンネル

Issueのチェックリストに書いた「担当部署」と「連絡方法」が、これで両方そろいます。

違うのは、プルリクエストの説明欄の書き方です。何を変えたか、なぜ変えたかに加えて、次の1行を書きます。

Closes #1

#1 の部分は、さっき立てたIssueに付いた番号に置き換えてください。第4回の練習をしていれば、多くの場合は Closes #2 になります。「Closes」に続けてIssueの番号を書くと、このプルリクエストとIssueがつながります4。「このプルリクエストは、あの依頼を片付けるためのものです」という印です。

説明欄にCloses #1と書いたプルリクエスト
image.png

画像④ 説明欄に「Closes #番号」と書くと、プルリクエストとIssueがつながる

プルリクエストを作ってからIssueの画面に戻ると、つながったプルリクエストが3か所に表示されています。タイトルの下の「Open」の横、右側の「Development(開発)」欄、そしてコメントの流れの中の「linked a pull request that will close this issue(このIssueを閉じるプルリクエストがつながりました)」という記録です。依頼の側からも、どの修正案で対応しているのかが分かるわけです。

プルリクエストとつながったIssue
image.png

画像⑤ Issueの側からも、対応しているプルリクエストが見える

マージすると、Issueが自動で閉じる

修正案を確かめたら、マージする前に、Issueの本文のチェックボックスにもチェックを入れておきましょう。担当部署と連絡方法、どちらも書き足したはずです。依頼の側から見ても、やることが全部済んだと分かる状態になります。

それから、第4回と同じ手順でマージします。

マージが済んでからIssueを開いてみてください。状態が「Closed(対応済み)」に変わっています4。Issueを自分で閉じる操作はしていません。プルリクエストのマージに合わせて、GitHubが自動で閉じてくれました。コメントの流れの最後には「closed this as completed in #4」のように、どのプルリクエストで片付いたのかも記録されています。

自動で閉じたIssue
image.png

画像⑥ マージに合わせて、Issueが自動で「Closed」になる

これで、依頼から取り込みまでが一本の記録でつながりました。

  • Issue:何を頼み、なぜ必要で、どう相談したか
  • プルリクエスト:どう直し、誰が確かめたか
  • 履歴:いつ、本体に取り込まれたか

どこから見始めても、ほかの2つにたどり着けます。

Issueとプルリクエストの使い分け

IssueとプルリクエストはGitHubの画面上でよく似ていて、どちらにもタイトルと本文とコメント欄があります。迷ったら、次のように考えると整理しやすくなります。

  • Issue:「何をしたいか」を書く場所。まだ直し方が決まっていなくても立てられる
  • プルリクエスト:「こう直しました」を出す場所。中身は、具体的な変更(差分)

依頼が先、修正案が後、という順番です。小さな修正なら、Issueを立てずにいきなりプルリクエストを出しても問題はありません。ただ、「なぜ直すのか」を後から確かめたくなりそうな修正は、先にIssueを立てておくと、理由と相談の経緯が残ります。

つまずきやすいところ

「Closes #1」は、プルリクエストの説明欄に書いてください。キーワードがIssueを閉じるのは、プルリクエストがリポジトリの本体(main)に向けて出されているときだけです4。第4回の手順どおりに作ったプルリクエストなら、本体に向いているので心配はいりません。

「#」と数字は、半角で書いてください。全角の「#1」では、Issueとつながりません。

「Closes」のほかに、「Fixes」や「Resolves」でも同じようにつながります4。どれを使っても構わないので、迷ったら「Closes」で統一するのがおすすめです。

コメントを入力している間は、「Comment」の隣のボタンが「Close with comment(コメントして閉じる)」に変わります。押すとコメントと同時にIssueが閉じてしまうので、相談を書き込むときは「Comment」のほうを押してください。間違えて閉じても、Issueの画面の「Reopen issue」で開き直せます。

閉じたIssueが見当たらなくなっても、慌てなくて大丈夫です。Issuesタブの一覧は、最初は対応中(Open)のものだけを表示しています。一覧の上にある「Closed」(件数付きで「Closed (1)」のように表示されます)を押せば、閉じたIssueも出てきます。

対応が済んだのに、プルリクエストとつながっていないIssueは、Issueの画面の下にある「Close issue」で手動で閉じられます5。

佐藤さんの依頼を、Issueにしてみると

第1回の佐藤さんは、AIに「部門別の内訳も出して」と頼みました。総額まで変わったのを見て、頼んだ範囲を超えていることには、すぐに気づいています。「部門別にして、と頼んだだけなのに」という一言が、それを物語っています。問題は、気づけなかったことではありません。何を頼み、何は変えてほしくなかったのか。その依頼が、AIにも同僚にも伝わる形でどこにも残っていなかったことです。

もし最初に、こんなIssueを立てていたらどうでしょう。

集計ツールに、部門別の内訳を追加する。

- [ ] 部門ごとの売上を表示する
- [ ] 売上総額の計算方法は変えない

「総額の計算方法は変えない」と書いてあれば、第1回の後半で描き、第4回で種明かしをした場面が、もっと楽になります。修正案の差分に集計条件の書き換えが混ざっていたら、Issueと見比べるだけで「頼んだ範囲を超えている」と言えるからです。コメントで「集計条件は昨日の版のままにしてください」と返すときも、根拠を示せます。

同僚の田中さんが進めていた日付の修正も、別のIssueとして立てておけます。佐藤さんの依頼が「#3」、田中さんの依頼が「#4」というように、番号で分けておく。それぞれのプルリクエストに「Closes #3」「Closes #4」と書けば、どの修正がどの依頼に対応しているのかが、取り違えようのない形で残ります。第1回の共有フォルダで起きていた「誰の、どの修正が入っているのか分からない」という状態には、なりにくくなるはずです。

依頼を文章にしておくことには、もう1つ利点があります。この連載の後半で扱うのは、AIのCodex(OpenAIが提供する、開発作業を任せられるAI)に作業を任せる方法です。Issueに書いた依頼は、そのままAIへの指示の下書きにもなります。何を頼み、何は変えてほしくないのか。人に頼むときもAIに頼むときも、最初に書くべきことは同じです。

まとめと次回予告

今回分かったことは3つです。

  • Issueは、依頼に番号を付けて記録する場所
  • 依頼についての相談と結論も、同じIssueに残せる
  • プルリクエストに「Closes #番号」と書けば、マージで依頼まで片付く

第3回から、ここまではすべてブラウザの中で操作してきました。次回は、自分のパソコンとGitHubをつなぎます。GitHubのリポジトリをパソコンに写し、手元で変えた内容をGitHubに送る。AIのCodexに手元で作業してもらうための、土台づくりです。

実はこの記事も、今回の手順どおりにIssueから作っています。その舞台裏は、次回以降でお見せします。

  1. GitHub Docs(Issueについて) ↩ ↩2 ↩3

  2. GitHub Docs(Issueの作成) ↩ ↩2

  3. GitHub Docs(タスクリストについて) ↩

  4. GitHub Docs(プルリクエストをIssueにリンクする) ↩ ↩2 ↩3 ↩4

  5. GitHub Docs(Issueをクローズする) ↩

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?