はじめに
Gitのリポジトリをどのように管理していますか?Gitは、Subversionなどの集中管理型のバージョン管理システムとは違い、分散管理型です。そのため、中央リポジトリを持つ必要がなく、各端末のリポジトリと相互にやりとりできます。しかしながら、実際に複数人で開発する場合には、どこかに共有リポジトリを設置する必要があります。社内共有サーバーでもいいのですが、セキュリティやバックアップなどいろいろな問題がついてまわります。
そういった問題を解消するためには、GitHubをはじめとするリポジトリホスティングサービスを利用するとよいでしょう。そうすれば、自らリポジトリサーバーを保守・管理する手間が省けますし、コスト的にも安上がりになることでしょう。まだ使ったことのない方は、ぜひ一度ためしてみることをおすすめします。
この記事では、GitHubの概要を説明した後で、実際にGitHubを使ってチュートリアルを行います。自分で体験することでわかることもありますので、ちょっとお時間を取ってやってみてください。
GitHubはどんなサービスなのか?
GitHub(ギットハブ)は、簡単に言うとGitのリポジトリをホスティングしてくれるサービスです。複数人でリポジトリを共有する際に役に立ちます。ただホスティングするだけでなく、プルリクエストやIssue機能、Wiki機能など開発をよりスムーズに進行するためのコミュニケーションツールとしての役割も果たしてくれます。つまり、GitHubはGitのコミュニケーション機能を強化してくれるサービスなのです。「Social Coding」をスローガンに掲げていることもあり、オープンソースソフトウェア(OSS)開発で活発に利用されています。
GitHubの料金体系
GitHubは、パブリックリポジトリ(オープンソース)での利用であれば、無料で使うことができます。もし、プライベートリポジトリが必要なら、有料プランに加入する必要があります。有料プランは、次のように個人と法人(チーム)で別々の価格設定になっています。
プラン | 個人 | 法人(チーム) |
---|---|---|
価格(月額) | 7$ | 9$ / ユーザー(最初の5ユーザーまでは25$) |
また、特殊なプランとして、自社のサーバーでGitHub自体をホスティングする「GitHub Enterprise」というものもあります。こちらの料金は別途問い合わせとなっています。
なお、すべてのプランで無制限にプライベートリポジトリを作成することが可能です。
まずはどんなリポジトリがあるか見てみよう
それでは、さっそくアカウント取得といきたいところですが、その前にどんなものか見てみたい方もいるでしょう。リポジトリ自体はアカウントがなくてもみられますので、ちょっとリポジトリを眺めてみましょう。まずは、GitHubのトップページから「Explore」をクリックします。
次に、画面上部の「Showcases」タブをクリックしましょう。タブの下に、すでにshowcaseが表示されていますが、一部のshowcaseだけです。
showcaseの一覧が表示されましたね。showcaseでは、リポジトリがいろいろなカテゴリに分類されています。自分の興味があるカテゴリをチェックしてみるとよいでしょう。
次に、「Integrations」を見てみましょう。画面上部のタブをクリックしてください。
Integrationsでは、GitHubと連携できる便利なツールやサービスが紹介されています。カテゴリ分けされている中から、あなたが使っているツールやサービスがないかチェックしてみましょう。もちろん、検索してもOKです。
最後に、「Trending」を見てみましょう。画面右上のタブをクリックしてください。
Trendingでは、今話題のリポジトリをリストアップしてくれます。中心となっている開発言語でフィルタリングすることができますので、自分の使っている言語のリポジトリを探してみてください。また、集計期間を、日・週・月の中から切り替えることもできます。
気になるリポジトリは見つかりましたか?次項で、リポジトリページの画面構成について説明します。お好きなリポジトリを選んでおいてください。
リポジトリページの機能について
ここでは、Dockerのリポジトリページを使って説明していきます。みなさんは自分のお好きなリポジトリを見ていただければ結構です。
Codeタブ
まず、リポジトリページを開くとCodeタブが表示されます。このタブでは、現在リポジトリで管理されているファイルが階層構造で表示されています。コミット数やブランチの数など、リポジトリの状態がひと目で分かりますね。
ファイルをクリックすると、ファイルの内容を言語ごとにカラーリングされた状態で確認することができます。単なるテキストよりも非常に見やすいですね。
Issueタブ
Issueタブは、掲示板のようなものです。議論したい話題や不具合の報告などを書き込んで、みんなで話し合う場になります。OSS開発では、英語で伝えないといけないのでちょっと敷居が高いですね。もちろん、日本語が使えないわけではありません。なお、リポジトリによっては無効になっていることもあります。
とはいえ、コードは全世界共通なので、意外となんとかなります。とあるOSSプロジェクトに参加したときには、Google翻訳でなんとか通じました。気が向いたら参加してみるとよいでしょう。
Pull requestsタブ
Pull requestsタブは、その名の通り、プルリクエストを一覧表示するタブです。見た目はIssueタブと似ていますが、機能的にはまったく別のものです。
後で詳しく説明しますが、プルリクエストはコミットをマージしてもらうように依頼することです。いくらオープンソースといえど、だれにでも無制限にコミットを許可してしまうと正常なリポジトリが維持できなくなります。
そのため、権限がないとリポジトリに変更を加えることはできないのです。通常はコミットからプルリクエストを作成して、権限を持っている人にマージしてもらうことになります。Issueタブ同様、掲示板の機能もあるので、コミットの疑問点を議論することも可能です。
Wikiタブ
Wikiタブでは、Markdown記法などを使って簡単なウェブページを作成できます。プロジェクトのロードマップを掲載したり、インストール方法を説明したり、などプロジェクトに関連する情報を記載するとよいでしょう。制限があるため、凝ったページにはできません。なお、Issueタブ同様、リポジトリによっては無効になっていることもあります。
Pulseタブ
Pulseタブでは、リポジトリの活動状況を把握することができます。最近のプルリクエストの数やIssueの数がひと目でわかるので、プロジェクトが“生きているのか”一目瞭然です。なお、24時間・3日・1週間・1ヶ月の中から表示を切り替えられます。
Graphsタブ
Graphsタブでは、コミットの数や追加・削除されたコードの量などをグラフで確認できます。Pulseタブ同様、リポジトリの活動状況を把握するために役立つことでしょう。
アカウントを取得してみよう
それでは、一通りリポジトリを見たところで、アカウントを取得してみましょう。メールアドレスさえあれば簡単に登録できますので、いっしょにやってみてください。まずは、トップページから登録を始めましょう。ユーザー名とメールアドレス、パスワードを入力するだけです。なお、ユーザー名は他のユーザーと重複できないため、ユニークなものにしましょう。
次の画面では、プランの選択をします。ここでは無料プラン(free)で登録するので、デフォルトのままで結構です。そのまま、「Continue」をクリックしましょう。もちろん、後から変更できますので、心配しなくても大丈夫です。
最後にアンケートを求められますが、面倒なのでスキップします。「skip this step」をクリックしましょう。気になる方は、回答してもOKです。
次の画面が表示されたら、アカウントの取得は完了です。と言いたいところですが、まだメールアドレスの認証が終わっていません。先ほど入力したメールアドレスに、認証のためのメールが届いているので、文中のリンクをクリックして認証してください。それが終わればこんどこそ完了です。
GitHubで新しいリポジトリを作る
それでは、アカウントも取得できたことなので、さっそくGitHubで新しいリポジトリを作ってみましょう。ヘッダーにある「New repository」をクリックしてください。
次の画面では、リポジトリの名前を入力します。ここでは、リポジトリ名を「tuto-repo」とします。それ以外はデフォルト値のままで構いませんので、「Create repository」をクリックしましょう。
無事リポジトリが作成されると、次のような画面が表示されます。簡単でしたね。
GitHubのリポジトリを使ってみよう
それでは、今しがた作ったリポジトリをGitから実際に使ってみましょう。Gitをコマンドライン(コンソール)から利用しますので、まだGitをインストールしていない方は、下記の公式サイトからインストールしておいてください。
リポジトリをクローンする
まず、GitHubのリポジトリをローカルマシンにクローン(コピー)する必要があります。それには、リポジトリのURLが必要なので、先ほどのリポジトリページからURLをコピーしておきましょう。
URLをコピーしたら、次のコマンドを使って、リポジトリをクローンします。リポジトリのURLは、適宜ご自分のものと置き換えてください。カレントフォルダにダウンロードされますので、事前に移動しておきます。
git clone https://github.com/TaroTanaka-1/tuto-repo.git
新しいファイルを作ってコミットする
これで、リポジトリをローカルにコピーすることができました。さっそく新しいファイルを作ってコミットしてみましょう。ここでは、次の内容のHTMLファイルを作成します。ファイル名は、「index.html」にしておきましょう。なお、ファイルは「tuto-repoフォルダ」内に作成してください。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Test Page</title>
</head>
<body>
<div>
<p>
はじめてのコミット
</p>
</div>
</body>
</html>
ファイルが作成できたら、次のコマンドを使ってコミットしましょう。ログインを求められた場合は、GitHubのアカウントを使ってログインしてください。なお、コミット前にGitにユーザー名とメールアドレスを設定しておきましょう。
cd tuto-repo
git add *
git commit -m はじめてのコミット
これで、ローカルのリポジトリにコミットできました。しかし、まだリモートリポジトリ(GitHub)にはコミットが反映されていません。次に、pushコマンドを使ってリモートに変更を反映させましょう。
git push origin master
これで、コミットがGitHubにも反映されました。GitHubがどうなっているか見てみましょう。先ほどのリポジトリページを見てください。
ちゃんとコミットが反映されていますね。ちょっと、コミットの内容を確認してみましょう。コミット数が表示されている部分をクリックします。
すると、先ほどのコミットが表示されるので、コミットタイトルをクリックします。
先ほどのコミットの内容が表示されましたね。このように、GitHubからすべてのコミットの内容を確認することができます。
ブランチを作ってコミットしてみる
基本的なコミットの方法がわかったので、次は新しいブランチを作ってそちらでコミットしてみましょう。まずは、ローカルで新しいブランチを作ります。次のコマンドを入力しましょう。ここでは、ブランチ名を「new-branch」とします。
git checkout -b new-branch
これで、ブランチの作成と切り替えが済みました。次に、先ほどのHTMLファイルを修正しましょう。ここでは、body内のpタグの内容を次のように変更します。
<p>
2回目のコミット
</p>
ファイルが修正できたら、先ほどと同じようにコミットしてみましょう。続けて、リモート(GitHub)への反映(push)も行います。コマンドは次の通りです。
git add *
git commit -m 2回目のコミット
git push origin new-branch
うまくできましたね。それでは、GitHubのリポジトリページを確認してみましょう。masterブランチが表示されたままなので、プルダウンから表示ブランチの切り替えを行いましょう。
先ほどのコミットが反映されていることが確認できますね。ついでに、ブランチの一覧も見てみましょう。ブランチ数が表示されている部分をクリックしてください。
続いて、「All branches」をクリックすると、リポジトリにあるすべてのブランチを確認できます。リポジトリにどのようなブランチがあるかが、すぐにわかりますね。
他のリポジトリをフォークしてプルリクエストを投げてみよう
それでは、GitHubの特徴的な機能のひとつである、フォークとプルリクエストをためしてみましょう。フォークとは、他の人のリポジトリを自分のリポジトリとしてコピーすることです。他の人のリポジトリには勝手にコミットできないので、フォークしたリポジトリにコミットした後で、プルリクエストを投げてフォーク元のオリジナルのリポジトリにマージ(反映)してもらうのです。
ここでは、チュートリアルの都合上ダミーリポジトリを使いますが、みなさんはご自分の気になるリポジトリでやってみてください。まずは、フォーク元のリポジトリページを開き、「Forkボタン」をクリックしてください。
すると、フォークしたリポジトリが自分のリポジトリとしてコピーされます。これで、リポジトリに自由に変更を加えられるようになりました。
それでは、リポジトリをローカルにクローンして、作業できるようにします。先ほどと同じようにリポジトリのURLをコピーして、次のコマンドを使います。
git clone https://github.com/TaroTanaka-1/dummy-repo.git
次に、ファイルに変更を加えてコミットしてみます。多くのリポジトリでは、機能の追加や変更、バグフィックスなどの際には、masterブランチから新しいブランチを切って、そのブランチでコミットしています。ですので、ここでは慣例に従い新しいブランチを作ってからコミットしています。
cd dummy-repo
git checkout -b new-branch
(ファイルに変更を加える)
git add *
git commit -m 2回目のコミット
git push origin new-branch
これで、プルリクエストを投げる準備が整いました。GitHubのリポジトリのページを確認してみます。すると、プルリクエストのためのボタンが表示されていますので、クリックしてみましょう。
そうすると、プルリクエストの画面が表示されます。コミットの内容を説明するメッセージを入力して「Create pull request」をクリックしましょう。
これで、プルリクエストを投げることができました。後は、プルリクエストが承認されてマージされるのを待つだけです。リポジトリによっては、数日待たなければいけないこともあります。
うまくマージされると、次のような表示に変わります。とはいえ、コミットの内容によってはリジェクト(拒否)されることもあります。たいていは、メッセージに理由が書かれているので、めげずにがんばりましょう。
フォーク元のリポジトリの変更を反映する
フォーク元のリポジトリは、プルリクエストなどがマージされ変更が加えられていきます。そうすると、フォークしたリポジトリの内容が古くなっていきますよね。そのため、定期的にフォーク元のリポジトリから変更を取り込む必要があるのです。
そのためには、まずフォーク元のリポジトリをリモートに登録します。それには、次のコマンドを使います。URLは、フォーク元のリポジトリページからコピーしてきましょう。
git remote add forked_repo https://github.com/TaroTanaka-2/dummy-repo.git
そうしてから、フォーク元のリポジトリの変更をローカルのリポジトリに反映させます。続けて、ローカルの変更をリモート(GitHubのフォークしたリポジトリ)に反映させれば完了です。次のコマンドを使って行います。
git pull forked_repo master
git push origin master
なお、2回目以降はリモートへの登録は不要です。定期的にpull&pushしてリポジトリの状態を最新に保ちましょう。
まとめ
GitHubの使い方がお分かりになりましたか?企業で使われる方は、有料プランを契約してプライベートリポジトリを使えるようにするとよいでしょう。個人の方は、ソースを公開するのに問題がなければ、無料のパブリックリポジトリでもよいと思います。また、現在ではGitHub以外にもさまざまなリポジトリホスティングサービスが存在します。GitHubにはない便利な機能を備えていることもありますので、ご自分の環境に合ったサービスを利用してみましょう。きっとあなたのプロジェクトの助けになってくれます。
リンクと資料
次に読むことをオススメ
学習サイト
社内サーバにリモートリポジトリを作るのも一つですが、「開発にまつわる面倒事」をこの際全部、tracpath(トラックパス)に任せてみませんか?
バージョン管理サービス・プロジェクト管理サービスの「tracpath(トラックパス)」では、
ユーザー5名、リポジトリ数3つまで、無料で利用可能です。
さっそく実務でも使って見ましょう。
自らも開発を行う会社が作ったからこそ、開発チームの「作る情熱」を支える、やるべきことに集中出来るサービスになっています。
エンタープライズ利用が前提のASPサービスなので、セキュリティも強固です。