VS CodeのGitHub Pull Requests and issues拡張機能を使って、issueを作成する方法を紹介します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
前回はVisual Studio Code(以下、VS Code)にGitHub Pull Requests and issues拡張機能をインストールして、そこからプルリクエストを発行する手順を紹介しました。今回はこの拡張機能を使って、issue(イシュー、バグ修正や機能の追加などに関する報告/提案をまとめ、チーム内でそれらを共有し、ディスカッションなど行えるようにする機構)を作成してみましょう。
今回もmacOS側とWindows側でGitHubのユーザーアカウントを異なるものとして、VS CodeとGitHubの配色はmacOS側では黒系に、Windows側では白系にして、どちらで操作をしているのかが分かりやすくなるようにしています。
2つのGitHubアカウントのリモートリポジトリ、macOS側とWindows側のローカルリポジトリのいずれでもmyutil.pyファイルを作成して、以下のようなコードを記述した状態とします(get_time関数は必要なのか、という気はしますが、それは置いておいてください)。
from datetime import datetime
def get_time():
return datetime.now()
ここでWindows側のユーザーが「YYYY年MM月DD日(W)」形式に書式化された日付を取得する関数が必要だと思い、そのことをissueにまとめることにしたとしましょう。
issueを作成するには、(GitHub Pull Requests and Issues拡張機能をインストールするとアクティビティーバーに表示される)[GitHub]ビューの[Issues]セクションにある[Create an Issue]ボタンをクリックします。
このボタンをクリックすると、以下のようにエディタ領域に[Newissue.md]タブがオープンされます。
ここでissueのタイトル、担当者、ラベル、詳細な説明などを記述します。以下は記述例です(ここでは、新規に機能を追加したいという例ですが、バグの報告ならバグが発生する状況や手順を記述する必要もあるでしょう)。
issueはMarkdown記法を使って記述できます(この例では、関数名、クラス名などをバッククオートで囲んでいますね)。記述が終わったら、内容を保存してから、タブの右上にある[Create Issue]ボタンをクリックすることには注意してください。
作成したissueは、大本のリモートリポジトリへと送られます。以下はこれをブラウザで開いたところです。
このようにして作成したissueは、(自分が担当になっているときには)macOS側のVS Codeで最新の状態に更新すれば確認できます。しかし、先ほどは担当者の割り振りをしていなかったので、ここでは[Issue]セクションの[My Issues]にはこのissueが表示されていません(その下の[Created Issues]には自分が作成したissueが表示されます)。
ここでブラウザから担当者を割り当ててみましょう。
この状態で、VS Codeの[GitHub]ビューにある[Issues]セクションをリロードすると、次のようにissueが表示されます。
残念なのは、issueの表示はできても、ディスカッション自体はブラウザベースで行う必要がある点です。それでも、自分に割り当てられているissueをVS Code内で把握できるのはよいところかもしれません。
ここでは、何度かディスカッションをした後で、Windows側のユーザーが関数を実装することに決定したとしましょう。
Windows側のユーザーが、このissueだけを取り扱うブランチ(トピックブランチ)を作成して、作業に取り掛かるにはやはり[GitHub]ビューの[Issues]セクションを使用します。
issueのタイトルの右にある[→]ボタンをクリックすると、「アカウント名/issueN」のようなブランチが作成されます(Nはissueに付けられた番号)。このブランチで以下のような関数を記述したものとします。
def get_formatted_date(t=None):
if not t:
t = datetime.now()
d = t.strftime('%Y年%m月%d日(%a)')
return d
さらにコミット/プッシュも行い、プルリクエストまで作成したとしましょう(ここでは大本のリモートリポジトリのmainブランチにマージしてしまうことにします)。
macOS側ではこのプルリクエストをもらいざっとコードを見てみたところ、コンフリクトもなく、コードも問題なさそうだったので、これをマージコミットしました。しかし、実はget_formatted_date関数は予想通りには動いてはくれません。
print(get_formatted_date())
このコードを実行してみたら、なんと「2021年11月10日(Wed)」のように曜日が英語で帰ってきたのです。
というわけで、今度はバグをissueとして報告することにしましょう。ここでは[GitHub]ビューを使わずにやってみます。
Copyright© Digital Advantage Corp. All Rights Reserved.