リポジトリとは何か
リポジトリ(repository)は、一つの開発対象について、ファイルと変更履歴をまとめて管理する単位です。個人開発では「この作品に関するものは、どこまでが一まとまりか」を示す箱になります。
普通のフォルダーと見た目が似ていても、Gitで管理するリポジトリには、過去の変更を記録するための情報が加わります。GitHubなどに置いたリポジトリは、そのまとまりをオンラインで参照できる形にしたものです。
一文でいうと
リポジトリとは、作品のファイルと、その変更履歴を一つの単位として扱う場所です。
GitHubの公式資料では、リポジトリにはコードや各種ファイルに加えて、それぞれの変更履歴が含まれると説明されています。Gitでは、既存のフォルダーをリポジトリとして初期化する方法と、すでにあるリポジトリを複製する方法があります。
個人開発のどこで登場するか
新しいアプリを作り始めるとき、最初に「どのファイルを同じ履歴で管理するか」を決めます。たとえば読書記録アプリなら、画面のコード、テスト、設定例、READMEを一つのリポジトリに置けます。
一作品一リポジトリから始めると、次の境界が明確になります。
変更を一緒に記録するファイル
テストやビルドを行う範囲
誰にどの範囲を公開するか
どのIssueや公開履歴が、どの作品に属するか
複数の小さなアプリを一つにまとめる設計もありますが、理由がないうちは作品ごとに分けるほうが迷いにくくなります。
ローカルとリモートの例
自分のパソコンにあるものをローカルリポジトリ、GitHubなど別の場所にあるものをリモートリポジトリと呼びます。
たとえば、自分のパソコンで読書記録アプリを編集して変更を記録し、その記録をGitHubへ送ります。このとき、パソコン側とGitHub側は同じ作品の履歴を共有できますが、同じ場所ではありません。送る前の変更はローカルにしか存在せず、別の端末からは見えません。
「GitHubにあるから手元の変更も自動的に保存済み」とは限らない点が重要です。
フォルダー、Git、GitHubと区別する
似た言葉は、次のように役割を分けます。
フォルダー:ファイルを整理する入れ物
リポジトリ:開発対象のファイルと履歴を扱う単位
Git:その履歴を記録し、比較や復元を行う仕組み
GitHub:リポジトリをオンラインで置き、共有や作業管理を行えるサービス
Gitを使わないサービスが「リポジトリ」という言葉を使う場合もあります。言葉だけで判断せず、「何を保存し、どの履歴を管理する単位なのか」を確認します。
リポジトリへ入れてはいけないもの
リポジトリがPrivateでも、パスワード、APIキー、秘密鍵、実在する利用者の個人情報をコードへ直接書かないようにします。現在のファイルから削除しても、すでに記録した履歴には残ることがあるためです。
また、生成し直せる大量のファイルや、端末ごとに異なる一時ファイルは、必要性を確認してから管理対象にします。何でも入れるのではなく、「作品を再現し、変更理由を追えるために必要か」で決めます。秘密情報の分け方は個人開発の秘密情報を安全に管理するで詳しく扱います。
次に読む記事
リポジトリという箱を理解したら、変更履歴を作るGitとは何かへ進みます。オンラインでの保存や作業管理を知りたい場合はGitHubとは何かを読みます。
最初のリポジトリを作る前には、作品の目的と最初の機能を個人開発を始める前に決める3つのことで決めておくと、何を入れるか判断しやすくなります。