GitHubとは?非エンジニアのためのバージョン管理入門
GitHubは、ソフトウェアプロジェクトのコードを完全な変更履歴とともに保存するWebサイトです。これにより、すべての変更を確認したり、ミスを取り消したり、他の人と同じプロジェクトで作業したりできます。仕組みの土台はGitで、Gitはプロジェクトのファイルのスナップショットを時間とともに記録する無料のソフトウェアです。Gitは履歴を記録するツールで、GitHubはその履歴をオンラインで共有し、バックアップし、話し合うための場所です。
AIでアプリを作る場合、GitHubの役割は主に2つです。1つ目は、コードを作ったツールの外側に自分のコードのコピーを持つこと。2つ目は、開発者が普段使っている形式で開発者に引き渡すことです。
AIでアプリを作るときに大切な理由
AIアプリビルダーは大量のコードを素早く書き換えますが、すべての変更が改善とは限りません。バージョン管理は、その変更を安全に扱うための仕組みです。
- 安心して取り消せる。 保存されたすべての変更はスナップショットになります。AIが何かを壊したら、最後に正常だった状態に戻せます。
- 所有権。 自分のGitHubアカウントにあるコードは、ツールを乗り換えたり、利用をやめたり、別の意見を聞きたくなったりしても、あなたのものとして残ります。
- 開発者との協業。 ほとんどの開発者は毎日Gitを使っています。リポジトリがあれば、AIが書いたコードを開発者がレビューし、修正して、変更を送り返せます。
- 別の場所への公開。 多くのホスティングサービスは、GitHubのリポジトリから直接デプロイできます。
身近なたとえ:変更履歴の記録と共有ドライブ
変更履歴の記録機能(トラックチェンジ)をオンにした文書が、共有ドライブに保存されている状況を想像してください。
- Gitは変更履歴の機能にあたります。すべての編集が、誰が・いつ・なぜ行ったかとともに記録され、任意のバージョンに戻せます。
- GitHubは共有ドライブにあたります。文書はオンラインにあり、他の人がコピーを取得でき、コメントや承認を行える場所もあります。
- ブランチは、「draft — 新しい料金セクション」のような別名のコピーを保存するようなものです。全員が頼りにしている版に触れずに試せます。試みがうまくいったら、元に統合(マージ)します。
文書との違いは規模です。アプリは何百ものファイルでできていて、Gitはそれらすべてをまとめて追跡します。そのためスナップショットは、プロジェクト全体がその瞬間にどういう状態だったかを表します。
よく出てくるGitとGitHubの用語
| 用語 | わかりやすい意味 |
|---|---|
| リポジトリ(repo) | 完全な履歴を含むプロジェクトのフォルダー |
| コミット | 変更を保存したスナップショット。内容を短く説明するメッセージが付く |
| ブランチ | 作業の別の流れ。実験が主要な版を乱さないようにする |
| main | 主要ブランチの一般的な名前。公開される版 |
| マージ | あるブランチの変更を別のブランチに取り込むこと |
| マージの競合 | 2つの変更が同じ行に触れている状態。どちらを残すか誰かが選ぶ必要がある |
| クローン | リポジトリの完全なコピーを、履歴を含めてダウンロードすること |
| プッシュ / プル | 自分のコミットをGitHubへ送ること / 他の人のコミットを取り込むこと |
| プルリクエスト(PR) | ブランチの統合を提案し、レビューと議論を行うGitHubのページ |
| フォーク | 他人のリポジトリを、GitHub上で自分用にコピーしたもの |
| イシュー | リポジトリに紐づくGitHub上のToDoやバグ報告 |
.gitignore | Gitに記録させないファイルの一覧。.envのような秘密情報やダウンロードされた依存関係など |
| GitHub Actions | GitHub上で動く自動化。例:プルリクエストごとのテスト実行 |
特に強調したい点が2つあります。1つ目は、Gitの履歴は設計上、永続的であること。パスワードをコミットしてプッシュしてしまうと、後のコミットで削除しても履歴からは消えません。2つ目は、コミットは、そのメッセージの良し悪しでしか役立たないことです。「2人が同時に予約したときの二重計上を修正」は後で役立ちますが、「更新」では役に立ちません。
具体例:AIで作ったアプリをフリーランサーに引き渡す
AIアプリビルダーでクライアントポータルを作りました。動いてはいますが、会計ソフトとの難しい連携機能を、フリーランスの開発者に追加してもらいたいとします。
- プロジェクトを新しい非公開のGitHubリポジトリに接続し、プッシュします。これでリポジトリにコードと履歴が入ります。
- 中身を確認します。 GitHubでリポジトリを開きます。
.envファイルやAPIキーがコードに含まれていないはずです。秘密情報はプラットフォームの設定に残し、必要な場合は開発者に別途共有します。詳しくは環境変数と秘密情報を参照してください。 - フリーランサーを招待します。 そのリポジトリだけの共同作業者として招待します。
- 開発者は
accounting-syncのようなブランチで作業し、作業の区切りごとにコミットし、終わったらプルリクエストを開きます。 - あなたがプルリクエストをレビューします。 コードを読めなくても、説明文を読み、変更されたファイルを確認し、コメントで質問できます。
- 問題なければマージし、ビルダーにプルして変更を取り込みます。そうすれば、あなたとAIは新しい版から作業を続けられます。
この過程のどこでも、何がどう変わったかを正確に確認でき、必要ならすぐに取り消せます。これが、ひとつの作業の流れで見たときのバージョン管理の価値です。そもそも開発者に頼むべきか迷っている場合は、開発者に頼むか、AIで作るかを参照してください。
よくある間違いと誤解
- 「GitHubとGitは同じもの」。 Gitは GitHub なしでも動きます。GitLabやBitbucketなど、Gitのリポジトリを扱う別のサービスもあります。
- 「GitHubがアプリを動かしてくれる」。 GitHubはコードを保存するサービスです。アプリを一般公開するにはWebホスティングが必要です。別のサービスであり、GitHubからデプロイできるホスティングもあるというだけです。
- 秘密情報のコミット。 最も被害が大きく、最もよくあるミスです。
.envファイルは.gitignoreで除外し、一度でもプッシュされたキーは無効化(再発行)してください。 - ブランチを1つだけにして、メッセージも書かない。 一人での実験なら問題ありませんが、リスクのある作業には、わかりやすいコミットメッセージを付け、ブランチを使ってください。
- 2か所で同時に編集する。 GitHub上とAIビルダー上で、間に同期せずにコードを変更すると、競合が発生します。一度に編集する場所を1か所に決め、切り替える前に同期してください。
- 非公開リポジトリがすべてのバックアップだと思い込む。 リポジトリに入るのはコードだけで、データベースの中身やアップロードされたファイルは含まれません。それぞれ個別にバックアップが必要です。
AIビルダーに頼むべきこと
- 「
.env、依存関係のフォルダー、ビルド出力を除外する.gitignoreを追加して」 - 「インストール方法、必要な環境変数(名前のみ)、起動方法を説明するREADMEを書いて」
- 「すべての変数名を含み、実際の値は入っていない
.env.exampleを追加して」 - 「変更ごとに、わかりやすく具体的なコミットメッセージを付けて」
この4つを頼めば、開発者が数分で引き継げるリポジトリになります。アプリを自分のサーバーに移すにはAIで作ったアプリを書き出して自前でホストする方法を、実際のユーザーに使ってもらう前に強化するにはAIのプロトタイプを本番に持っていく方法を参照してください。
GitHubとMythex
Mythexはすべてのプランで、履歴を自動的に保存します。エージェントの各ターンが成功した後にチェックポイントを保存し、そのGitのスナップショットに戻せます。Proプランでは、GitHubを接続し、自分のリポジトリに対してプロジェクトをプッシュ・プルできます。プロジェクト全体をアーカイブとしてダウンロードすることもできます。書き出しの際、秘密情報とインストール済みの依存関係は除外されます。ここでのGitHubは、コードの同期に使うものであり、Mythexへのサインインには使いません。詳しくはドキュメントのGitHub、書き出し、読み込みを、各プランに含まれる内容は料金ページを参照してください。
よくある質問
GitとGitHubの違いは何ですか?
Gitは、どのコンピューターでもプロジェクトのファイルの変更履歴を記録できる無料のソフトウェアです。GitHubは、Microsoftが運営するWebサイトで、Gitのリポジトリをオンラインで保管し、プルリクエスト、イシュー、自動化などの共同作業のための機能を追加します。
AIでアプリを作るのにGitHubは必要ですか?
必須ではありません。多くのAIアプリビルダーは、製品の中で変更履歴を自動的に保存します。GitHubが役立つのは、コードの自分専用のコピーを持ちたいとき、開発者と一緒に作業するとき、またはアプリを別の場所で公開する予定があるときです。
GitHubは無料ですか?
GitHubには無料プランがあり、公開リポジトリと非公開リポジトリの両方が含まれています。個人や小規模チームにはたいてい十分です。有料プランではチーム管理などの機能が追加されます。最新の内容はGitHubの料金ページで確認してください。
GitHub上の私のコードは公開されますか?
リポジトリを公開設定にした場合のみ公開されます。非公開リポジトリは、あなたと招待した人だけが見られます。非公開リポジトリであっても、パスワードやAPIキーは絶対にコミットしないでください。