皆さんこんにちは!Venus店長(@Venusblaze2)です!
今回はエンジニア・エンジニアを目指している方なら是非知っておきたい「 GitHub 」というサービスについて解説していこうと思います。
この記事はこんな方に向けて書いています。
目次
GitHubとは?
公式によるGitHubの説明はこの通りです。
GitHubは、ユーザの皆さんからヒントを得て作成された開発プラットフォームです。
オープンソースプロジェクトやビジネスユースまで、GitHub上にソースコードをホスティングすることで、数百万人もの他の開発者と一緒にコードのレビューを行ったり、プロジェクトの管理をしながら、ソフトウェアの開発を行うことが出来ます。 「引用:https://github.co.jp/」
つまりGitHubとは、大まかな理解としては世界中の人々がプログラムやデザインデータなどを保存・公開することができる「ソースコード管理」のためのWEBサービスです。
この他にも、ソースコードのバージョン管理や閲覧機能・バグ追跡機能などソフトウェアを開発する上でとても便利な機能が満載です。「ソフトウェア開発のための豊富な機能」、これがGitHubが世界中のエンジニアたちに多く利用されている理由になります。
GitHubっていうのはソフトウェアの開発を支援する為のWEBサービスなんだね!
そのとおり!個人・企業問わずほとんどの機能を無料で利用することができるんだ!
む…むりょう!?!?!?こんなの使うしかないでしょ!!!
。。。(吉田店員は無料で言葉に弱いなんだなぁ)
実はGitHubを利用するには「Git」の知識が必要となってくるので、次にGitについて説明を行います。
Git と GitHub の違いって何?という方は以下の記事をご覧ください。
Gitとは
Gitとはソースコードの「分散型バージョン管理」を行うことが出来るサービスです。ファイルの変更履歴を管理・共有することが出来るので、主に複数人での開発で用いられます。
過去のバージョンも簡単にさかのぼることが出来るので、ソフトウェア開発には欠かせないサービスとなっています。
Gitはターミナル上でコマンドを使って操作するCUIシステムですが、実はGitHubにはGitの仕組みが利用されています。なので Git の知識は GitHub の理解に役立つ代わりに、頻繁に混同されてしまう原因でもあります。
GitHub特有の用語
GitHubを利用する前に、サービス特有の用語というものがいくつか存在するので、まずはそこからしっかりと理解していきましょう。
GitHub特有の用語の理解は、サービスを使っていく上で必須知識となるので、ここでしっかりと理解しておきましょう!
ローカルリポジトリとリモートリポジトリ
GitHubには「ローカルリポジトリ」と「リモートリポジトリ」という2種類のリポジトリがあります。
この2つの説明に移る前に「リポジトリ」について説明したいと思います。
リポジトリとは「保管場所」という意味で、ファイルやディレクトリ(フォルダ)を保管する場所のことです。GitHubで取り扱うファイルやフォルダはこのリポジトリに保管しておきます。
続いてローカルリポジトリとは「自分のPC内」に記録されるリポジトリのことです。一方リモートリポジトリとはネットワーク上(サーバー)に記録されるリポジトリです。リモートリポジトリの場合、保管場所(リポジトリ)はネットワーク上に存在するため複数人で共有することができます。
ローカルリポジトリ・リモートリポジトリには次のような特徴があります。
- 作業を自分のPC上で行うことが出来る
- リモートリポジトリにアップロードすることで、作業内容を公開することが出来る(プッシュ)
- 新規作成・リモートリポジトリの複製により作成することが出来る
- 基本的にリポジトリは公開される
- 他開発者と共有して利用するもの
GitHubではファイルやフォルダを「リポジトリ」っていう保管庫に保存しておくんだね!
そのとおり!
そしてリポジトリには「ローカルリポジトリ」と「リモートリポジトリ」の2種類があることも覚えておこう!
コミットとプッシュ(commit and push)
コミットとプッシュは先ほど説明した「リポジトリ」に関連した用語です。
コミットとはファイルを変更や追加した時の「履歴」をリポジトリに登録する作業のことを言います。
ファイルの内容を変更したら、その変更内容をGitHubに登録しておく必要がありますよね?この登録作業を「コミット」と言います。
そしてプッシュとは、ローカルリポジトリ内のファイル・フォルダをリモートリポジトリにアップロードする作業のことを指します。
基本的に個々の作業はローカルリポジトリ(ローカルな環境:自分のPCなど)で行い、その作業内容を各自リモートリポジトリ(公開されているサーバー上の保管庫)にアップロード(プッシュ)することで、チーム内での作業内容の共有が行われます。
イメージとしては、自分のPC内にあるファイル・フォルダをドライブの共有フォルダにアップロードする操作に似ていますね。
共有フォルダ―に誤ってファイルをアップロードしちゃうってのはあるあるだよね~。
そうだね~(笑)。GitHubでもそういったことは起こりうるので皆さんは注意しましょうね~。
ちなみに、リモートリポジトリでの変更内容をローカルリポジトリに同期することを「プル」と言います。
クローン(clone)
クローンも「リポジトリ」に関連した用語です。先ほどローカルリポジトリの作成は「新規作成」か「リモートリポジトリの複製」の2通りの手段があると言いましたね。
まさに2つ目の手段である、リモートリポジトリを複製してローカルリポジトリを作成するためのコマンドのことを「クローン」と言います。
クローンを利用すると、簡単にローカルな環境(自分のPCなど)にリモートリポジトリと同一内容のリポジトリが作成できてしまうんです!
へ~、そりゃ~便利だ!!
GitHub その他の用語
ブランチ(branch)
ブランチとは日本語で「枝」という意味で、作業履歴を木の枝のように分岐させて保存することを指します。
元のプロジェクトに影響を与えることなくバグ修正や新機能などを追加することができます。つまり複数人での開発においても、同時に平行して各々の作業内容をプロジェクトに追加していくことができるんです。
また不具合が発生した場合でも、ブランチを辿ることでどこを修正すべきかという判断がしやすくなるというメリットもあります。
ブランチは「元のプロジェクトには影響を与えない」から、Aさんは「新機能1」をBさんは「新機能2」をCさんは「バグ修正」をといった感じで、各々が平行して作業を行うことができるんだね!
その通り!!よく理解できているね!!
プルリクエスト(pull request)
プルリクエストとは、個人の環境(ローカルリポジトリ)で行った変更を他の開発者(プロジェクトの管理人など)に通知する方法です。
例えばあるプロジェクトに対する、バグ修正や新機能など変更を行う時に関係者に向けて通知(変更をリクエスト)されます。
一体なんの為に通知を行うんだろう…?
変更内容を通知することで、関係者間でその変更内容は正しいのかという「コードチェック」を行うことができるんだ!
なるほど!変更内容をみんなに知らせて確認することで、誤りがあれば早い段階で気づくことができるんだね!
その通り!変更をプロジェクトに適用する前の最終チェックに必要で重要な機能なんだ!
マージ(merge)
先程のプルリクエストでは、ローカルリポジトリの変更内容をプロジェクトの関係者に通知する機能と説明しました。
プルリクエストで通知された変更内容と元のコードとを「併合する」ことをマージといいます。マージをすることで、個人が行った変更内容が元のプロジェクトに適用されます。
変更内容を元のプロジェクトに適用することを「マージ」といいます!
フォーク(folk)
フォークはユーザが管理するリポジトリのコピーのことです。
簡単にいうと「他人のリポジトリ」を自分のPC内にコピーして作業を行えば、元のプロジェクトには影響を及ぼすことなく、好きに変更を加えることが出来るというのがフォークです。
またフォークで変更した内容をプルリクエストにより、関係者に通知することでオリジナルのリポジトリに変更を提案することも出来ます!
他の人のリポジトリを直接ではなく、一旦自分の環境内にコピーしてから変更を行うんだね。
そうだね。そうすることで元のプロジェクトには影響を与えることなく、自由に変更を加えることが出来るんだ!
あれ?ちょっと待てよ…。「フォーク」と「クローン」ってなんか似てない?
おっ、いいとこに気が付いたね。
この2つは機能としてはほとんど同じものだと考えても良いですが、違いを挙げるとするとクローンは任意のリポジトリを複製することで、フォークは自分以外のリポジトリを複製することです。
GitHubのアカウント作成方法
GitHubを使うためには、まずGitHubの「アカウント」を作成する必要があります。アカウントの作成手順は次の通りです。
アカウントの作成ができたら、次にGitHubの使い方をご説明します。といいたい所ですが、少し長くなってしまうので、使い方については以下の記事をご覧ください。
筆者おすすめのGitHub入門書
「いちばんやさしい」というキャッチフレーズ通り、イラストによる解説が非常に分かりやすく、初めてのGitHub入門書に最適な一冊です!
ワンクリックでサイトを応援する
にほんブログ村