はじめに:GitとGitHubの違い

前回の記事でGitの基礎を学んだなら、今回は一歩進んでGitHubを活用したコラボレーションについて見ていきましょう。まず、多くの方が混同しがちなGitとGitHubの違いから確認しておきましょう。

Gitはバージョン管理システムです。皆さんのコンピュータでローカルに動作し、ファイルの変更履歴を追跡・管理します。インターネット接続なしでも完全に機能します。

GitHubはGitリポジトリをホスティングしてくれるWebサービスです。簡単に言えば、皆さんのGitリポジトリをインターネット上にアップロードして、他の人と共有・コラボレーションできるようにするプラットフォームです。GitHub以外にもGitLab、Bitbucketなど似たようなサービスがありますが、GitHubが最も広く使われています。

例えるなら、Gitは日記帳で、GitHubは日記帳を保管して友達と共有できるクラウドサービスと考えればいいでしょう。

GitHubは単にコードを保存する場所を超えて、世界中の開発者がコラボレーションする最大のコミュニティとなりました。オープンソースプロジェクトのほとんどがGitHubで管理されており、多くの企業が採用時に応募者のGitHubプロフィールを参考にすることもあります。それほど現代の開発者にとってGitHubは必須のツールでありポートフォリオです。

1. GitHubアカウント作成と初期設定

1.1 アカウントを作成する

GitHubアカウントを作成するプロセスは簡単です。

  1. github.comにアクセスします。
  2. 「Sign up」ボタンをクリックします。
  3. メールアドレス、パスワード、ユーザー名を入力します。
  4. メール認証を完了します。

ユーザー名(Username)選択のヒント:

  • 英語の小文字、数字、ハイフン(-)のみ使用可能です。
  • プロフェッショナルに見える名前を選びましょう。この名前がGitHubのURLになります(github.com/ユーザー名)。
  • 複雑すぎたり長すぎる名前は避けましょう。後で他の人が言及しにくくなります。
  • 可能であれば、他のプラットフォームで使用している名前と同じにするとブランディングに役立ちます。

1.2 プロフィールを設定する

アカウントを作成したら、プロフィールを設定しましょう。右上のプロフィールアイコンをクリックして「Settings」に移動します。

  • Profile picture:自分を表す写真やアイコンを設定しましょう。
  • Bio:簡単な自己紹介を書きます。
  • Location:位置情報を入力できます。
  • Website:個人ブログやポートフォリオのリンクを追加しましょう。

2. SSHキーの設定

GitHubにコードをアップロードするには認証が必要です。毎回パスワードを入力するのは面倒で、セキュリティ上も良くありません。SSHキーを設定すると、安全に自動認証できます。

2.1 SSHキーとは?

SSH(Secure Shell)キーは公開鍵暗号方式を使用する認証方法です。2つのキーがペアで生成されます。

  • 秘密鍵(Private Key):皆さんのコンピュータにのみ保存する秘密のキーです。絶対に他の人と共有してはいけません。
  • 公開鍵(Public Key):GitHubに登録するキーです。他の人に公開しても安全です。

2.2 SSHキーの生成

ターミナルを開いて次のコマンドを実行します。

# SSHキーを生成(メールはGitHubアカウントのメールに変更)
ssh-keygen -t ed25519 -C "your_email@example.com"

コマンドを実行すると、いくつかの質問が表示されます。

# キーの保存場所(デフォルト値を使用推奨、Enterキーを押す)
Enter file in which to save the key (/Users/you/.ssh/id_ed25519):

# パスフレーズの設定(オプション、追加のセキュリティのため設定推奨)
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

2.3 SSHエージェントにキーを登録

生成されたSSHキーをSSHエージェントに登録します。

# SSHエージェントを起動
eval "$(ssh-agent -s)"

# 秘密鍵を登録
ssh-add ~/.ssh/id_ed25519

2.4 GitHubに公開鍵を登録

まず公開鍵の内容をコピーします。

