当サイトはアフィリエイト広告による収入を得ています

【GitHub】issueを使ってみる

2025年7月1日

実際のシステム開発をイメージした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"を押す。

GitHub管理画面

「New issue」を押す。

GitHub 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` を利用してフォーマット
GitHub issue作成画面

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

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

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

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

issueが作成されました。

GitHub 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:GitHbubの番号
・timestamp:実装する内容を簡易的に示したもの

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

Git Bush の画面

実装する

"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とします。

paiza.ioの画面

コミット

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

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

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

Git Bush の画面

【コマンドの意味】
・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 issue画面

プルリクエストを出す

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

GitHub管理画面

「Compare & pull request」を押す。

GitHub 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
 マイルストーンを設定できる

GitHub pull request作成画面

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

マージする

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

「Merge pull request」を押す。

GitHubマージリクエスト画面

「Confirm merge」を押す。

GitHub pull マージ画面

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

GitHub issue画面

issueをクローズする

issueをクローズします。

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

GitHub 管理画面

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

GitHub close issue画面

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

GitHub issue画面

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

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

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

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

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

GitHub Bush画面

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

おすすめ記事

Galaxy S26 Ultra

スマホ

2026/9/27

【Galaxy S26 Ultra レビュー】さらに日常向けに最適化された最高峰スマホ

僕は毎年Samsungの新作発表会を楽しみにしてたんだけど、ここ数年は新しいスマホが発表されても「どうせAIでしょ」みたいな感じでわくわくすることはなくなってきてた。 ただ、今年は一味違って、AI以外に「プライバシーディスプレイ」なる世界初の機能が搭載されて久しぶりにわくわくしたんだ。1年前にGalaxy S25Ultraを買ったばかりで、ふつうに考えれば買い替える必要はまったくないんだけど、思わず買ってしまった。 この記事では、発売して3ヶ月使いこんだうえでのレビューをしていく。 【Galaxy S26 ...

スマホ デスク環境

2026/7/15

【デスク環境が変わる】Ankerの巻き取り式充電ステーションレビュー【迷わず買え】

発売当初はすぐに売り切れた、巻き取り式ケーブル搭載の充電ステーションAnker Nano Charging Station (7-in-1, 100W, 巻取り式 USB-Cケーブル)。 最初は「そんなにいいの?」と思っていたけど、使ってみるとマジでいい。デスク環境が変わるから、ちょっとでも気になっているなら迷わず買ってほしい商品。 とはいえ急に「買え」と言われても「なんで?」となるから実際の使用感を解説していく。 Anker Nano Charging Station 7-in-1 100Wの ...

ガジェット ライフハック

2026/7/18

【Google Home スピーカー レビュー】Nestシリーズを持っている人は買い替え不要

僕はこれまでスマートスピーカーはGoogle Nest Mini 第2世代を使っていて、今年の4月くらいにGemini for Homeに対応したんだ。 そして6月25日になって、デフォルトでGemini for Homeを搭載したGoogle Home スピーカーが発売された。ただ、これがNest Miniとどう違うのかよく分からない。 2019年発売のGoogle Nest Mini第2世代。Gemini for Homeに対応した だけどGoogle公式が「Gemini for Home向けに作られ ...

スマートウォッチ

2026/9/7

【Pixel Watch 5レビュー】進化なし。5じゃなくて4を買え

今年もGoogleからPixel watch5が発売されたけど、購入前から正直Pixel Watch4から大きな進化は感じていなかったんだ。 理由はいろいろあるんだけど、「購入してみないと分からないことがあるかもしれない」「何か違いがあるだろう」と思ったから購入した。1週間使ってみたから、実際にどうだったのかまとめていく。 【結論】Pixel Watch 4からの買い替えは不要 まず結論からだけど、今Pixel Watch 4を持っている人はPixel Watch 5に買い替える価値はない。 なぜなら日常 ...

Bose QuietComfort Ultra Headphones (第2世代)

オーディオ

2026/6/23

【Bose QuietComfort Ultra Headphones (第2世代)レビュー】長時間使用も◎最高級の音楽体験を手に入れられるヘッドホン

僕はSONYのWH-1000XM6を持っていて、間違いなく最高級のヘッドホンではあるんだけど、弱点が1つ。 それは1時間も着けていると耳が痛くなってくることなんだ。ノイキャンや音質はいいけど、長い時間装着することができないのが地味にストレス。 飛行機を使う旅行が控えていたこともあって、1時間以上は痛みや違和感なく付けられるヘッドホンが欲しいなと思いBoseのQuietComfort Ultra Headphones 第2世代を購入したからレビューしていく。 Bose QC Ultra Headphones ...

  • この記事を書いた人
アイコン

おーくまん

副業ガジェットブロガー。どの企業とも繋がりがないため、忖度一切なしのレビューをします。

-GitHub
-