GitHubとは何か?機能から使い方まで徹底解説
普段、Webアプリやスマートフォンアプリ、AIやIoT等のテクノロジーに触れずに生活をすることは難しいです。
そのようなテクノロジーに触れていて、「このアプリは誰か開発者が作っているのだろう」と考えることはあるかもしれません。
ですが、その開発者がどのようなツールを使って開発をしているのかまで考えることは少ないのではないでしょうか。
アプリケーションの開発の裏には、ほぼ必ずといっていいほど、GitHubと呼ばれるソフトが使用されています。
今回はGitHubとは何なのか、その機能から使い方について簡単に解説をしていきます。
- GitHubは、ソフトウェア開発で世界中の開発者に利用されているプラットフォーム
- バージョン管理の機能等が搭載されている
- レポジトリやコミット、プッシュといった機能で他の開発者との協働開発が簡単に出来る

目次

まず初めに、GitHubとは何かについて解説をしていきます。
GitHubは、2008年に設立されました。
ソフトウェア開発で世界中の開発者に利用されているプラットフォームです。
具体的には、「レポジトリホスティングサービス」と呼ばれるサービスを提供しています。
レポジトリとは、ソフトウェアの元になるプログラミングのコードやプロジェクトのファイルが格納される場所を指します。
このレポジトリを提供しているのがGitHubと呼ばれるサービスです。

では、なぜGitHubが開発の現場で多く利用されているのでしょうか?
その理由は2つ存在します。
・バージョンの保存が簡単にできる
・他の開発者との協力が簡単にできる
以下に詳しく解説していきます。

1つ目の理由は、バージョンの保存が簡単にできるという点です。
ソフトウェアやアプリケーションを開発する際には、プログラミング言語を用いてコードを記述する必要があります。
人間が喋る言語と違い、コンピューターが理解するプログラミング言語は、一つでも記述の間違いがあると理解をしてくれません。
たとえば、Pythonという言語で「こんにちは」と表示をさせたい場合は以下のように記述します。
print("こんにちは")
これをもし()を全角にして以下のように入力をすると、認識してもらえず、エラーが発生します。
print("こんにちは")

そのため、何かコードに変更を加える際には、エラーに備えて前のバージョンを保存しておくことが重要です。
上記の例は簡単な例ですが、特に大人数が関わる大規模なソフトウェアでは、誰かが間違ったコードを入力した場合に、元に戻すことが難しくなってしまいます。
これを防ぐために、GitHubではプログラミングのコードのバージョン保存の機能があります。
なので、もし誰かが間違ったコードを入力したとしても、簡単に前のバージョンに戻すことが出来ます。
そのため、開発の現場ではGitHubが重宝されています。

GitHubを使用すると、複数の開発者が同じ開発のプロジェクトで容易に協力することができます。
GitHubでは、ソフトウェアのコードへのコメントやレビューなどの機能を使用することが出来ます。
こういった機能を使用することで、他の開発者がGitHub上にアップロードしたコードに対して、他の開発者がコメントや修正をしながら開発をすることが可能です。
1人ですることが少ないソフトウェア開発では、こういった機能が重宝されることが多いです。
そのため、ソフトウェア開発の現場ではGitHubが多く利用されています。

具体的にGitHubはどのように使用されるのでしょうか?
以下3つの点に絞って解説をしていきます。
・レポジトリを作成
・コミットとプッシュ
・プルリクエスト

まずGitHubを使用する際には、レポジトリを作成する必要があります。
レポジトリとは、ソースコードやプロジェクトファイルを保管する箱のようなものです。
この中にソースコード等を保管することで、初めて他の人と共有することが可能になります。
他の開発者と共有することで、コードのバージョン管理や変更の追跡が簡単に行うことが出来ます。
レポジトリには2つの種類があります。
1つ目がローカルレポジトリです。
ローカルレポジトリとは、自分のPC上に保存をするレポジトリのことです。

ゲーム機のセーブデータを自分のゲーム機本体に保存するようなイメージをすると分かりやすいかと思います。
2つ目がリモートレポジトリです。
リモートレポジトリとは、クラウド上に保存をするレポジトリです。
ゲーム機で例えると、自分のセーブデータを誰でもアクセスできるクラウド(例:PS4であればPlaystationNetwork等)に保存をするようなイメージです。
ローカルレポジトリとリモートレポジトリの双方を使って開発をしていきます。

2点目が、コミットとプッシュです。
コミットは、ローカルレポジトリに自分のファイルやコードを保存することです。
ゲームで考えると、コミットはゲームのセーブをゲーム機で実施するようなイメージです。
2つ目がプッシュです。
プッシュとは、ローカルレポジトリにある自分のファイルやコードをリモートレポジトリに保存することです。
例えるならば、セーブしたゲームのデータをクラウド上に公開するようなイメージを考えるとわかりやすいかもしれません。
リモートレポジトリにコードを保存することにより、他の開発者がコードやファイルを見ることや編集をすることができるようになります。
リモートレポジトリにあるコードを大人数で修正したりすることで、多くの開発者が協働しながら開発をすることができます。

3つ目がプルリクエストです。
プルリクエストとは、自分の変更したコードをリモートレポジトリに入れてもらうように依頼する機能のことです。
ゲームで例えるならば、他の人がクラウド上に上げているセーブデータ(リモートレポジトリ上のコード)を使ってゲームを進めます。
その後、進んだ分のデータをクラウド上に取り込んでもらうかどうかを確認依頼するようなイメージです。

何のためにこのような機能があるかというと、誰かが変更したコードをレポジトリに取り込む前に確認やレビューをするためです。
もし、リモートレポジトリにあるコードを修正編集したい場合は、自分のローカルPCで編集をします。
その後、そのコードをリモートレポジトリにプッシュする前にプルリクエストを使って、他の開発者に変更点の確認依頼をします。
このようにして、リモートレポジトリにあるコードの修正編集を実施していきます。

GitHubは、開発者がソフトウェアやアプリの開発をする際に使用しているツールのことです。
使い方の基本は、レポジトリの作成とコードのアップロードですが、他にも多くの機能があります。
プルリクエストを作成して他の開発者に変更を提案したりすることもできます。
GitHubは、ソフトウェア開発の効率化が出来るツールです。
もし普段の生活でアプリやソフトウェアを使う際には、こういったツールが開発を支えているのだと意識をしてみてください。
PHOTO:iStock
TEXT:PreBell編集部
この記事を気にいったらいいね!しよう
PreBellの最新の話題をお届けします。