# macOS
pbcopy < ~/.ssh/id_ed25519.pub

# Windows (Git Bash)
clip < ~/.ssh/id_ed25519.pub

# Linux
cat ~/.ssh/id_ed25519.pub
# 出力された内容を直接コピー

その後、GitHubで:

  1. Settings > SSH and GPG keysに移動します。
  2. 「New SSH key」ボタンをクリックします。
  3. Titleにこのキーを識別できる名前を入力します(例:「MacBook Pro」、「Office Desktop」)。
  4. Keyフィールドにコピーした公開鍵を貼り付けます。
  5. 「Add SSH key」ボタンをクリックします。

2.5 接続テスト

SSH設定が正しく行われたか確認します。

ssh -T git@github.com

初めて接続すると、ホストを信頼するか尋ねられます。「yes」を入力してください。成功すると次のようなメッセージが表示されます。

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

3. リモートリポジトリの作成と接続

3.1 GitHubで新しいリポジトリを作成

GitHubのWebサイトで新しいリポジトリを作成してみましょう。

  1. GitHubホームページの右上にある「+」ボタンをクリックします。
  2. 「New repository」を選択します。
  3. リポジトリ名(Repository name)を入力します。
  4. 説明(Description)を入力します(オプションですが推奨)。
  5. 公開(Public)または非公開(Private)を選択します。
  6. 「Create repository」をクリックします。

リポジトリ名のルール:

  • 英語の小文字、数字、ハイフン(-)、アンダースコア(_)を使用します。
  • プロジェクトの内容がわかる明確な名前を選びましょう。
  • 例:my-portfolioreact-todo-apppython-data-analysis

3.2 ローカルリポジトリとリモートリポジトリの接続

すでにローカルで作業中のプロジェクトがある場合、これをGitHubリポジトリと接続できます。

# ローカルプロジェクトフォルダに移動
cd my-project

# Gitリポジトリを初期化(まだの場合)
git init

# リモートリポジトリを追加
git remote add origin git@github.com:ユーザー名/リポジトリ名.git

# リモートリポジトリを確認
git remote -v

originはリモートリポジトリのニックネームです。慣例的にメインのリモートリポジトリをoriginと呼びます。

3.3 git clone - リモートリポジトリを複製

他の人のプロジェクトやすでにGitHubにあるプロジェクトを自分のコンピュータに持ってくる際に使用します。

# SSH方式(推奨)
git clone git@github.com:ユーザー名/リポジトリ名.git

# HTTPS方式
git clone https://github.com/ユーザー名/リポジトリ名.git

# 別のフォルダ名でクローン
git clone git@github.com:ユーザー名/リポジトリ名.git my-folder-name

3.4 git push - ローカルの変更をアップロード

ローカルでコミットした内容をリモートリポジトリにアップロードします。

# 基本的なpush
git push origin main

# 初めてpushする際(-uオプションでデフォルトブランチを設定)
git push -u origin main

# その後は簡単に
git push

-uオプションを使用すると、ローカルのmainブランチとリモートのorigin/mainブランチが接続され、以降はgit pushだけで済みます。

3.5 git pull - リモートの変更を取得

他の人がリモートリポジトリにアップロードした変更を自分のローカルに取得します。

# リモートリポジトリの変更を取得してマージ
git pull origin main

# デフォルトブランチが設定されていれば
git pull

git pullは実際には2つの作業を一度に行います:git fetch(リモートの変更をダウンロード)+ git merge(ローカルブランチにマージ)。

3.6 git fetch - リモートの変更を確認

リモートリポジトリの変更を取得しますが、ローカルブランチにはマージしません。変更を確認した後にマージするかどうかを決められます。

# リモートのすべての変更を取得
git fetch origin

# リモートとローカルの差分を確認
git log origin/main..main  # ローカルにのみあるコミット
git log main..origin/main  # リモートにのみあるコミット

# 確認後にマージ
git merge origin/main

4. GitHub Webインターフェースの活用

