Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

GitHubとはどういうサービスか、例を交えて解説しています。

GitHubとは

GitHubとは、ソースコードの管理ができる開発プラットフォームです。オープンソースプロジェクトやビジネス用途まで使えます。現在、マイクロソフト傘下にあります。

関連)GitHub公式サイト 

GitHubでは公開されているリポジトリのソースコードは自由にローカル環境に複製できます。商用利用してよいかどうかは、個別のソースコードのライセンスによります。たとえばMITライセンスは、目的によらず自由に扱うことができ配布も可能。改変後のソースコードの公開義務もなく、著作権表示のみ必要です。

また、自社で開発中のソースコードをプライベートリポジトリ(許可したメンバーのみアクセス可能)に保管し、Gitによる分散バージョン管理をおこないながら開発を進めることができます。GitHubを起点に、自動ビルド、自動テスト、自動デプロイなどのCI/CD(継続的インテグレーション、継続的デプロイメント)が可能です。

関連)継続的インテグレーションについて – GitHub Docs

例えば、検索エンジンの大手・GoogleもGitHubを活用してオープンソースソフトウェアのコード管理をおこなっています。2021年6月時点で、2.0k(2,000)以上のリポジトリ(ソースコードの管理場所)が存在しています。

参考)GoogleのGitHubりポジトリ

Googleのリポジトリで一番人気は、material-design-iconsというリポジトリでした。管理対象はフォントとアイコン画像。ソースコードとしてsvg形式のベクターデータを管理しています。README.mdには更新履歴が記録されています。

Material design icons
Material design icons is the official icon set from Google. They can be browsed at https://fonts.google.com/icons. The icons are designed under the material design guidelines.

4.0.0 Update
Restructured repository, updated assets.

3.0.1 Update
Changed license in package.json.
Added missing device symbol sprites.
 :
 :

このデータは、GitHubの一括でパソコンや開発機にダウンロードが可能です。リポジトリのCodeボタンをクリックするとクローン、GitHub Desktop(Windowsパソコン用のGitHubユーティリティ)、ZIP形式でダウンロードが選べます。

GitHubで公開されているリポジトリの例

開発機にgitというツールをインストールしておくと、コマンド一発でリポジトリ上の最新ソースコードをダウンロードできます。gitはWindows、Mac、Linuxに用意されていて、無料で利用できます。以下は、git cloneコマンドで開発機に直接、githubのソースコードを取り込んでいる例です。

$ git clone https://github.com/google/material-design-icons.git
Cloning into 'material-design-icons'...
remote: Enumerating objects: 873844, done.
remote: Counting objects: 100% (2/2), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 873844 (delta 0), reused 0 (delta 0), pack-reused 873842
Receiving objects: 100% (873844/873844), 188.45 MiB | 3.03 MiB/s, done.
Resolving deltas: 100% (108092/108092), done.
Checking out files: 100% (506152/506152), done.

ソースを取り込んだあとのファイル構造です。fontにはフォント、android、iosにはアイコン画像が入っていました。

$ cd material-design-icons/
$ ls
LICENSE  README.md  android  font  ios  png  src  update
$ cd font
$ ls
MaterialIcons-Regular.codepoints
MaterialIcons-Regular.ttf
MaterialIconsOutlined-Regular.codepoints
MaterialIconsOutlined-Regular.otf
MaterialIconsRound-Regular.codepoints
MaterialIconsRound-Regular.otf
MaterialIconsSharp-Regular.codepoints
MaterialIconsSharp-Regular.otf
MaterialIconsTwoTone-Regular.codepoints
MaterialIconsTwoTone-Regular.otf
README.md

Githubの機能

ソースコードのリポジトリ管理

ソースコードはリポジトリと呼ばれる形式で管理されます。リポジトリにはローカルリポジトリとリモートリポジトリがあり、ソースコードの修正や単体テストは開発用マシン上にローカルリポジトリを作ってバージョン管理します。ローカルリポジトリは開発メンバーの数だけ存在することになります。メンバーが修正したソースコードを一括管理するのがリモートリポジトリ。各メンバーのローカルリポジトリからリモートリポジトリにソースコードを反映させます。

Git FlowやGitHub Flowといったブランチの使い方が可能で、同時進行する新機能の追加やバグフィックスなどの異なる変更を効率的にリリースしていくことが可能です。

【関連記事】
GitHub flowは、GitHub創設時にも使われたワークフローで、シンプルなブランチモデル

リモートリポジトリに矛盾なく複数のメンバーのソースコードを反映するために、プルリクエストという機能があります。コードの変更をレビュワーに通知して、リモートリポジトリへのソースコードのマージを依頼するんですね。プルリクエストを受けたレビュワーは、コードをレビューしてバグや記述ミスなどを指摘したり、問題なければリモートリポジトリへのマージを行ったりすることができます。プルリクエストにより、半ば強制的にメンバーの記述したコードを第三者のレビュワーが目視チェックすることになりコードの品質向上が期待できます。

バージョンやタスクの管理機能

GitHubにはIssueという機能があり、ToDoや仕様のバグ報告、リリース作業や結合テスト、個人的に気になっていることなどを記述できます。Issueにはタグ付けが可能で、必要、不要、優先度などを整理して必要な作業を洗い出すことができるんですね。また、Issueにはチェックリストを作ることができ、Issueごとのチェックリスト状況を一覧画面でインジケーター表示するため進捗が把握しやすくなります。

【関連記事】
GitHubのissueでリポジトリの課題管理 Assignee、Label、Project機能あり

GitHubにはプロジェクト管理機能があり、テンプレートによりTo Do、進行中、作業完了といったカラムが作成されます。これらはIssueをProjectに追加すると自動的にToDoに追加され、クローズすると作業完了に移動します。プロジェクト管理画面で、すべてのToDoの進捗状況を確認することができるんですね。

メンバーへの仕事配分などリソース管理に関する機能はありませんが、小規模な開発ならGitHubのプロジェクト管理だけで十分なケースもあります。

GitHubにはブランチという機能があります。システムのバージョンは単純にバージョン番号があがるだけではなく、バージョン1とバージョン2というリリースバージョンが同時に存在し、それぞれのバージョンのバグフィックスや機能追加が同時進行するケースがあるんですね。このような場合、併行して管理するバージョンをブランチ機能で枝分かれ(ブランチ)させて管理することが可能です。

本番バージョンと開発バージョンのブランチを作り、開発バージョンのテストが十分に済んだら本番反映のためにブランチをマージするという方法も良く使われます。

コードのビルド&デプロイ

マイクロソフトのAzure、Alibaba CloudACK、AmazonECS、GKE(Google)、IBM Cloud KubernetesService、OpenShiftなどのクラウドと連携して、ビルドしたコードをデプロイする機能があります。

連携には、GitHub Actionsという独自コードで記述できるジョブ管理の仕組みを利用します。

【関連記事】
GitHubのActionsは、ビルドやデプロイ、単体テストを自動化 独自開発可能

デプロイ先として、dockerなどのコンテナイメージレジストリを指定することができ、ビルド&デプロイ時に自動的にdockerコンテナの公開も可能です。

【関連記事】
GitHubからdockerコンテナイメージをビルド時に公開 複数イメージの同時公開も可能

まとめ

ポテパンダの一言メモ
  • GitHubとは、ソースコードの管理ができる開発プラットフォーム
  • gitツールで、公開されているリポジトリ内のコードをコマンド一発で取得できる
  • GitHubでは、ソースのリポジトリ管理(バージョン、タスク管理、ビルドやデプロイ)が可能

 

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。