ライフハック

【GitHub】issueを使ってみる

実際のシステム開発をイメージしたissue作成~closeまでの流れを再現していきたいと思います。
今回はC言語で"Hello World!"を出力できるソースコードを作成してリモートリポジトリに登録していきます。

なんグラマ
なんグラマ

"なんちゃってプログラマ"の略でなんグラマです。プログラムを書いたり、ガジェットを紹介したりします。
お問い合わせ
プライバシーポリシー

issueとは

公式サイトには、以下のように書かれています。

リポジトリに問題を作成して、作業の計画、議論、追跡を行うことができます。

"問題"というのはバグや実装したい機能のことを指していて、これらを管理するためにissueがあります。

ざっくりと、何ができるのかをまとめます。

  • アサインで、責任者を割り当てられる
  • ラベルで、どのようなissueなのか一目で分かる
  • プロジェクトに紐づけて、
  • マイルストーンで、進捗管理ができる

issueの使い方

今回の仕様

前回の記事で、"Hello, Worid!"を標準出力するプログラムを作成しました。

今回は、前回作成したプログラムに手を加えていきます。

今回の仕様

C言語で"Hello, Worid!"の標準出力の文字列の前に、タイムスタンプを付与する。

実行結果イメージ:"[YYYY-MM-DD HH:MM:SS] Hello, World!"

issueを登録する

GitHubのsampleリポジトリの管理画面から"isseus"を押す。

「New issue」を押す。

以下のように入力して、「Create」を押す。

・title:

出力にタイムスタンプを付加する機能を追加

・description

### 概要
Hello, World! プログラムの先頭に
実行日時を `[YYYY-MM-DD HH:MM:SS]` 形式で付与して出力する

### 受け入れ基準
1. `gcc main.c -o hello` でビルドが成功する  
2. `./hello` 実行で `[2025-06-27 10:15:30] Hello, World!` のように出力  
3. `strftime` を利用してフォーマット

【その他の設定(今はスルー)】
・Assignee
 issueの担当者を割り当てる。10名まで割り当てられる。(公式サイト

・Labels
 issueにラベルを付けて分類する。(公式サイト

・Projects
 issueがどのプロジェクトに該当するかを設定できる(公式サイト

・Milestone
 issueに締め切り日を設定する(公式サイト

issueが作成されました。

ローカル環境を最新化する

「Git Bash」を開き、プロジェクトフォルダへ"cd"(チェンジ ディレクトリ)コマンドで作業ディレクトリへ移動します。

以下のコマンドを実行します。

git checkout main
git pull origin main

ローカル環境でブランチを切る

ローカル環境でブランチを「git checkout -b」コマンドで作成します。
このコマンドは、ブランチを作成した後に、作成したブランチに切り替えるという意味です。
ブランチ名は、今回は"feature/issue-1-hello-world"とします。

以下のコマンドを実行します。

git checkout -b feature/issue-1-timestamp

【今回のブランチ名の意味】
・feature:機能追加
・issue-1:GitHbuの番号
・timestamp:実装する内容を簡易的に示したもの

【ブランチの確認をする】
今のリポジトリに何のブランチがあるか確認するコマンドは、「git branch」です。

実装する

"Hello, World!"と標準出力されるC言語ファイルをmain.cをプロジェクトのディレクトリに作成します。
以下のコードをコピーし、作成したmain.cに張り付けてください。

前回の記事で作成した、"Hello, World!"と標準出力されるプログラムを書き換えていきます。
以下のコマンドを実行してください。

cat << 'EOF' > main.c
#include <stdio.h>
#include <time.h>

int main(void) {
    time_t now = time(NULL);
    struct tm *t = localtime(&now);
    char buf[20];
    strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", t);

    printf("[%s] Hello, World!\n", buf);
    return 0;
}
EOF

テスト

テキトーに選んだブラウザ上のC言語実行環境で実行すると動いたのでOKとします。

コミット

Git Bushで以下のコマンドを実行します。

git add main.c
git commit -m 'feature: タイムスタンプ付き Hello, World! を出力 (#1)'

以下のような表示なればOKです。

【コマンドの意味】
・git add main.c
 mainl.cをインデックスに登録します

・git commit -m 'feature: Hello, World!を出力する機能を追加 (#1)'
 コミットします。#1はissue番号で、GitHub上で自動的にissueとリンクされます。

リモートにpushする

「git push」コマンドを実行して、リモートリポジトリへプッシュします。
このとき、リモートリポジトリにブランチを作成するようにします。

以下のコマンドを実行します。

git push -u origin feature/issue-1-timestamp

GitHubを開くと、無事にプッシュできていることが分かります。

プルリクエストを出す

GitHubのsampleリポジトリの管理画面から"Pull request"を押す。

「Compare & pull request」を押す。

descriptionを入力し、「Create pull request」を押す。

### 概要
Hello, World!の前に実行時のタイムスタンプを表示する機能を追加

### 動作確認手順
```bash
gcc main.c -o hello
./hello
# => [2025-06-27 10:15:30] Hello, World!

【その他の設定】
・Reviewers
 レビュワーを指定できる。今回はプロジェクトメンバが誰もいないので設定しない。

・Assignees
 プルリクの責任者をアサインできる。

・Labels
 このプルリクが何なのかをタグ付できる(「feature」「bug」など)

・Projects
 プルリクをプロジェクトに紐づけできる

・Milestone
 マイルストーンを設定できる

これで、プルリクを出すことができました。
レビュワーがいる場合は、レビューが完了するまで待ちます。

マージする

レビューが終了したら、作成したコードをmainにマージしていきます。

「Merge pull request」を押す。

「Confirm merge」を押す。

"Pull request successfully merged and closed"と表示されました。これで、プルリク~マージまで完了しました。
今回作成したブランチは不要になるので「Delete branch」を押してブランチを削除してください。

issueをクローズする

issueをクローズします。

issueの管理画面から、今回のissueを開きます。

「Close issue」を押す。
コメントは必ず入れる必要はありません。

これでクローズが完了しました!

後処理(ローカルリポジトリのクリーンアップ)

ローカルリポジトリをクリーンアップして作業終了です。

「Git Bush」で以下のコマンドを実行してください。
リモートの最新情報をmainブランチに取り込み、不要なブランチを削除します。

git checkout main
git pull origin main
git branch -d feature/issue-1-timestamp

以下のようになると成功です。

【なぜクリーンアップするのか】
ブランチが増えすぎると管理が大変になるからです。誤ったブランチで作業をしてしまう可能性があるため、不要なブランチは削除していきます。

  • この記事を書いた人

なんグラマ

福岡県在住の23歳。高校を卒業後2年くらいシステムエンジニアをして、接客業に転職。プログラムを書くことが今でも好きで、ChatGPTなどを活用して仕事やプライベートを楽する方法を探しています。ガジェット、甘い食べ物が大好き。

こんな記事もいかがですか?

1

自宅でパソコンを触るときはよくワイヤレスイヤホンで作業用のBGMを流しています。ただ、イヤホンは長時間つけっぱなしにすると耳が痛くなってきます。なので、耳の痛くなりにくいヘッドホンが欲しいと思い、ヘッ ...

2

安くて高性能と話題になっていたSoundCore Liberty 4の後継機がついに発売されました。しばらくイヤホンを買っていなかったので、これを機に買ってみることにしました。 Anker Sound ...

3

私はスマホにはストレスのない最高のものを使いたいと思っています。なぜなら、毎日触れるから。今までGalaxy Z Fold5を使っていて、大きな不満はなかったのですがカメラだけはいまいち使い勝手がよく ...

-ライフハック
-