OSS (Open Source Software)の使い方などを調べると結構な確率でGitHubのページに辿り着きます。
GitHubの名前は前々から知っていましたが、詳細は全く知りませんでした。
今回は自分の勉強(情報収集?)も兼ね、GitHubが何かを網羅的にかつ簡潔にまとめた記事を書こうと思います。
この記事を見ればGitHubが何か過不足なく分かる…はず。
参考サイトは各セクションの末尾に記載しました。
簡潔にGitHubとは?
概要
バージョン管理システムにGitを用いたソースコードのホスティングサービスで、GitHub社(過去にMicrosoftに買収された)が運営するサービス。
ソフトウェアソースコードやドキュメントなどのファイルをオンライン上に保存して複数人で共有し、バージョン管理の実施が可能。
要は、開発プロジェクトのソースコード(やドキュメントなど)を集約・管理するもの。
オープンソースのプロジェクトに関しては無料で全機能が使用できるため、OSSでは広く利用されているようである。
価格
以下のアカウント種別が用意されている。
- 個人向けFree
- 個人向けPro(月額$4)
- 企業/官公庁/教育向け Enterprise(月額$4)
- 企業/官公庁/教育向け Team(価格は要問合せ)
価格とアカウント種別の詳細についてはここのページを参照のこと。
例えば個人向けFreeとProでは利用時間などが異なる。
ただ、オープンソースのプロジェクトについては全機能を無料で使用できる。
Gitについて
名称にある通り、GitHubはバージョン管理システムとしてGitを利用している。
Gitはファイルの変更履歴を管理するためのバージョン管理システムで、Git自身もオープンソースである。
バージョン管理システムについて一応説明すると、主にソフトウェアのソースコードの変更管理をするシステムで、複数人が開発に参画する開発プロジェクトで使用される。
ファイルの変更管理ができ、変更のバッティングを防いだり、ある時点のソースを閲覧したり、変更箇所を特定することが容易になる。
GitとGitHubの違い
Gitは特定のソフトウェアを指し、GitHubはGitというバージョン管理システムを使用してGitHub社が提供するサービスのこと、です。
もう上で書いたけど…。
他のバージョン管理システム
Git以外にも、SubversionやMicrosoftのAzure DevOps Server(旧Team Foundation Server)がある。
ちなみにSubversionは前職の.net開発で使用したことがあり、その時はTortoiseSVNを使った(結構簡単にリポジトリと環境の構築ができ、便利だった)。
参考サイト
・Git
・Subversion
・TortoiseSVN
・Azure DevOps Server
GitHubの特徴
GitHubと連携できるツールがある
有名なツールだと、テキストエディタのAtom(そもそもがGitHub製ツールだが)、コミュニケーションツールのSlackがGitHubと連携可能。
ちなみに、Atomは無償で使用可能なエディタとしては多機能かつ便利。
以下の過去記事でも紹介しています。
連携可能なツールがあると作業効率にもプラスになるので、嬉しいかも。
コミュニティの機能がある
公式HPにもある通り、ソースのレビューなど共同で開発作業をするための機能がある
。
コメントを書いたり、人をフォローしたり、など。
フォーク(Fork)ができる
後の基本概念にも書くが、あるソースコードのリポジトリにコピーを作成し、自分のものにすることができる(これがフォーク)。
要するに、派生版を容易に作成可能である。
詳しい記述はGitHubの以下のページを参照。
※こちらは英語のサイト
OSSのリポジトリとしては広く利用されている
統計的数字は見つけられませんでしたが、OSSソフトウェアのプロジェクトではGitHubは非常によく使われている。
実際、OSSの使い方などについて調べる際、GitHubに辿り着くことがしばしばある。
要するに、この手のサービスとしては世界的に有名である。
GitHubで公開されているOSSの例を挙げると、Microsoftが提供するコードエディタのVisual Studio Code、facebookのWebフレームワークであるReactがある。
参考サイト
・Atom
・Slack
・GitHubのVisual Studio Codeのページ
・GitHubのReactのページ
基本概念
リポジトリ (repository)
英語の意味が「貯蔵庫」「倉庫」である通り、データを蓄積する場所のこと。
GitHubの場合、ソースコードを一元的に保管する場所のことを指す。
また、GitHubサーバー上のリポジトリをリモートリポジトリ、リモートから取得した自分のPC上のリポジトリをローカルリポジトリと呼ぶ。
リポジトリには非公開と公開のものがあり、前者をプライベートリポジトリ、後者をパブリックリポジトリと呼ぶ。
コミット (commit)
変更をローカルのリポジトリに対して反映すること。
プッシュ (push)
ローカルリポジトリの変更をリモートリポジトリに送信すること。
プル (pull)
リモートリポジトリの内容をローカルリポジトリに反映すること。
ブランチ (branch)
各リポジトリ内で、リリース版やテスト版など、版を分岐させる機能。
後に述べるフォークはリポジトリのコピーだが、ブランチはリポジトリ内部で版を分岐させる。
新しいブランチを作る時は「ブランチを切る」と呼ぶらしい。
また、分岐させたブランチを統合することを「マージ(merge)」と呼ぶ。
ブランチの詳しい説明は以下のGitHubのドキュメントを参照のこと。
フォーク (fork)
別にあるオリジナルのリポジトリをコピーすること(食器のフォークのように派生ししたもn)。
他者が管理するリポジトリに対して変更権限を有しないが変更を行いたい時、そのリポジトリを自身ものとしてコピーし、変更作業をする…などの場合に用いる。
詳しくはGItHub公式ドキュメントを参照。
参考サイト
・GitHub ヘルプ
以上です。
おわり。