GitHubはターミナルなしでもWebで様々な作業ができます。

4.1 ファイルの閲覧と編集

  • リポジトリでファイルをクリックすると内容を見ることができます。
  • 鉛筆アイコンをクリックするとWebで直接ファイルを修正できます。
  • 修正後、下部でコミットメッセージを入力して「Commit changes」をクリックすれば完了です。

4.2 コミット履歴の確認

  • リポジトリのメインページで「commits」リンクをクリックします。
  • 各コミットをクリックすると変更内容を確認できます。
  • 追加された行は緑色、削除された行は赤色で表示されます。

4.3 ブランチの管理

  • ブランチドロップダウンで現在のブランチを確認し、他のブランチに切り替えられます。
  • 新しいブランチを作成することもできます。
  • Settings > Branchesでデフォルトブランチを変更できます。

4.4 ForkとStar

  • Star:気に入ったプロジェクトに星をつけてブックマークする機能です。後で見つけやすくなり、プロジェクトへの関心を表現する方法でもあります。
  • Fork:他の人のリポジトリを自分のアカウントにコピーします。元のリポジトリに影響を与えずに自由に修正できます。オープンソースへの貢献時に主に使用します。

5. README.mdの作成

READMEファイルはプロジェクトの顔です。GitHubでリポジトリにアクセスすると最初に表示されるのがREADMEファイルです。良いREADMEはプロジェクトの価値を高め、他の人がプロジェクトを理解・使用するのに大いに役立ちます。

5.1 READMEに含める内容

  • プロジェクトタイトルと説明:このプロジェクトが何かを簡単に説明
  • インストール方法:プロジェクトをローカルで実行する方法
  • 使用方法:基本的な使い方や例
  • 機能:主要機能のリスト
  • 技術スタック:使用した技術やライブラリ
  • 貢献方法:プロジェクトに貢献したい人向けのガイド
  • ライセンス:プロジェクトの使用条件

5.2 README作成例

# プロジェクト名

プロジェクトについての簡単な説明をここに書きます。

## 機能

- 機能1:説明
- 機能2:説明
- 機能3:説明

## インストール方法

```bash
# リポジトリをクローン
git clone https://github.com/username/project.git

# ディレクトリに移動
cd project

# 依存関係をインストール
npm install
```

## 使用方法

```bash
# 開発サーバーを起動
npm run dev
```

## 技術スタック

- Frontend: React, TypeScript
- Backend: Node.js, Express
- Database: PostgreSQL

## 貢献する

1. このリポジトリをForkします。
2. 新しいブランチを作成します(`git checkout -b feature/amazing-feature`)。
3. 変更をコミットします(`git commit -m 'Add amazing feature'`)。
4. ブランチにPushします(`git push origin feature/amazing-feature`)。
5. Pull Requestを作成します。

## ライセンス

MIT License

5.3 マークダウン構文のヒント

  • # 見出し:H1見出し(#の数でH1〜H6を調整)
  • **太字**:太字
  • *斜体*:斜体
  • `コード`:インラインコード
  • ```言語名 コード ```:コードブロック
  • - 項目:順序なしリスト
  • 1. 項目:順序付きリスト
  • [テキスト](URL):リンク
  • ![代替テキスト](画像URL):画像

6. IssuesとProjectsでプロジェクト管理

6.1 Issuesの活用

Issuesはプロジェクトのタスク、バグ、機能リクエストなどを管理するツールです。

Issue作成のヒント:

  • 明確なタイトルを書きます。
  • 問題の状況や要求事項を具体的に説明します。
  • バグレポートなら再現方法を含めます。
  • 関連するスクリーンショットやログを添付します。

Labelsの活用:

Issuesにラベルを付けて分類できます。

  • bug:バグ修正
  • enhancement:機能改善
  • documentation:ドキュメント関連
  • good first issue:初めて貢献するのに良いIssue
  • help wanted:助けが必要なIssue

