この用語をシェア
リポジトリとは
リポジトリ(Repository)とは、ソースコードや関連ファイルを保存・管理する場所です。「レポ(repo)」と略されることもあります。バージョン管理システムにおいて、プロジェクトの全履歴とメタデータを含む中央保管庫の役割を果たします。
単純にファイルを保存するフォルダとは異なり、リポジトリには以下の情報が含まれます:
- ファイル・フォルダの内容:プロジェクトのすべてのファイル
- 変更履歴:いつ、誰が、何を変更したかの記録
- ブランチ情報:開発の分岐点と統合履歴
- タグ・リリース情報:バージョンやマイルストーンの記録
- 設定ファイル:リポジトリの動作を制御する設定
リポジトリの種類
1. ローカルリポジトリ
- 場所: 開発者の個人PCやワークステーション
- 特徴: 高速アクセス、オフライン作業可能
- 用途: 個人の開発作業、ローカルでのテスト
- 管理: 個人で完全にコントロール
2. リモートリポジトリ
- 場所: クラウドサービスや共有サーバー
- 特徴: チーム共有、バックアップ機能
- 用途: チーム開発、コード共有、CI/CD
- 管理: チームや組織で管理
3. ベアリポジトリ
- 場所: サーバーや共有環境
- 特徴: 作業ディレクトリを持たない
- 用途: 中央リポジトリ、デプロイ用途
- 管理: システム管理者が管理
主要なリポジトリホスティングサービス
1. GitHub
- 特徴: 世界最大のGitホスティングサービス
- 強み: オープンソースコミュニティ、豊富な統合機能
- 料金: パブリックリポジトリ無料、プライベートは有料プラン
- 対象: 個人開発者からエンタープライズまで
2. GitLab
- 特徴: DevOps統合プラットフォーム
- 強み: CI/CD内蔵、セルフホスティング可能
- 料金: Community Edition無料、Enterprise版有料
- 対象: エンタープライズ、DevOps重視のチーム
3. Bitbucket
- 特徴: Atlassian製品との深い統合
- 強み: Jira、Confluence連携、エンタープライズ機能
- 料金: 小規模チーム無料、ユーザー数に応じた課金
- 対象: Atlassianエコシステム利用企業
リポジトリの構造
標準的なファイル・フォルダ構成
project-repository/
├── .git/ # Git管理ファイル(隠しフォルダ)
├── .gitignore # 無視するファイル指定
├── README.md # プロジェクト説明文書
├── LICENSE # ライセンス情報
├── package.json # 依存関係・スクリプト設定
├── src/ # ソースコードディレクトリ
│ ├── main/
│ └── test/
├── docs/ # ドキュメント
├── config/ # 設定ファイル
└── scripts/ # 各種スクリプト
重要なファイル
- README.md: プロジェクトの概要、インストール方法、使用方法
- .gitignore: バージョン管理対象外ファイルの指定
- LICENSE: ソフトウェアライセンスの明記
- CONTRIBUTING.md: コントリビューション(貢献)ガイドライン
- CHANGELOG.md: バージョンごとの変更履歴
リポジトリ管理のベストプラクティス
1. 初期設定
- 適切な名前: プロジェクトの内容が分かる明確な名前
- 詳細な説明: リポジトリの目的と機能を簡潔に記述
- 適切なライセンス: プロジェクトに適したライセンスの選択
- README作成: 包括的で分かりやすい説明文書
2. ブランチ管理
- main/masterブランチ保護: 直接プッシュを禁止
- 機能ブランチ使用: feature/bug-fix用の専用ブランチ
- 命名規則の統一: feature/機能名、bugfix/修正内容など
- 定期的な整理: 不要になったブランチの削除
3. セキュリティ管理
- シークレット管理: APIキーや認証情報の適切な管理
- アクセス制御: チームメンバーの権限設定
- 定期的な監査: アクセスログと権限の確認
- 依存関係の更新: セキュリティパッチの適用
4. 文書化
- コード文書化: 適切なコメントとドキュメント
- API仕様: エンドポイントやインターフェースの説明
- デプロイ手順: 環境構築とデプロイの詳細手順
- トラブルシューティング: よくある問題と解決方法
リポジトリの活用場面
開発ワークフロー
- リポジトリのクローン: ローカル環境に複製
- ブランチ作成: 機能開発用のブランチ
- コード開発: ローカルリポジトリで作業
- コミット: 変更をローカルリポジトリに保存
- プッシュ: リモートリポジトリに変更を送信
- プルリクエスト: コードレビューとマージの依頼
- マージ: メインブランチへの統合