GitHubは、Microsoftが所有する、Gitリポジトリのホスティング、共同開発、プロセス自動化のための最大のWebプラットフォームです。バージョン管理によるコード保存だけでなく、プロジェクト管理のための完全なツールセットを提供します。Issue Tracking、コードレビュー付きPull Request、CI/CDのためのActions、ドキュメントのためのWikiなどです。GitHub、2024年のデータによると、プラットフォームには1億人以上の開発者と4億2000万以上のリポジトリがあります。
ポイント
GitHubは、Gitリポジトリでの保存と共同作業のためのWebサービスで、2008年にTom Preston-Werner、Chris Wanstrath、PJ Hyettによって設立されました。2018年、同社はMicrosoftに75億ドルで買収されました。このプラットフォームは、すべてのGit操作のためのWebインターフェースを提供し、その上にフォーク、スター、サブスクリプション、コードレビュー、組み込みの継続的インテグレーションシステムなどのソーシャル機能を追加しています。
GitHubと競合他社の主な違いは、オープンなエコシステムと最大の開発者コミュニティです。GitHubは、Android、Kubernetes、React、Swift、Kotlin、そして何千もの他のオープンソースプロジェクトのソースコードをホストしています。これにより、プラットフォームは単なるコード保存ツールではなく、開発者のためのソーシャルネットワークにもなっています。プロジェクトをフォローしたり、変更について議論したり、pull requestを通じて貢献したりできます。
Microsoftのレポート(2024年)によると、毎日1000万以上の新しいPull RequestがGitHubを通過し、月間アクティブユーザー数は1億を超えています。このプラットフォームは500以上のプログラミング言語、ファイル拡張子による自動言語検出、コードのシンタックスハイライトをサポートしています。
GitHubの機能は、単なるGitホスティングをはるかに超えています。プラットフォームは以下を提供します:GitHub Actions — 組み込みのCI/CDシステム;GitHub Packages — パッケージとコンテナのレジストリ;GitHub Codespaces — VS Codeベースのクラウド開発環境;GitHub Discussions — コミュニティのためのフォーラム;GitHub Security — 自動依存関係更新と脆弱性スキャンのためのDependabot;GitHub Copilot — コード作成のためのAIアシスタント。
組織向けに、GitHubはGitHub Enterpriseを提供しています — セルフホスト(GitHub Enterprise Server)またはクラウドデプロイ(GitHub Enterprise Cloud)のエンタープライズ版です。エンタープライズ機能には、SAML/SSO認証、監査ログ、リポジトリセキュリティポリシー、99.95%の可用性SLAが含まれます。Enterprise版はGoogle、Apple、Airbnbなどの企業が使用しています。
GitHubの重要な機能はGitHub CLI(gh)です。これにより、Webインターフェースを使用せずにコマンドラインからすべてのプラットフォーム操作を実行できます。ghを使用すると、リポジトリの作成、Issuesの管理、Pull Requestのレビュー、Actionsの実行をターミナルから直接行うことができ、コマンドラインに慣れた開発者の作業を高速化します。
| 機能 | 目的 | 利用可能性 |
|---|---|---|
| Actions | CI/CDと自動化 | 無料 2000分/月 |
| Codespaces | VS CodeベースのクラウドIDE | 有料、60時間/月無料 |
| Packages | パッケージとDockerイメージのホスティング | 無料 500 MB |
| Dependabot | 自動依存関係更新 | 公開リポジトリは無料 |
| Pages | 静的サイトホスティング | 無料 |
Pull Request(PR)は、GitHub上のプロジェクトに変更を加えるための主要な仕組みです。開発者が変更を含むブランチを作成し、GitHubに公開して、メインブランチへのマージリクエスト(Pull Request)を送信します。プロジェクトの他の参加者はブランチ間の差分(diff)を確認し、特定のコード行にコメントを残したり、変更を提案したり、リクエストを承認または拒否したりできます。
GitHubのコードレビュープロセスはPRを中心に構築されています。各コメントはdiffの特定の行に添付され、3つのタイプがあります:Comment(通常のコメント)、Request Changes(修正が必要)、Approve(承認)。変更を行った後、作成者は新しいコミットでPRを更新し、レビュープロセスが繰り返されます。すべての指摘が解決されPRが承認されると、変更は対象ブランチにマージされます。
# フィーチャーブランチの作成とプッシュ
git checkout -b fix-login-bug
git add src/
git commit -m "Fix login validation error"
git push -u origin fix-login-bug
# CLI経由でのPR作成
gh pr create --base main --title "Fix login validation" \
--body "Fixed edge case with empty email field"
# PRの表示とマージ
gh pr review --approve fix-login-bug
gh pr merge --squash fix-login-bug
GitHubはブランチ保護ルールをサポートしています:mainへの直接プッシュを禁止したり、マージ前に必須の承認数を要求したり、Actionsチェックを実行したり、マージ前にブランチを最新に保つことを要求したりできます。ブランチ保護はSettings → Branchesで設定され、本番プロジェクトでは必須のプラクティスであり、メインブランチへの不安定なコードの誤った導入を防ぎます。
GitHub Actionsは、リポジトリ内で直接ワークフローを自動化できる組み込みのCI/CDプラットフォームです。ワークフローは.github/workflows/ディレクトリにあるYAMLファイルで記述されます。各ワークフローは、ランナー(Linux、Windows、macOSの仮想マシン)で実行される1つ以上のジョブで構成されます。
Actionsはイベント駆動モデルをサポートしています:ワークフローはプッシュ、PR作成、リリース公開、スケジュール、またはwebhookを介してトリガーされます。これにより、開発者の介入なしに、ビルド、テスト実行、静的コード分析、アプリストアへの公開、サーバーへのデプロイを自動化できます。以下はAndroidプロジェクトのワークフロー例です:
name: Android CI
on:
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
- name: Build with Gradle
run: ./gradlew assembleDebug
Actionsのエコシステムには、GitHub Marketplaceで20,000以上の既製アクションが含まれています。人気のアクション:checkout(リポジトリのクローン)、setup-java/setup-node/setup-python(環境設定)、upload-artifact(ビルド成果物の保存)、cache(高速化のための依存関係キャッシュ)、slack-notify(Slackへの通知送信)。Actionsはマトリックスビルドもサポートしています — 複数のOSや言語バージョンでの同時実行。
Issuesは、GitHub上の組み込みタスク追跡システムです。各Issueには、タイトル、説明、ラベル、担当者、マイルストーン、リンクされたPull Requestがあります。Issuesはテンプレート化できます — バグレポート、機能リクエスト、質問には異なるテンプレートが使用され、作成時に自動的に挿入されます。
GitHub Projects(旧Projects Beta)は、JiraやTrelloに似たボードベースのプロジェクト管理ツールです。Projectsはカスタムフィールド(ステータス、優先度、スプリント)、IssuesやPull Requestとのリンク、タスクステータス変更時のカード移動の自動化、バーンダウンチャート形式の分析をサポートしています。Projectsは2つのモードで利用可能です:Table(テーブル表示)とBoard(かんばんボード)。
リリース管理のために、GitHubはMilestonesを提供しています — 期限のある共通の目標で結ばれたIssueとPRのグループです。各マイルストーンは進捗状況を示します:開いているタスクの数、閉じられたタスクの数、期限が守られているかどうか。マイルストーンはReleasesと統合されています — リリースを公開する際に、マイルストーンにリンクして、クローズされたIssueに基づいて自動的にCHANGELOGを生成できます。
GitHub Pagesは、https://username.github.io/repositoryでリポジトリのコンテンツを自動的に公開する静的サイトのための無料ホスティングです。PagesはHTML、CSS、JavaScript、および静的ジェネレーター:Jekyll(組み込み)、Hugo、Next.js(エクスポート)、MkDocsをサポートしています。設定には、公開用のブランチとディレクトリの選択、およびカスタムドメインのサポートが含まれます。
技術ドキュメントのために、GitHubはWikiを提供しています — Gitリポジトリとしても保存される組み込みのWikiシステムです。WikiはMarkdownをサポートし、Webインターフェースを介して、またはローカルからWikiリポジトリへのプッシュを介してページを編集できます。各Wikiページには独自の変更履歴があり、API、アーキテクチャ、プロジェクトプロセスのドキュメント化に便利です。
GitHub Pages + Jekyllの組み合わせは、ドキュメントサイトの人気のソリューションです。JekyllはMarkdownファイルを自動的に静的HTMLページに変換し、テーマ、ナビゲーション、検索をサポートしています。例えば、Android Developersのドキュメントは以前GitHub PagesでJekyllを使用していましたが、現在は内部プラットフォームを使用しています。しかし、何千ものオープンソースプロジェクトが引き続きこの組み合わせをサイトで使用しています。
GitHub CLI(gh)を使用すると、コマンドラインからすべてのプラットフォーム操作を実行できます:リポジトリの作成、Issuesの管理、Pull Requestの表示と承認、Actionsの実行。gh repo create my-project --publicコマンドはリモートリポジトリを作成してローカルにリンクし、gh pr createは現在のブランチからPull Requestを作成します。CLIはWebインターフェースよりもターミナルを好む開発者の作業を高速化します。
GitHub REST APIとGraphQL APIは、プラットフォームのすべての機能へのプログラムによるアクセスを提供します:Issueの作成、ユーザー管理、統計情報の取得、Actionsの管理。GraphQL APIは複雑なクエリに適しており、1回のリクエストで必要なフィールドのみを取得できます。REST APIのレート制限は、認証済みユーザーで1時間あたり5000リクエストです。APIはGitHubを外部のCIシステムや内部DevOpsツールと統合するために広く使用されています。
GitHub Gistは、完全なリポジトリを作成せずにコードスニペットを公開するためのサービスです。Gistはシンタックスハイライト、外部サイトへの埋め込み、バージョン履歴をサポートしています。各Gistは公開(検索で表示)またはシークレット(リンク経由でのみアクセス可能)にできます。Gistは、チームのやり取りで設定、ログ、コード例を素早く共有するため、また開発者向けのPastebinの代替として使用されます。
よくある質問
GitHubはオープンコミュニティとソーシャル機能(フォーク、スター)に重点を置いています。GitLabはより強力な組み込みCI/CDと、Actionsの分数制限のないセルフマネージドホスティングを提供します。
GitHub Teamはユーザー1人あたり月額4ドルで、無制限のプライベートリポジトリ、ブランチ保護、Actions(3000分)を提供します。無料プランは小規模なオープンソースプロジェクトに適しています。
リポジトリ作成時に、PublicではなくPrivateを選択します。プライベートリポジトリでは、コードは招待されたコラボレーターのみに表示されます。無料プランでは、プライベートリポジトリは最大3人のコラボレーターまで利用できます。
GitHub Copilotは、OpenAI CodexをベースにしたAIアシスタントで、リアルタイムのコード自動補完を提供します。VS Code、JetBrains、Neovimで動作し、すべての主要なプログラミング言語をサポートしています。
Settings → Danger Zone → Delete this repositoryに進みます。削除は元に戻せません — すべてのコミット、Issue、Wikiが復元の可能性なく削除されます。事前にバックアップがあることを確認してください。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。