Issueテンプレートの作成:

リポジトリに.github/ISSUE_TEMPLATE/フォルダを作成し、マークダウンファイルを追加するとIssueテンプレートを使用できます。

6.2 Projectsの活用

GitHub Projectsはカンバンボードスタイルのプロジェクト管理ツールです。

基本的な使い方:

  1. リポジトリの「Projects」タブで新しいプロジェクトを作成します。
  2. カラムを作成します(例:To Do, In Progress, Done)。
  3. IssuesやPull Requestsをカードとして追加します。
  4. 作業の進行に応じてカードを別のカラムに移動します。

自動化機能:

Projectsでは自動化ルールを設定できます。

  • 新しいIssueが作成されると自動的に「To Do」カラムに追加
  • Pull Requestがマージされると自動的に「Done」に移動

7. GitHubプロフィールを整える

GitHubプロフィールは開発者としての第一印象です。よく整えられたプロフィールは、就職やコラボレーションの機会にプラスの影響を与えることができます。

7.1 プロフィールREADMEの作成

GitHubには隠し機能があります。ユーザー名と同じ名前のリポジトリを作成すると、そのリポジトリのREADMEがプロフィールページに表示されます。

  1. ユーザー名と同じ名前のリポジトリを作成します(例:username/username)。
  2. README.mdファイルを作成します。
  3. プロフィールページで確認します。

7.2 プロフィールREADMEの例

# こんにちは![名前]です

Web開発者を目指すジュニア開発者です。

## 技術スタック

### Languages
![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)
![Python](https://img.shields.io/badge/-Python-3776AB?style=flat&logo=python&logoColor=white)

### Frameworks
![React](https://img.shields.io/badge/-React-61DAFB?style=flat&logo=react&logoColor=black)
![Node.js](https://img.shields.io/badge/-Node.js-339933?style=flat&logo=node.js&logoColor=white)

## GitHub Stats

![GitHub stats](https://github-readme-stats.vercel.app/api?username=ユーザー名&show_icons=true)

## 連絡先

- Email: email@example.com
- Blog: https://myblog.com

7.3 プロフィールを整えるツール

  • Shields.io:様々なバッジを作成できます。
  • GitHub Readme Stats:GitHub統計を画像で表示します。
  • GitHub Profile Trophy:実績をトロフィーで表示します。
  • GitHub Readme Activity Graph:アクティビティグラフを表示します。

7.4 コントリビューショングラフ(芝生)を埋める

プロフィールページの緑色のコントリビューショングラフは、継続的な開発活動を示す指標です。以下の活動がコントリビューションとしてカウントされます。

  • デフォルトブランチにコミットする
  • Issueを開く
  • Pull Requestを開く
  • Pull Requestをレビューする

ヒント:芝生を埋めること自体が目的になってはいけません。意味のあるコードを継続的に書いていれば、自然と埋まっていきます。単に芝生を埋めるための意味のないコミットは、むしろ良くない印象を与える可能性があります。

おわりに

この記事では、GitHubの様々な機能を見てきました。SSHキーの設定からリモートリポジトリ管理、README作成、IssuesとProjectsの活用、そしてプロフィールを整えるところまで扱いました。

GitHubは単なるコードリポジトリを超えて、開発者のソーシャルネットワークでありポートフォリオプラットフォームです。オープンソースプロジェクトに貢献し、自分のプロジェクトを共有し、他の開発者と交流しながら成長できる場所です。

最初は慣れなくて難しく感じるかもしれませんが、毎日少しずつ使っているうちにすぐ手に馴染みます。失敗を恐れず積極的にGitHubを活用してみてください。個人プロジェクトをアップロードし、他の人のプロジェクトにスターを付け、興味のあるオープンソースに小さな貢献でもしてみることから始めてみてください。

次の記事では、ブランチ戦略とPull Requestを活用したチームコラボレーション方法についてより詳しく見ていきます。GitHubと一緒に楽しい開発の旅になりますように!