「GitHub(ギットハブ)って聞いたことあるけど、なんか難しそう…」
そう感じているあなたへ。この記事では、プログラミング初心者・セキュリティ初心者でも理解できるように、GitHubの仕組みから使い方、プログラムのアップロード、さらにはサーバを借りて自分のサービスを公開するところまで、ステップごとに丁寧に解説します。
また、GitHubを使う上で絶対に知っておくべきセキュリティリスクと対策も詳しく取り上げます。実際に情報漏えい事故が多発しているのも事実です。正しく使えば最強のツール、間違えれば大事故——その境界線をしっかり学びましょう。
- GitHubとは何か(仕組みをゼロから解説)
- アカウント作成から基本操作まで
- プログラムをアップロードする具体的な手順
- GitHub Pagesで無料サイトを公開する方法
- VPS・クラウドサーバと連携してサービスを公開する方法
- セキュリティリスクと具体的な対策
第1章|GitHubとは? ——バージョン管理の「神ツール」
1-1. Gitとは何か
GitHubを理解するには、まず「Git(ギット)」を知る必要があります。
Gitとは、ファイルの変更履歴を記録・管理するシステムのことです。「バージョン管理システム(VCS: Version Control System)」とも呼ばれます。
たとえば、こんな経験はありませんか?
- report_最終版.docx
- report_最終版2.docx
- report_本当の最終版.docx
- report_これが最終.docx ←本当にこれ
…という地獄のファイル管理
Gitを使えば、こうした問題が一切解決します。いつ・誰が・どこを・なぜ変更したかをすべて記録でき、過去の任意の状態に一瞬で戻すことができます。
Gitは2005年にLinuxカーネルの生みの親であるリーナス・トーバルズ(Linus Torvalds)が開発しました。現在は世界中の開発者が使う業界標準のツールです。
【FACT】2024年時点でGitは世界のソフトウェア開発者の約94%が使用しているという調査結果があります(Stack Overflow Developer Survey 2024)。プログラミングを学ぶなら、Gitは必須スキルです。1-2. GitHubとは何か
GitHub(ギットハブ)は、Gitのリポジトリ(後述)をインターネット上に保存・共有・公開できるWebサービスです。
簡単に言うと:
- Git = バージョン管理の「仕組み(ソフトウェア)」
- GitHub = Gitを使ったコードを保管・共有できる「クラウドサービス」
GitHubはDropboxやGoogleドライブに似ていますが、コードの変更履歴を完全に管理できる点が大きく異なります。
- 設立:2008年(Tom Preston-Werner, Chris Wanstrath, PJ Hyettらが創業)
- 買収:2018年にMicrosoftが約75億ドル(約1兆円)で買収
- ユーザー数:2024年時点で1億人以上の登録開発者
- リポジトリ数:3億3,000万以上のパブリックリポジトリ(2024年)
- 料金:個人の公開リポジトリは無料。プライベートリポジトリも無料(制限付き)
1-3. リポジトリ(Repository)とは
GitHubを使う上で最重要の概念が「リポジトリ(Repository)」です。略して「リポ」とも呼ばれます。
リポジトリとは、プロジェクトのすべてのファイルと変更履歴を格納する「倉庫(箱)」のことです。
- ローカルリポジトリ:自分のパソコン上にあるリポジトリ
- リモートリポジトリ:GitHub上(クラウド)にあるリポジトリ
この2つを同期させながら作業するのが、Gitの基本的な使い方です。
1-4. 公開(Public)と非公開(Private)リポジトリ
GitHubのリポジトリには2種類あります。
| 種類 | 見える範囲 | 注意点 |
|---|---|---|
| Public(公開) | 世界中の誰でも閲覧可能 | APIキー・パスワードを絶対に含めてはいけない |
| Private(非公開) | 自分と許可したメンバーのみ | 無料プランでも利用可能(コラボ人数に制限あり) |
Publicリポジトリに機密情報を含むファイルをアップロードした場合、たとえ数秒後に削除しても、Googleのクローラーや自動スキャンツールに記録されている可能性があります。この点は後述のセキュリティ章で詳しく解説します。
第2章|GitHubのアカウント作成と初期設定
2-1. アカウント作成手順
まずはGitHubのアカウントを作成しましょう。
- 公式サイトにアクセス:
https://github.comにアクセス - 「Sign up」をクリック
- メールアドレス・パスワード・ユーザー名を入力
- 認証メールの確認:届いたメールのリンクをクリック
- プラン選択:個人利用なら「Free」で十分
https://github.com/あなたのユーザー名)。本名ではなくニックネームでも構いません。ただし後から変更するとリンクが切れるため、慎重に決めましょう。
2-2. 二要素認証(2FA)の設定【必須】
アカウント作成後、最初にやるべきことが二要素認証(2FA)の設定です。
GitHubは2023年3月から、すべての開発者に2FAを義務化しています。セキュリティ上の理由から、これは非常に重要な設定です。
- 右上のプロフィールアイコン →「Settings」をクリック
- 左メニューの「Password and authentication」を選択
- 「Two-factor authentication」→「Enable」をクリック
- 認証アプリ(Google Authenticator、Authyなど)でQRコードをスキャン
- 生成されたコードを入力して完了
2-3. GitとGitHubの環境構築
GitHubを本格的に使うには、まず自分のパソコンにGitをインストールする必要があります。
Windowsの場合
https://git-scm.com/にアクセス- 「Download for Windows」をクリックしてインストーラーをダウンロード
- インストーラーを実行(基本的にデフォルト設定でOK)
- 「Git Bash」がインストールされていれば完了
macOSの場合
ターミナルを開いて以下を実行:
xcode-select --install
または Homebrewを使って:
brew install git
Linuxの場合(Ubuntu/Debian)
sudo apt-get update
sudo apt-get install git
2-4. 初期設定(ユーザー名とメールの登録)
Gitインストール後、最初に以下のコマンドで自分の情報を設定します。これはコミット(変更の記録)に紐付けられる情報です。
git config --global user.name "あなたの名前"
git config --global user.email "your@email.com"
--global オプションをつけると、そのパソコン全体の設定になります。プロジェクトごとに別の設定にしたい場合は --global を省略してください。
第3章|GitHubの基本操作——プログラムのアップロード方法
3-1. 基本的なワークフローの全体像
GitHubを使った基本的なワークフローを図で理解しましょう。
【ローカル(自分のPC)】
作業ディレクトリ(ファイルを編集する場所)
↓ git add(ステージングエリアに追加)
ステージングエリア(コミット準備エリア)
↓ git commit(履歴に記録)
ローカルリポジトリ(自分のPC内の履歴)
↓ git push(クラウドへ送信)
【リモート(GitHub)】
リモートリポジトリ(GitHub上の履歴)
3-2. 方法①:GitHub上でリポジトリを作成してアップロード
最もシンプルな方法です。
ステップ1:GitHubでリポジトリを作成
- GitHubにログイン後、右上の「+」ボタン →「New repository」をクリック
- 以下を入力:
- Repository name:リポジトリの名前(英数字、ハイフン推奨)
- Description:任意の説明文
- Public / Private:公開範囲を選択
- README:チェックを入れると自動で README.md が作成される
- 「Create repository」をクリック
ステップ2:ローカルでGitを初期化
プロジェクトのフォルダをターミナル(Git Bash)で開き、以下を実行:
cd /path/to/your/project # プロジェクトフォルダに移動
git init # Gitリポジトリを初期化
git add . # すべてのファイルをステージング
git commit -m "初回コミット" # 変更を記録
ステップ3:GitHubと紐付けてPush
git remote add origin https://github.com/ユーザー名/リポジトリ名.git
git branch -M main
git push -u origin main
「origin」とは?リモートリポジトリ(GitHub上のリポジトリ)の別名(エイリアス)です。「origin」は慣習的な名前で、技術的には任意の名前を使えますが、通常は「origin」を使います。
3-3. 方法②:既存のGitHubリポジトリをクローンして作業
既存のリポジトリを手元にコピーしてから作業を始める方法です。
# リポジトリをクローン(コピー)
git clone https://github.com/ユーザー名/リポジトリ名.git
# クローンしたフォルダに移動
cd リポジトリ名
# ファイルを編集後、以下を実行
git add .
git commit -m "変更の説明"
git push
3-4. 方法③:GitHub Desktop(GUIツール)を使う方法
コマンドラインが苦手な方には、GitHub Desktopという公式GUIアプリが便利です。
https://desktop.github.com/からダウンロード・インストール- GitHubアカウントでサインイン
- 「New Repository」または「Clone Repository」で開始
- ファイルを変更すると差分が自動表示
- コミットメッセージを入力して「Commit to main」をクリック
- 「Push origin」ボタンでGitHubに反映
3-5. よく使うGitコマンド早見表
| コマンド | 意味 | 使うタイミング |
|---|---|---|
git init |
Gitリポジトリを新規作成 | プロジェクト開始時 |
git clone [URL] |
リモートリポジトリをローカルにコピー | 既存リポジトリを使う時 |
git status |
変更状況を確認 | いつでも |
git add . |
すべての変更をステージング | コミット前 |
git commit -m "メッセージ" |
変更を記録 | ステージング後 |
git push |
ローカルの変更をリモートに反映 | コミット後 |
git pull |
リモートの変更をローカルに取得 | 他の人の変更を取得する時 |
git log |
コミット履歴を表示 | 履歴確認時 |
git branch |
ブランチ一覧を表示 | ブランチ管理時 |
git checkout -b [名前] |
新しいブランチを作成して切り替え | 新機能開発時 |
第4章|GitHub Pages——無料でウェブサイトを公開する
4-1. GitHub Pagesとは
GitHub Pagesは、GitHubのリポジトリに置いたHTMLファイルを、そのままウェブサイトとして無料で公開できる機能です。
- 完全無料(publicリポジトリの場合)
- 独自ドメイン対応(カスタムドメインを設定可能)
- HTTPS対応(SSL証明書が自動で発行される)
- 静的サイト専用(PHP・データベースは使えない)
- ストレージ制限:リポジトリサイズ1GB未満、月間帯域100GB未満
- URL形式:
https://ユーザー名.github.io/リポジトリ名/
4-2. GitHub Pagesの有効化手順
- 対象リポジトリのページを開く
- 上部タブの「Settings(設定)」をクリック
- 左メニューの「Pages」を選択
- 「Source」の項目で「Deploy from a branch」を選択
- 「Branch」を「main」(または「gh-pages」)に設定
- 「Save」をクリック
- 数分待つと「Your site is live at https://…」と表示される
4-3. シンプルなHTMLサイトを公開してみよう
試しに簡単なHTMLファイルを作って公開してみましょう。
<!-- index.html -->
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>私の最初のGitHub Pagesサイト</title>
</head>
<body>
<h1>Hello, GitHub Pages!</h1>
<p>GitHubから初めて公開したウェブサイトです。</p>
</body>
</html>
このファイルをリポジトリのルートに置いてPushするだけで、世界中からアクセスできるウェブサイトが完成します。
GitHub Pagesは静的サイト(HTML/CSS/JavaScript)のみ対応しています。WordPressのようなデータベースを使う動的サイトは動きません。動的サイトを公開したい場合は、次の章で解説するVPSやクラウドサービスを利用しましょう。第5章|サーバを借りてのプロジェクト公開方法
5-1. 静的サイトと動的サービスの違い
本格的なウェブサービスを公開するには、サーバ(VPS)またはクラウドサービスが必要です。
| 種類 | 特徴 | 適したサービス |
|---|---|---|
| 静的サイト | HTML/CSS/JSのみ。DBなし | GitHub Pages, Netlify, Vercel |
| 動的サービス | サーバサイド処理・DB使用 | VPS, AWS, GCP, Azure |
5-2. 代表的なホスティングサービス(FACT)
| サービス名 | 特徴 | 無料枠 | 対応言語 |
|---|---|---|---|
| Netlify | 静的サイト特化。GitHub連携簡単 | あり(帯域100GB/月) | HTML/JS/React等 |
| Vercel | Next.js開発元。フロントエンド最強 | あり(趣味用途) | React/Next.js等 |
| Render | バックエンドも対応 | あり(制限付き) | Python/Node等 |
| Heroku | 老舗PaaS。2022年に無料廃止 | なし(有料のみ) | 多言語対応 |
| さくらVPS | 国内VPS。月額数百円〜 | なし | なんでも可 |
| ConoHa VPS | 国内VPS。高スペック | なし | なんでも可 |
5-3. VPS(仮想専用サーバ)とGitHubの連携方法
VPSとは「Virtual Private Server(仮想専用サーバ)」の略で、自分専用のLinuxサーバをクラウド上に借りるサービスです。
基本的な公開フロー(Ubuntu + Nginx の例)
- VPSを契約:さくらVPS・ConoHa・Vultr等でUbuntuサーバを借りる
- SSHで接続:
ssh root@サーバのIPアドレス - 環境構築:必要なソフトウェアをインストール
- GitHubからClone:サーバ上でリポジトリをクローン
- Webサーバ(Nginx/Apache)でドキュメントルートを設定
- ドメイン・SSL設定:Let’s EncryptでHTTPS化
VPS上でのGitHub連携コマンド例
# サーバにSSHで接続後
# Gitのインストール(Ubuntu)
sudo apt-get update
sudo apt-get install -y git nginx
# GitHubからリポジトリをクローン
cd /var/www/html
sudo git clone https://github.com/ユーザー名/リポジトリ名.git
# リポジトリのフォルダに移動
cd リポジトリ名
# Nginxの設定を更新して公開
sudo systemctl restart nginx
更新をGitHub経由で自動デプロイ(GitHub Actions)
毎回手動でサーバにSSHしてgit pullするのは手間がかかります。GitHub Actionsを使えば、GitHubにPushするだけで自動的にサーバに反映できます。
# .github/workflows/deploy.yml の例
name: Deploy to Server
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy via SSH
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /var/www/html/リポジトリ名
git pull origin main
sudo systemctl restart nginx
GitHub Actions の Secrets(シークレット):上記の ${{ secrets.SERVER_HOST }} のような変数は、GitHubのリポジトリ設定の「Settings → Secrets and variables → Actions」で設定します。サーバのIPアドレスやSSH秘密鍵をコードに直接書かずに安全に管理できます。
5-4. Netlify を使った超簡単デプロイ(静的サイト向け)
フロントエンド(HTML/CSS/JS、React等)であれば、Netlifyを使うと GitHubと繋ぐだけで自動デプロイが完成します。
https://netlify.comにアクセスし「GitHubでサインイン」- 「New site from Git」→ GitHubのリポジトリを選択
- ビルド設定を入力して「Deploy site」をクリック
→ 以降は main ブランチにPushするたびに自動デプロイ!
第6章|GitHubのセキュリティリスクと対策——これだけは知っておけ
GitHubは非常に便利なツールですが、使い方を誤ると深刻なセキュリティ事故につながります。ここでは実際に起きた事例をもとに、具体的なリスクと対策を解説します。
6-1. 最大のリスク:機密情報の誤公開
- 2019年:トヨタの関連会社がソースコードをGitHubで誤公開。約310万人分の顧客情報が含まれていた可能性が発覚
- 2023年:Microsoftの研究員が機械学習データをGitHubにアップロードした際、誤って38TBの社内機密データを公開
- 毎日:GitHubには「APIキー」「パスワード」「SSHキー」を含むコードが常時スキャンされており、公開直後から悪用される事例が多発
6-2. 漏えいしてはいけない情報
以下の情報は 絶対にGitHubにアップロードしてはいけません(特にPublicリポジトリ):- 🔑 APIキー(AWS、OpenAI、Google、Stripe等)
- 🔑 データベースのパスワード
- 🔑 SSH秘密鍵(id_rsaファイル等)
- 🔑 OAuth トークン
- 🔑 SSL/TLS 秘密鍵
- 🔑 本番環境の設定ファイル(.env ファイル等)
- 🔑 個人情報・顧客情報が含まれるファイル
6-3. .gitignoreで機密ファイルを除外する
.gitignore(ドットギットイグノア)は、Gitの追跡対象から除外するファイル・フォルダを指定するファイルです。
プロジェクトのルートに.gitignoreファイルを作成し、以下のように記述します:
# .gitignore の例
# 環境変数ファイル(絶対に除外!)
.env
.env.local
.env.production
# OS固有のファイル
.DS_Store
Thumbs.db
# パッケージ関連(容量が大きい)
node_modules/
vendor/
# ビルド結果
dist/
build/
*.pyc
__pycache__/
# IDEの設定ファイル
.vscode/
.idea/
# ログファイル
*.log
logs/
# SSHキー(万が一のため)
*.pem
*.key
id_rsa
gitignore.io が便利!https://www.toptal.com/developers/gitignore にアクセスし、使用言語・OS・フレームワークを選択すると、最適な .gitignore ファイルを自動生成してくれます。
6-4. 環境変数(.env)を使った安全な設定管理
APIキーやパスワードなどの機密情報は、ソースコードに直接書かず、環境変数ファイル(.env)で管理するのがベストプラクティスです。
# .env ファイルの例(このファイルは .gitignore に追加して絶対にコミットしない)
DATABASE_URL=postgresql://user:password@localhost:5432/mydb
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
SECRET_KEY=your-secret-key-here
# コード内での使い方(Python の例)
import os
from dotenv import load_dotenv
load_dotenv() # .env ファイルを読み込む
api_key = os.getenv("OPENAI_API_KEY") # 環境変数から取得
.envは必ず.gitignoreに追加する.env.example(ダミー値入り)をリポジトリに含め、チームメンバーに必要な変数を伝える- 本番環境ではホスティングサービスのシークレット機能(Vercel/Netlify/Herokuの環境変数設定)を使う
6-5. GitHub Secret Scanningとgit-secrets
GitHubにはSecret Scanning(シークレットスキャニング)という機能があり、APIキーやトークンが含まれるコミットを自動検出してアラートを送信します。
- GitHubのPublicリポジトリでは無料で有効
- AWS、Google、Stripe、GitHubなど200以上のプロバイダのシークレットパターンを検知
- 検知時はリポジトリオーナーにメール通知が届く
- Privateリポジトリには GitHub Advanced Security(有料)が必要
さらに事前防止策として、git-secretsというツールを使うと、コミット前にシークレットが含まれていないかローカルでチェックできます。
# git-secrets のインストール(Mac)
brew install git-secrets
# AWS認証情報のパターンを登録
git secrets --register-aws
# 現在のリポジトリに pre-commit フックを追加
git secrets --install
# スキャン実行
git secrets --scan
6-6. もし誤って機密情報をPushしてしまったら
まず最初にやること:該当のAPIキー・パスワードを即座に無効化・ローテーション!GitHubから削除しても、すでにクローンや検索エンジンのキャッシュに残っている可能性があります。コードの削除より先に認証情報の無効化を行ってください。
- 即座に該当のAPIキー・パスワードを無効化・再生成する(最優先!)
git filter-branchまたはgit-filter-repoでコミット履歴から完全削除- GitHubサポートに連絡してキャッシュのクリアを依頼
- アクセスログを確認して不正アクセスがないか調査
- 再発防止のため .gitignore と pre-commit フックを設定
6-7. ブランチ保護設定でコードの品質を守る
チーム開発や重要なプロジェクトでは、ブランチ保護ルールを設定することで、誰でも直接mainブランチにPushできないようにできます。
- リポジトリの「Settings」→「Branches」
- 「Add branch protection rule」をクリック
- 以下を設定:
- 「Require a pull request before merging」:PR必須
- 「Require status checks to pass」:テスト通過必須
- 「Require review from Code Owners」:レビュー必須
6-8. Dependabotで依存ライブラリの脆弱性を自動検出
Dependabot(デペンダボット)はGitHubに組み込まれた自動セキュリティ機能で、プロジェクトが使用しているライブラリに既知の脆弱性が発見されると、自動でアップデートのPull Requestを作成してくれます。
- リポジトリの「Security」タブを開く
- 「Enable Dependabot alerts」をクリック
- 「Enable Dependabot security updates」も有効にする
→ 脆弱性が検出されると、Dependabotが自動でアップデートPRを作成します。
第7章|GitHubの活用法——初心者が知っておくべき便利機能
7-1. README.md でプロジェクトを魅力的に見せる
README.mdはリポジトリのトップページに表示される説明ファイルです。Markdown記法で書かれ、プロジェクトの顔となります。
# プロジェクト名
## 概要
このプロジェクトは〇〇をするためのツールです。
## インストール
```bash
npm install
```
## 使い方
```bash
npm start
```
## ライセンス
MIT
7-2. Issues でバグ管理・タスク管理
Issues(イシュー)は、バグ報告・機能リクエスト・タスク管理などに使えるチケット機能です。
- バグや改善点を記録・追跡できる
- ラベルでカテゴリ分け(bug / enhancement / question等)
- マイルストーンでリリース管理
- コミットメッセージに
Closes #番号と書くとIssueが自動クローズ
7-3. Pull Request(PR)でコードレビュー
Pull Request(プルリクエスト、略称PR)は、ブランチの変更をmainブランチにマージする前に、チームメンバーにレビューを依頼する機能です。
PR文化はオープンソース開発の基本であり、企業の開発現場でも標準的なワークフローです。
7-4. GitHub Codespaces でブラウザから開発
GitHub Codespacesは、ブラウザ上でVS Codeのような開発環境が使えるクラウドIDE機能です。ローカルに環境を構築せずに即座に開発を始められます。
- ブラウザだけで本格的な開発が可能
- 無料枠:月60時間まで(2コアマシン)
- リポジトリページの「Code」ボタン→「Codespaces」タブから起動
- 拡張機能・ターミナル・Git操作がすべてブラウザで完結
7-5. GitHub Copilot でAI支援コーディング
GitHub CopilotはOpenAIとGitHubが開発したAIペアプログラマーで、コードの自動補完・関数の自動生成・テストコードの生成などを行います。
【FACT】GitHub Copilotは2022年に正式リリース。2024年時点で月額$10(個人向け)から利用可能。GitHubの調査によると、Copilot使用者のコーディング速度は平均55%向上したと報告されています(GitHub Copilot 効果測定レポート2023)。第8章|まとめ——GitHubを安全に使うためのチェックリスト
【アカウントセキュリティ】
- ☐ 二要素認証(2FA)を設定した
- ☐ リカバリーコードを安全な場所に保存した
- ☐ SSHキー認証を設定した(パスワード認証より安全)
- ☐ 不要なOAuthアプリ連携を削除した
【リポジトリ管理】
- ☐ .gitignore を適切に設定した
- ☐ .env ファイルが .gitignore に含まれている
- ☐ APIキー・パスワードをソースコードに直書きしていない
- ☐ 公開範囲(Public/Private)を意図的に設定した
- ☐ ブランチ保護ルールを設定した(チーム開発の場合)
【自動化・監視】
- ☐ Dependabotを有効にした
- ☐ Secret Scanningが有効になっている
- ☐ GitHub Actionsのシークレットを正しく設定した
最後に:GitHubはサイバーセキュリティの「練習場」でもある
GitHubには世界中のセキュリティ研究者が公開しているペネトレーションテストツール、CTFチャレンジ、脆弱性スキャナーなど、学習に役立つ無数のリソースがあります。
Gitの操作に慣れてきたら、ぜひセキュリティ関連のOSS(オープンソースソフトウェア)を読んだり、自分でツールを作って公開したりしてみてください。
GitHubを制する者、エンジニアリングを制する——それはサイバーセキュリティの世界でも変わりません。
免責事項:本記事の情報は執筆時点(2025年)のものです。GitHubの仕様・料金・機能は予告なく変更される場合があります。最新情報は公式ドキュメントをご確認ください。セキュリティ対策は本記事の内容だけに限らず、常に最新の情報を収集することを推奨します。


コメント