連載
» 2021年11月12日 05時00分 公開

VS Codeでソースコード管理:issueを作成してみようVisual Studio Codeで快適Pythonライフ

VS CodeのGitHub Pull Requests and issues拡張機能を使って、issueを作成する方法を紹介します。

[かわさきしんじ,Deep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Visual Studio Codeで快適Pythonライフ」のインデックス

連載目次

 前回は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()

myutil.pyファイル

issueの作成

 ここでWindows側のユーザーが「YYYY年MM月DD日(W)」形式に書式化された日付を取得する関数が必要だと思い、そのことをissueにまとめることにしたとしましょう。

 issueを作成するには、(GitHub Pull Requests and Issues拡張機能をインストールするとアクティビティーバーに表示される)[GitHub]ビューの[Issues]セクションにある[Create an Issue]ボタンをクリックします。

[GitHub]ビューの[Issues]セクションにある[Create an Issue]ボタンをクリックする [GitHub]ビューの[Issues]セクションにある[Create an Issue]ボタンをクリックする

 このボタンをクリックすると、以下のようにエディタ領域に[Newissue.md]タブがオープンされます。

[Newissue.md]タブ [Newissue.md]タブ

 ここでissueのタイトル、担当者、ラベル、詳細な説明などを記述します。以下は記述例です(ここでは、新規に機能を追加したいという例ですが、バグの報告ならバグが発生する状況や手順を記述する必要もあるでしょう)。

issueの記述例 issueの記述例

 issueはMarkdown記法を使って記述できます(この例では、関数名、クラス名などをバッククオートで囲んでいますね)。記述が終わったら、内容を保存してから、タブの右上にある[Create Issue]ボタンをクリックすることには注意してください。

[Create Issue]ボタン [Create Issue]ボタン

 作成したissueは、大本のリモートリポジトリへと送られます。以下はこれをブラウザで開いたところです。

issueをブラウザで開いたところ issueをブラウザで開いたところ

 このようにして作成したissueは、(自分が担当になっているときには)macOS側のVS Codeで最新の状態に更新すれば確認できます。しかし、先ほどは担当者の割り振りをしていなかったので、ここでは[Issue]セクションの[My Issues]にはこのissueが表示されていません(その下の[Created Issues]には自分が作成したissueが表示されます)。

issueの表示 issueの表示

 ここでブラウザから担当者を割り当ててみましょう。

担当者の割り当て 担当者の割り当て

 この状態で、VS Codeの[GitHub]ビューにある[Issues]セクションをリロードすると、次のようにissueが表示されます。

自分に割り当てられたissueの内容を表示したところ 自分に割り当てられたissueの内容を表示したところ

 残念なのは、issueの表示はできても、ディスカッション自体はブラウザベースで行う必要がある点です。それでも、自分に割り当てられているissueをVS Code内で把握できるのはよいところかもしれません。

 ここでは、何度かディスカッションをした後で、Windows側のユーザーが関数を実装することに決定したとしましょう。

トピックブランチの作成と機能の追加

 Windows側のユーザーが、このissueだけを取り扱うブランチ(トピックブランチ)を作成して、作業に取り掛かるにはやはり[GitHub]ビューの[Issues]セクションを使用します。

トピックブランチを作成して、issueに取り掛かる トピックブランチを作成して、issueに取り掛かる

 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

「YYYY年MM月DD日(W)」形式の日付を返す関数

 さらにコミット/プッシュも行い、プルリクエストまで作成したとしましょう(ここでは大本のリモートリポジトリのmainブランチにマージしてしまうことにします)。

プルリクエストの詳細 プルリクエストの詳細

 macOS側ではこのプルリクエストをもらいざっとコードを見てみたところ、コンフリクトもなく、コードも問題なさそうだったので、これをマージコミットしました。しかし、実はget_formatted_date関数は予想通りには動いてはくれません。

print(get_formatted_date())

日付を表示してみる

 このコードを実行してみたら、なんと「2021年11月10日(Wed)」のように曜日が英語で帰ってきたのです。

曜日は「日月火水木金土」の方がうれしい 曜日は「日月火水木金土」の方がうれしい

 というわけで、今度はバグをissueとして報告することにしましょう。ここでは[GitHub]ビューを使わずにやってみます。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。