# GitHubってなに？

<!-- prev/next navigation -->
[Back to Index](../../../README.md) | [Next: ローカルとリモート >](02-remote-vs-local.md)

## What & Why

Part 2では、ローカルのgitをインターネット上のサービスと連携させる方法を学ぶよ。  
その第一歩として、まず「GitHubとはなにか」をしっかり理解しておこう。  
ここを押さえておくと、これから出てくるコマンドの意味がぐっとわかりやすくなる。

## Content

### gitとGitHubは別もの

Part 1でgitをたっぷり使ってきたね。  
でも「git」と「GitHub」はよく混同されるけど、**まったく別のものだよ**。

- **git** — あなたのパソコンにインストールされているツール。変更履歴を管理する。
- **GitHub** — インターネット上のサービス。gitリポジトリをオンラインで保管・共有できる場所。

アナロジーで考えてみよう。

> gitは「自分のノート」だとすると、GitHubは「みんながアクセスできる図書館の棚」。  
> 自分のノートを棚に置けば、他の人も読めるし、誰かが書き足すこともできる。  
> 棚に置かなければ、ノートはずっと自分だけのもの。

gitはGitHubがなくても使えるし、Part 1ではずっとそうしてきた。  
GitHubはgitの「便利な置き場所＋共同作業の仕組み」を提供してくれるサービスというイメージ。

### GitHubが存在する理由

GitHubが生まれたのには、いくつかの理由がある。

**バックアップ**  
自分のパソコンが壊れても、GitHubにpushしてあればコードは消えない。  
大事なプロジェクトにとって、これだけでも十分な理由になる。

**コラボレーション**  
複数人で同じプロジェクトを開発するとき、GitHubを使えばお互いの変更を共有・統合しやすい。  
オープンソースプロジェクトでは、世界中の見知らぬエンジニアが協力して開発している。

**共有・ポートフォリオ**  
自分の作ったものを公開すれば、他のエンジニアに見てもらえる。  
就職活動でGitHubのプロフィールを見せる人も多いよ。

### GitHubだけじゃない

GitHubは一番有名だけど、同じようなサービスは他にもある。

| サービス | 特徴 |
|---|---|
| **GitHub** | 世界最大。オープンソースの中心地。Microsoftが運営。 |
| **GitLab** | 自分のサーバーにインストールもできる。CI/CD機能が充実。 |
| **Bitbucket** | AtlassianのJiraなどと連携しやすい。企業向けに人気。 |

このチュートリアルではGitHubを使うけど、基本的な考え方はどのサービスでも同じ。

### リモートリポジトリってなに？

GitHubに置いたリポジトリのことを**リモートリポジトリ**（remote repository）と呼ぶよ。  
「remote」は英語で「遠い・離れた場所にある」という意味。  
自分のパソコンにある**ローカルリポジトリ**（local repository）に対して、  
ネットワークの向こう側にある複製、というイメージ。

ローカルとリモートの関係はこんな感じ：

```
[ あなたのPC ]          [ GitHub ]
  ローカルリポジトリ  ←→  リモートリポジトリ
  (自分で作業する場所)     (共有・バックアップの場所)
```

この `←→` の部分（同期の仕方）については、[次のページ](02-remote-vs-local.md)でくわしく説明するよ。

### GitHubのリポジトリページを見てみよう

GitHubでリポジトリを作ると、こんな情報がウェブページで見られるようになる：

- **ファイル一覧** — リポジトリ内のファイルとフォルダがツリー表示される。
- **コミット履歴** — `git log` で見てきた履歴が、ウェブ上でグラフィカルに表示される。
- **ブランチ一覧** — どんなブランチがあるかひと目でわかる。
- **Issues** — バグ報告や機能要望を管理する掲示板のような機能。
- **Pull Requests** — ブランチの変更をレビューしてマージするための仕組み（Part 2の後半で学ぶ）。
- **README** — リポジトリのトップに `README.md` があると、自動的に整形されて表示される。

まだアカウントがなくても、有名なオープンソースプロジェクト（たとえば `https://github.com/torvalds/linux`）を  
ブラウザで開いて眺めてみると、雰囲気がつかめるよ。

## Summary

- gitはローカルのバージョン管理ツール。GitHubはgitリポジトリをオンラインで管理するサービス。
- GitHubを使う主な理由は「バックアップ」「コラボレーション」「共有」の3つ。
- 同種のサービスにGitLabやBitbucketもあるが、GitHubが最も広く使われている。
- GitHubに置いたリポジトリを「リモートリポジトリ」、自分のPCのものを「ローカルリポジトリ」と呼ぶ。
- GitHubのリポジトリページではファイル、コミット履歴、ブランチなどがウェブで確認できる。

## Exercises

このページはコマンドなしの概念ページなので、手を動かす前に理解を確認しよう。

**確認クイズ**

1. gitとGitHubの違いを、自分の言葉で一言で説明してみよう。
2. リモートリポジトリとローカルリポジトリ、それぞれどこに存在する？
3. GitHubを使うメリットを3つ挙げてみよう。

**のぞいてみよう**

ブラウザで `https://github.com/git/git` を開いて、以下を確認してみよう：

- ファイル一覧はどこに表示されているか
- コミット数はどこで確認できるか
- ブランチが複数あるか確認してみる

これはgit自体のリポジトリ。  
世界中の開発者たちがGitHubを通じて協力して作っているのが見えるはず。

### Reset & Retry

このページには操作がないので、リセットは不要。  
概念が曖昧なまま進まず、クイズに答えてから次へ進もう。

<!-- prev/next navigation -->
[Back to Index](../../../README.md) | [Next: ローカルとリモート >](02-remote-vs-local.md)
