目次
GitHubはGitを利用して世界中の人々がプログラムコードを公開したり共有したりできるサービスのことです。
GitHubはGitHub社によって運営されており個人、企業利用問わず無料で利用可能で、個人利用だけでなく、中小企業から大企業まで幅広く利用されています。
Gitは分散型のバージョン管理ツールです。開発を分散することでコードレビューやリリースサイクルを短くできる点がメリットとされ、世界中で広く利用されています。
Gitでは編集ファイルだけでなく編集履歴も管理できるため、ソフトウェアに不具合が起きた際過去のバージョンに戻すことができる上、不具合の要因を容易に切り分けられます。
ソースコード以外にも画像ファイルやExcel、Wordなどのファイルも管理できるため、ソフトウェア開発などでのソースコードの共有はもちろん、WebデザインやWebライティングにおいても広く利用されています。
GitHubに作成されたリポジトリ(ファイルや編集内容を保存しておく場所)は、基本的にすべて全世界に公開されますが、有償版を利用するとアクセス権限を付与しプライベートなリポジトリを作成できます。
有償版でも、非公開とはいえGitHubのクラウド上にソースコードをアップロードするため、社外秘情報などを含むシステムには不向きです。この問題を解決するため有償パッケージ版のGitHub Enterpriseというものがあります。
GitHub Enterpriseは社内ネットワークにてGitHubと同様の機能を利用できます。またGitではコマンドラインツールのため、Mac OSのターミナルやWindowsのコマンドプロンプトなどにコマンドを入力して使用する必要がありますが、GitHubはGUI(Graphical User Interface)を持っているため直感的に操作できます。
GitHubの他にもGitをGUIで操作できるクライアントは存在します。
Gitの公式のインストーラーに含まれています。日本語化されており作りもシンプルで一通りの機能はGUIに搭載されていて、無料で利用できます。
英語版のみではあるものの、コメントなどには日本語が利用できます。動作が軽くデザインもわかりやすいのが特徴です。一画面ですべてを確認できるように作られているため、ソースコードの比較などを行いやすいです。個人利用は無料ですが商用利用は有償です。
日本語化されており、無料で利用できます。直感的に利用できるためコマンド入力について初心者のユーザーでも利用しやすいのが特徴。ただしエラーは英語で表示されるため注意が必要です。
Windowsの拡張機能として無料で配布されているソフトウェアです。インストールするだけで、クリック操作のみでリポジトリを作成したりファイルをリポジトリへ追加したりできます。
GitHubではソースコードについて編集したい点がある際、編集箇所を他の共同開発者たちに伝える「プルリクエスト」を出します。共同開発者は編集内容をレビューし問題なければマスターのリポジトリに編集内容を取り入れます。
GitHubのサーバー上にあるマスターのリポジトリをリモートリポジトリといいます。各編集者はリモートリポジトリを自分のローカル環境にダウンロードし、編集の後にプルリクエストを出します。
レビューで問題ないと判断されればローカル環境にダウンロードしたリポジトリをリモートリポジトリにマージするという流れです。
GitHubを使うとどんなことができるのでしょうか。
バージョン管理ツールは共同開発者でソースコードを共有するために用いられますが、チームで開発を行う際、コードレビューを実施することが多いでしょう。
1つの画面にソースコードを投影し全員で確認したり個別で確認したりしているかと思いますが、この方法ではレビュー結果を残しにくく、また自分の気になるポイントしか確認してもらえないなど漏れのないレビューとなっていない可能性が有ります。
GitHubではそれらの問題を解決するためにプルリクエスト機能を提供しています。
プルリクエストは編集した内容を共同開発者にレビューしてもらうための依頼です。編集したい箇所がある場合、リモートリポジトリをローカルリポジトリにコピーし、編集を行います。
その内容をすぐにリモートリポジトリに反映してしまうと整合性やバグなど懸念があるため、一度共同開発者に編集箇所を共有するのがプルリクエストです。
承認がおりればリモートリポジトリに反映されるという流れです。プルリクエストはGitHubの開発管理画面にも表示されますが、共有用のURLも発行できるため、メールやチャットツールで通知を送ることもできます。
プルリクエストの画面では、コメントや絵文字でフィードバックを送信できる他、具体的なコードについて修正案を出したい場合にはソースコード上にコメントを残すことも可能です。
プロジェクトやソースコードの課題を管理する機能としてIssueがあります。
Issueを登録すると一覧に表示され共同開発者で確認、コメントを行うことができるため課題管理を効率化できます。また、Issueは情報を一元化できる点もメリットです。
ソースコード、プルリクエスト、変更履歴をIssueと関連付けて管理することで情報を集約できソースコードを編集する過程においてなされた課題提起や議論を確認できます。
Issueにラベルを付けて分類できる機能です。Issue一覧からラベル一覧を確認できます。bugなど利用頻度の高そうなものはデフォルトで用意されています。色分けもできる他、ラベルは1つのIssueに複数紐付けられます。
Issueに担当者を割り当てる機能です。1つのIssueに対して1人アサインすることができ、途中で付け替えも可能です。Issueの一覧画面で各開発者の抱えているタスク量がわかります。それを参照しながらIssueの割り当てを考えることで効率的にプロジェクトを進めることができます。
プロジェクトマネジメントにおいて重要な要素の一つがスケジュール管理です。Milestone機能では期日を設定でき、その上にIssueを紐付けることでスケジュール管理を実現しています。こちらもIssueの一覧画面で各Milestoneがどの程度進捗しているのかを確認できます。
GitHubを使うにはアカウントの作成をする必要があります。
GitHubの公式Webページにアクセスし、ユーザー名、メールアドレス、パスワードを入力して「Sign up for GitHub」のボタンをクリックします。
遷移先のページでプランを選択します。有償版では非公開のリポジトリを持つことができ、価格が上がるに連れて持つことができる非公開リポジトリの数が増加します。非公開リポジトリを保つ必要がない場合は無償版を選択し「Finish sign up」を押しましょう。
入力したメールアドレス宛に確認メールが送信されます。メール内にある「Verify email address」をクリックすると確認完了となり、登録完了メールが届きます。これでアカウント作成の完了です。
ここでは、GitHubの基本の使い方を説明していきます。
GitHubの管理画面より「New Repository」ボタンをクリックし、遷移した画面でRepository nameと任意でDescriptionを入力します。
さらに有料会員であればリポジトリの公開設定をします。リポジトリの中にREADMEファイルを含めたい場合は「Initialize this repository with a README」にチェックを入れましょう。
上記を入力しCreate Repositoryボタンを入力すれば作成は完了です。
※READMEファイルとはソフトウェアやアプリケーションの説明書を表すファイルで、使用方法や条件、問い合わせ先などを記載します。
はじめに下記コマンドを入力しローカル環境にリポジトリを作成します。
$ mkdir “任意のディレクトリ名”
$ cd “作成したディレクトリ名”
$ git init
リポジトリを作成後、下記コマンドを入力しローカルファイルをGitのインデックスに追加します。
$ git add “追加したいファイル名”
インデックスとは、ローカルリポジトリにファイルの変更点を格納することです。
次に下記コマンドを入力しインデックスに追加されたファイルをコミットします。
$ git commit
コミットとは、ローカルリポジトリに作成したファイルを保存することです。
インデックスもローカルリポジトリに格納するという点では同じですが、コミットではファイルの変更点と一緒にファイルも格納します。コミットは時系列に沿って実行されるため、コミットを遡ることで過去の編集履歴を参照できます。
機能の追加を実装する際など、細かくコミットを実行することで不具合があった際どの編集点が問題なのかの切り分けが容易です。また、コミットを実行する際はコミットメッセージの入力が必須です。コミットメッセージとは編集点の概要や編集の理由などを記載することで共同編集者に理解を促すものです。
これでローカルリポジトリにファイルを追加できました。
次に「git push origin master」を入力し、ローカルリポジトリの変更をGitHubサーバー上にあるリモートリポジトリに反映します。
入力後GitHubのユーザー名とパスワードを求められるため入力すると反映完了です。
その他GitHubでよく用いられる単語を整理します。
リモートリポジトリを複製し、ローカル環境にダウンロードすることです。ソースコードなどのファイルだけでなく編集履歴も複製されるためクローンを実行した時点までのリモートリポジトリの編集履歴をすべて参照できます。
GitHubのサーバー上でリポジトリを複製することです。
編集履歴を取り込むことです。
複数の共同開発者が同じ箇所を編集している状態です。マージする際どの編集を反映すればよいのかわかりません。GitHubはどの編集が有用かの判断はできないためエラーを吐きます。開発者がエラーを確認しどの編集を反映するのかを議論する必要があります。
リモートリポジトリにローカルのリポジトリを反映させることです。
ローカル環境にリモートリポジトリをダウンロードすることです。クローンとは異なり、ローカルリポジトリとの差分のみをダウンロードします。
リモートリポジトリの更新履歴を確認することです。共同開発者が行った編集を確認しコンフリクトを起こさないよう、フェッチを行ってからソースコードの編集を行います。
GitHubを活用するためには、「ブランチ」について理解しておく必要があります。ブランチとは、編集履歴を分岐して保存していくことです。
共同開発を行う場合、同時に複数人がソースコードを編集する場合があります。それぞれの編集が他の編集に鑑賞されないようにそれぞれの編集履歴を切り出せます。
また作業単位で編集履歴を分岐することでエラーが発生した際の特定スピードを上げられます。
ブランチは主に2つに分類されます。
リリースをいつでも行えるように保守しておくブランチです。トピックブランチの分岐元として使用するため統合ブランチは基本的に分岐編集用には利用しません。
機能の追加やバグ修正がある際編集を行うブランチです。トピックごとに分岐させ、編集が完了すれば統合ブランチに取り込みます。
$ git branch “任意のブランチ名”
$ git checkout “移動したいブランチ”
基本的にマージはmasterブランチに対して行います。
一番始めにコミットした際に作成されるブランチです。マージを行う際はmasterブランチに移動した状態で下記コマンドを入力します。
$ git marge “マージしたいブランチ名”
成功すれば、ブランチの変更内容がmasterブランチに反映されます。
このようにmasterブランチを保守しながら機能追加など課題をきっかけとしてブランチを作成し、ソフトウェアを編集していくことで、リリースバージョンを保持しながら開発を行えます。
GitHubはバージョン管理ツールであるGitのGUIクライアントです。無料で使える上、操作性にも優れているため世界中で広く利用されています。
GitHubには効率的にコードレビューを行うための機能であるプルリクエストやプロジェクト、ソースコードの課題を管理するための機能であるIssueなどが搭載されており複数人でシステム開発を行うチームに有用です。
また、ブランチという機能を使うことでソフトウェアのリリースバージョンを安全に保守しながら追加機能や課題ごとに開発を行うことができます。
共同開発を行う際は、ぜひ活用するようにしましょう。
WEBでのお問い合わせはこちら