「GitHub に上げる」「コミットする」「リポジトリを作る」… 開発の話を聞くと、必ず登場するのが GitHub

あちこちで聞く GitHub
図1:あちこちで聞く「GitHub」

ITに少し触れた人なら、絶対に通る場所。前回の API キー の記事でも「GitHub に上げないで!」と注意喚起しました。 じゃあ、そもそも GitHub って何なのか。身近なサービスに例えながら見ていきます。

GitHub ってなに?

ざっくり言うと、コードを保管・共有・履歴管理できる場所です。

GitHub = コードの保管庫+共有場所
図2:GitHub=コードの保管庫+共有場所

イメージは 「コード版の Google ドライブ」+「みんなで書き換えられる Wikipedia」 のハイブリッド。

  • 自分のコードをクラウドに保管できる
  • 他の人と共有・編集できる
  • 「いつ・誰が・何を変えたか」が全部残る

ちなみに「git」と「GitHub」は別物。

  • git:バージョン管理をする仕組み(PCで動く)
  • GitHub:その git を使って クラウドにコードを置けるサービス

同じく git を使ったサービスに GitLab、Bitbucket もあります。

バージョン管理=ゲームのセーブデータ

GitHub の一番すごいところは、git という仕組みのおかげで 過去のすべての状態を GitHub 上に残しておける こと。

バージョン管理=ゲームのセーブデータ
図3:バージョン管理=ゲームのセーブデータ

ゲームで、セーブポイントごとにプレイ状態を保存しますよね。失敗してもセーブからやり直せる。

GitHub のバージョン管理も同じ。コードを書き換えるたびに「セーブ」しておくと、後で:

  • 「3日前の状態に戻したい」→ 戻せる
  • 「あれ、いつバグ入った?」→ 履歴で犯人特定
  • 「やっぱり別ルートで作りたい」→ 分岐できる

この「セーブ」のことを コミット (commit) と呼びます。

1人でも十分メリットあり

「チームで使う場所でしょ?」と思いがちですが、1人開発でも役立つ のが GitHub。

1人開発でも使う GitHub
図4:1人開発でも GitHub が活きる
  • PCが壊れてもコードはクラウドに残る(バックアップ)
  • 「昨日まで動いてたコード」にすぐ戻せる
  • スマホやタブレットからもコードが見られる

チーム開発の本領発揮

そして本当の威力は、複数人で1つのコードを編集する場面

チームで1つのコードを編集する
図5:チーム開発:複数人で1つのコードを編集

普通だと「A さんが書き換えたファイルを B さんが上書きしちゃった!」みたいな事故が起きがち。 GitHub はその衝突(コンフリクトとも呼ばれます)を自動で検知して教えてくれるし、誰がどこを書き換えたか1行単位で見えるので、チーム開発の事故が激減します。

世界中のコードが公開されてる

GitHub のもう一つの顔は、世界最大のオープンソース(OSS=誰でも見れて使える公開コード)の図書館であること。

世界中の OSS が公開されてる
図6:世界中の OSS(オープンソース)が公開されてる

たとえば:

  • React(Meta(旧 Facebook)製の UI ライブラリ。画面のパーツを作る道具)
  • Linux(世界中のサーバーで動く OS。コンピュータの土台ソフト)
  • VS Code(Microsoft 製のエディタ。コードを書くためのアプリ)

これら全部、GitHub にコードが公開されてて、誰でも中を見れる・使える・改造できる
だから自分でゼロから作り直す手間をかけずに、世界の知恵を借りられる、というわけです。

基本の流れ:commit → push

GitHub を使うとき、コードは 「2つの場所」 を行き来します。

  • ローカル = あなたの PC の中(自分の作業場)
  • リモート = GitHub 上(みんなの保管場所)

この2つの間でコードをやり取りするのが、GitHub の基本動作です。

commit → push の基本フロー
図7:基本の流れ:書く → commit → push
  1. 書く:ローカルでコードを編集する
  2. コミット (commit):ローカルで「ここでセーブ!」と宣言する
  3. プッシュ (push):そのセーブをリモート(GitHub)に送る

逆にリモートから受け取るのは プル (pull)。「最新をくれ」というイメージです。

ここで一つ大事な話。

これだけは守る

  • API キーやパスワードは絶対にコミット/プッシュしない
  • うっかり上げてしまった場合は、すぐ無効化&履歴削除
  • 個人のリポジトリも「公開(Public)」設定だと世界中から見える

前回の API キー の話、ここで効いてきます。

エンジニアの「履歴書」とも呼ばれる

ちなみに GitHub のプロフィールは、エンジニアの履歴書とも言われます。

  • どんなコードを書いてきたか
  • どんな OSS に貢献してるか
  • どれくらい継続してコミットしてるか(草が生える、と呼ばれる)

→ これらが全部プロフィールに残るので、転職や案件獲得でも見られます。

まとめ

GitHub のすべて、これ1枚で
図8:GitHub のすべて、これ1枚で

ふんわり理解チェック

  • GitHub=コードの保管庫+共有場所
  • バージョン管理は「ゲームのセーブ」と同じイメージ
  • 1人でもチームでもメリットあり、OSS の世界最大の図書館でもある
  • 基本フローは「書く → commit → push」
  • API キーやパスワードは絶対に上げない

次は、ネットの世界の「住所」にあたる ドメイン の話。example.com の正体に迫ります。