GitHubの使い方
GitHub(ギットハブ)は作成したプログラム(ソースコード)や著作物に関する「ソースコードWeb管理サービス」です。GitHubはGitの仕組みを利用し、世界中の人々がプログラムのソースコードやデザインデータなどを保存して、公開できるようにしています。
システム開発の現場では、このGitHubをチーム単位でソフトウェア開発に利用することが一般化しています。以前は無料プランにさまざまな制約がありましたが、2020年4月以降より有料プラン向けだった機能が無料で利用できるようになり、さらに利用しやすくなっています。
また、個人利用でもプログラミングをされる方には大変役に立つサービスですので、とてもおすすめです。この記事では、GitHubの使い方について初心者の方にも分かりやすく図解していきますので、ぜひ参考にしてください。
そもそもGitとは?
「Git」(ギット)とは、ソースコードなどの変更履歴を記録・追跡できる、コードバージョン管理システムの名称です。プロジェクトやチーム単位でソフトウェア開発を行う際には、開発したソースコードのバージョン管理が重要になりますが、Gitはその負担を大きく軽減してくれます。
複数のプログラマーがサーバ上にある同じリポジトリ(貯蔵庫)を利用していると、誰がソースコードを修正したのか、最新版はどれなのか、などの状況が分からなくなり、誤って修正前のファイルをリリースしてしまうリスクがあります。
こうしたソースコード管理上のミスを防ぐのがGitの役割であり、それがGitを使う理由です。
【参考】:Git---distributed-is-the-new-centralized
GitHubを使うために知っておきたい用語
GitHubの使い方に入る前に、GitHubを利用する上で最低限知っておきたい用語があります。これから簡単にそれらの用語や機能を解説しますので、ぜひ予備知識として理解しておいてください。
リポジトリ(Repository)
GitHubでは必ずリポジトリを利用します。リポジトリとは倉庫の意味で、Github上ではディレクトリやファイルなどの情報を保管する場所を指します。リポジトリではファイルの変更履歴をすべて記録し、ファイルやソースコードなどのバージョンを管理することができます。
リポジトリには次の2種類があります。
1:リモートリポジトリ
リモートリポジトリは、リモートアクセスするネットワーク上のリポジトリのことです。エンジニアはリモートリポジトリをローカルに複製してローカルで作業し、その結果をリモートリポジトリにプッシュすることでそれぞれの同期を取ることができます。
2:ローカルリポジトリ
ローカルリポジトリとは、ローカル上にあるリポジトリで、プログラムの作成や修正などを行うために利用します。リモートリポジトリの複製をローカル環境に置くか、新規にローカル環境に作成して利用します。ローカルリポジトリ内では他人のコードも自由に修正を加えられますが、他人のリモートリポジトリに対して一方的な修正などはできません。
フォーク(Fork)
リポジトリのコピーを意味します。プロジェクトが複数に枝分かれしていく姿が食器のフォークに似ていることから名付けられました。オリジナルのリポジトリをローカルにコピーして、編集や改変がオリジナルに影響を与えずに行われることをフォークと呼びます。
プルリクエスト(Pull Request)
オリジナルからコピーしたものに対して変更を行い、変更結果をオリジナルに反映したい場合に利用する機能です。オリジナルのオーナーに対し「プルリクエスト」の通知を送り、オリジナルの更新を依頼することができます。
マージ(Merge)
「プルリクエスト」を受けたオーナーが、変更内容を自分の持つリポジトリに取り入れる機能です。これを「マージ」と呼び、ソフトウェア開発では重要なプロセスです。マージはGitHubの特徴の1つで、万一間違えてマージしてしまっても、元に戻せますので安心してマージができます。
コミット(Commit)
コミットはリビジョンとも呼びます。コミットとは、Github上の追加や変更履歴をリポジトリに保存することです。ファイルに対してコミットをすると、コミット識別番号が付与され、コミットした変更箇所と、変更者、変更日時などの記録が保持されます。
プッシュ(Push)
プッシュとはローカルリポジトリをリモートリポジトリにアップロードして、自分のコミットをリモートリポロジに反映することです。チーム作業では、他のメンバーがプッシュよってリモートリポジトリに変更を加える場合があります。このプッシュに対し、リモートリポジトリに加えられた変更内容をローカルリポジトリに同期させることをプルといいます。
ブランチ(Branch)
ブランチとは1つのプロジェクト本体から分岐させ、本体に影響を与えないよう開発を行う機能のことです。オリジナルの履歴から分岐したブランチは、他のブランチに対する変更の影響を受けません。
既にリリースしたソフトウェアにも影響を与えず、バグの修正や機能追加を行う際にブランチを利用します。修正作業などが終了し、確定したブランチをオリジナルに統合することをマージ(Merge)といいます。
インデックス(Index)
リポジトリの下にあるディレクトリは、一時ファイルなど、GitHubでの管理の必要がないものがあります。
そこでGitHubは、編集やコミットなどを行い、バージョン管理が必要なものだけをインデックスに登録してバージョン管理の対象にする仕組みになっています。
GitやGitHubの利用を始める方法
GitHubを利用するにはさまざまな方法があります。ここではWindowsユーザー向けにGitのダウンロード方法などを紹介します。
主なものとして「Git for Windows」(Gitコマンド操作)と「GitHub」(Webサービス)、及びGitHub Desktop(GitHubのGUIアプリ)、GitHub CLI(GitHubコマンド操作)の4種類です。上級者の中にはこれらを使い分けている方もいます。
Git for Windows
主に個人でプロジェクトのスナップショットを保存して、ローカル上でバージョン管理を行うために利用するソフトウェアです。以下のサイトからソフトをダウンロードし、ローカルPCにインストールして利用します。
コマンド操作主体の「Git Bash」を基本としますが、GUIベースの操作を望む人は「Git GUI」を利用することができます。
【参考】:Git for Windows
GitHub
開発プロジェクトでの共同作業向けのWebベースプラットフォームで、Gitを用いたサービスです。GitHub上にアカウント登録することで利用ができるようになります。
【参考】:GitHub 公式
GitHub Desktop
GitHubのデスクトップ用アプリケーションです。GUIツールであり、ほとんどの操作をデスクトップ上で行えます。特にGitHub初心者には利用をおすすめします。ただし、GitHub Desktopではcherry-pick・rebase・resetなどの細かいGit操作ができません。
細かい操作が必要な際には他のツール(コマンドラインツール)を利用します。
【参考】:GitHub Desktop
GitHub CLI
GitHub公式のコマンドラインツールです。ブラウザを立ち上げる必要もなく、画面の切替が不要で、コマンドラインを使うため作業の定型化がしやすく、また自動化も可能です。中級者以上には使い勝手のよいツールです。
【参考】:About GitHub CLI - GitHub Docs
GitHubアカウントを作成する
GitHubの利用に当たってはGitHubアカウントが必要です。初めてGitHubを利用する方はアカウントを作成しましょう。
1.GitHub公式サイトにアクセスし、アカウント登録のために[GitHubに登録する]ボタンをクリックします。
2.GitHubの英文サイトに移動しますので、ここで「Username」「Email address」「Password」(15文字以上、または数字と小文字を含めて8文字 以上)を入力し、アカウント登録を行います。既に登録されている名前は使用できません。
すべて正しく入力すると、8桁の起動コードが示されたメールが届きます。
3.起動コードを入力すると、利用人数と「学生・教師」か否かを尋ねてきます。続いて、GitHubの機能で興味あるものを尋ねてきますので、選択した結果に適したプランを勧められます。有料プランもありますが、最初は無料のFreeプランで十分です。「free」を選んでから「Continue」ボタンをクリックします。
この後、登録したメールアドレスに認証メールが届きますので、メールの内容に従ってユーザ認証を行ってください。これでGitHubアカウントの登録は完了です。
Gitをインストールする
GitHubへのアカウント登録が済んだら、Gitをインストールしておきましょう。Windowsの方は下記「Git for Windows」サイトからダウンロードしてください。
Macは下記「Download for macOS」からダウンロードしてインストールしてください。Windowsの場合、以下のようなウィンドウが表示されたらGitのインストールは終了です。
【参考】:Git for Windows 【参考】:Download for macOS
Gitの初期設定
Git Bashを起動し、Gitの初期設定を行います。
Gitではソースコードの変更履歴を確認できますが、「誰が」変更したかを確認するための情報が必要です。この作業者を識別するための情報として、ユーザ名とメールアドレスを登録する作業を行います。
※コピーペーストする場合は、'$'を除いてください。
▪ユーザ名
以下のコマンドを入力します。
$ git config --global user.name 任意のユーザ名
▪メールアドレス
以下のコマンドを入力します。
$ git config --global user.email 任意のメールアドレス
入力が済んだら以下のコマンド入力で、上記のユーザ名とメールアドレスの登録を確認できます。
$ git config --list
GitHubの基本的な操作方法
ここまでGitHubを使うために必要なことを解説しました。ここからは、実際にGitHubの使い方について解説していきます。
リモートリポジトリを作成する
リポジトリを作成するには、GitHubにログインした状態で[Create a new repository]ボタンをクリックし、必要な情報を入力します。
①リポジトリ名を「Repository name」欄に入力します。 ②「Description」(Optional)には、作成するリポジトリの内容などを入力します。 ③次にリポジトリを公開「Public」するか、非公開「Private」にするか、ラジオボタンで設定します。 ④「Add a README file」は第3者が見た時に確認してもらうための説明書きです。チェックボックスにチェックを入れ、必要あれば「README file」をリポジトリに追加します。
最後に[Create repository]をクリックすればリポジトリが作成され、画面左上に表示されます。
ローカルリポジトリを作成する
続いては、コマンド操作を用いてローカルリポジトリを作成していきます。
以下の操作はインストールしたGitのターミナル「Git Bash」を利用してコマンドを実行してください。
「Git Bash」が起動したら、以下のコマンドを順にコピーし、「Git Bash」の右クリックメニューからPasteで貼り付けていきます。($ は除く)
$ mkdir github
$ cd github
$ mkdir test-push
$ cd test-push
ディレクトリが作成できたら、「git init」コマンドでローカルリポジトリを作成します。
$ git init
以下のように表示されたら成功です。
Initialized empty Git repository in C:/Users/ユーザー名/github/.git/
ローカルリポジトリにコミットする
ファイルをローカルリポジトリにコミット(登録)していきます。作成したファイルを「git add」コマンドでインデックスにコミットします。これにより、「Git」の管理対象のファイルとなります。
ここでは、「test-push」上に既に格納しておいたPythonの実行ファイル「clock.py」をコミットします。コミットを行う際に使うコマンドは以下の通りです。
$ git add clock.py
エラーなどのメッセージが出なければ、インデックスへの登録は正常に行われています。
ここまでで、リポジトリの登録が完了です。
リモートリポジトリにプッシュする
最後に、対象のファイルをリモートリポジトリにプッシュします。
送信する前に、「git remote」コマンドでリモートリポジトリにファイルを追加しておきましょう。
リポジトリのURLは、GitHubで作成したリポジトリのURLを指定します。
※リモートリポジトリのURLは、GitHub上に作成したリモートリポジトリを右クリック→「リンクのアドレスをコピー」で取得できます。
$ git remote add origin https\://github.com/ユーザーID/test.git'
続いて「git push」コマンドで、リモートリポジトリに送信します。
次に以下のコマンドを実行しましょう。
$ git push origin master
ユーザーネームとパスワードを求められたら、それぞれGitHubで登録した内容を入力します。
これで、GitHubへプッシュし、リモートリポジトリに反映ができました。
GitHub上のリモートリポジトリを確認すると、プッシュした「clock.py」が反映されていることが分かります。
GitHubを利用するメリット
ここまでGitHubの基本的な使い方について解説してきました。では、実際にGitHubを使うとどのようなメリットがあるのでしょうか。エンジニアがGitHubを利用するメリットについて、GitHubの特徴を交えて解説していきます。
開発を進めやすくなる
ソフトウェアの開発過程においては、プログラムの修正や変更が多く発生します。GitHubを使えば、上記で紹介したような基本機能だけでもいつどのような変更がプログラムに加えられたのかがわかりやすくなるため、バージョン管理が適切にできるようになります。
また、開発から公開までの一連の流れをサポートする「GitHub Actions」や、ソースコードエディタ「Visual Studio Code」をオンラインで利用できる「Codespaces」といった機能もあり、開発を総合的にサポートしてくれる利便性の高いツールとなっています。
チームでの開発効率が向上する
GitHubはチームでの開発に向いています。チームで利用する機能として最も代表的なものが、「Pull Request」や「Issue」といったコミュニケーション機能です。これらは、リポジトリに関する申請、要求、提案を支援します。
正確なバージョン管理によってトラブルを回避するとともに、コミュニケーション機能を用いることでメンバー同士のやり取りがスムーズになり、開発効率が大幅に向上します。
さらに、「GitHub Projects」というプロジェクト管理ツールの機能もあり、ミス、トラブル、遅れなどを防ぎながらプロジェクトの進捗などを効果的に管理することもできます。
プライベートリポジトリを無料で利用できる
GitHubでは2020年4月から、それまで有料機能だったプライベートリポジトリが無料で利用できるようになりました。プライベートリポジトリは、パブリック(公開)リポジトリとは反対に限られたユーザーしか見ることのできない非公開のリポジトリです。
プライベートリポジトリは、開発中のアプリケーションやオープンソース化しない開発において多く活用されています。パブリックとプライベートの使い分けが無料でできるのは、エンジニアにとって大きなメリットです。
GitHubを活用しよう!
ここまで、GitとGitHubの関係・GitHubを使う上で押さえておきたい用語・Githubに関係する4つのツール・GitHubのユーザ登録・「Github for Windows」のインストール・GitHubでのリモートリポジトリの作成・Gitコマンドを用いたローカルリポジトリの作成方法・コミット・プッシュの使い方などを解説しました。
GitHubはシステム開発プロジェクトにおいて必須知識です。今回は入門編ということで、基本的な操作について解説しましたが、これを機にGitHubの習得に努め、システム開発力のスキルアップをしましょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから