クロの制作日記

クロの制作日記

田舎の大学生がUnityとか機械学習関連の制作物をひたすらアップします。ブログで紹介したコード一覧https://github.com/kuroshum/blog_code

0から始めるGitHub入門 第一回 (概要とアカウント登録)

最近、プログラマー界隈またはそれ以外でも「GitHub」という単語を見かけることが多いのではないかと思います。例えば、Microsoftが買収しただとか、日経が「GitHub」のことを「設計図共有サイト」として記事に記載しただとか、直近だとプライベートリポジトリが無料化されたとか。
japan.zdnet.com
www.itmedia.co.jp
gigazine.net

そんなこんなで色々話題になっている「GitHub」ですが、実際にどんなものなのかを知らない、または調べてみたけどよく理解できなかった人が多いかと思います(自分も最初はよくわからなくて放置してました...)。なので、この記事では「GitHub」の使い方をタイトル通り、「0から」でも理解できるように説明していきます。なので、最初の方は専門用語(リポジトリとか)をあまり使わずに頑張って説明します。


今回の記事作成する際に参考にした本です。


GitHub実践入門──Pull Requestによる開発の変革 WEB+DB PRESS plus

GitHub」入門への道

まずは「Git」

GitHub」を知るためには「Git」を知らないといけません。

え?同じじゃないの?と思うかもしれませんが違います。

「Git」はバージョン管理システムのひとつです。

f:id:kurora-shumpei:20190127184627p:plain
バージョン管理システムの概要(実際はもっと複雑)


このように、プログラムの変更点をバージョン管理システムが記録しており、バグが発生してどうしようもなくなった時などに、バグのないバージョンに戻すことができます。

他にも、新しい機能を実装したいときに、他の人の作業の邪魔にならないように、今のバージョンから分岐することで、他人に迷惑かけることなく自由に開発を進めることもできます。

この辺りのことは次回くらいに詳しく説明しますので、今はそういうものかといった理解でOKです。

これで「Git」はなんとなく理解できたかと思います。

では「GitHub」とは何なのでしょうか。

GitHub」とは?

GitHub」は

「Git」をWeb上でかつ、便利に使えるようにしよう!といったWebサービス

です。

「Git」をWeb上で使えることで、より一層プログラムを他人と共有できるようになり、複数人での開発や、プログラマ同士の交流が円滑に進めることができます。

f:id:kurora-shumpei:20190127184540p:plain
大体こんな感じ(実際はもっと複雑)

また、「GitHub」は「Git」をただ単にWeb上で使えるようにしたわけではなく、+αの要素を加えています。

その +α の要素が「GitHub」が人気の理由であり、「GitHub」を使うべき理由にもなっています。

その +α がどのようなものなかを説明していきます。

オープンソースにできる

これは人によっては短所として取れるかもしれませんが、「GitHub」上で管理してるプログラムはオープンな状態、つまり全世界に公開している、にすることができます。

f:id:kurora-shumpei:20190127010931p:plain
GitHubではユーザー同士が共有することができる
こうすることで、自分の開発したシステムを多くの人に使ってもらったり、そのシステムを一緒に開発してもらったりすることもできます。また、プログラマー同士なら、自分のGitHubのプログラムを見せることで、「私はこんなことをしていますよー」と自己紹介することも可能です。

最近は、自分(個人でも企業でも)の開発したシステムをオープンな状態にすることが流行っています(*個人の感想です)。そういったシステムの有名どころを集めたのが以下のリストです(こいつらは使いこなす必要はありませんが、一般常識として名前と概要くらいは知っていて損はないはず)。

  • Tensorflow
  • node
  • jQuary

ちなみに、ソースコードを公開しているシステムのことを、OSS(オープン・ソース・ソフトウェア)と呼びます。

また、ここからはプログラムのことをソースコードと呼ぶようにします。

Pull Request(プル・リクエスト)

できるだけ専門用語を使わず説明します!!と最初に言っておいて申し訳ないのですが、「GitHub」最大の特徴なのでこれだけは説明させてください...。

Pull Request(プル・リクエスト)とは何なのかというと、他人のソースコードに対して、自分が変更を加えたものを取り込んでくれませんか?と要求(リクエスト)することを言います。

f:id:kurora-shumpei:20190127190912p:plain
Pull Requestの概要

GitHub」では、ソースコードのどこを改良したのかという情報がわかりやすく確認できるようになっており、また、チャットの機能もあるので、改良点についての議論などを交わすこともできます。

f:id:kurora-shumpei:20190127194303p:plain
実際のPull Requestの画面

この機能のおかげで遠く離れた人と一緒に開発を進めることができます。

また、OSSならば有志が考え開発した機能を盛り込むこともできるので、そのシステムはどんどんブラシュアップされていくわけです。

入門への道のまとめ

これが大体の「GitHub」の概要になります。

重要なのは、

  • 「Git」を使ってバージョン管理を行うことができる

の3つでしょう。

この3つを理解しておけば「GitHub」に入門するための準備が整ったことになるでしょう。




GitHub」入門(登録)

ここからは、いよいよ「GitHub」の登録を始めていきましょう。

まずは「Git」(ふたたび)

先ほど説明した通り、「GitHub」は「Git」を便利に使うためのサービスです。

なので、「GitHub」に登録する前に、「Git」をパソコンにインストールする必要があります。

それぞれのOSごとのインストールの仕方を説明しようかと思いましたが、面倒くさい長くなってしまうので、サイトの紹介をしておきます。

GitHub」の登録

「Git」がインストールできたので、やっとですが「GitHub」に登録してみましょう。

アカウント情報を入力

以下のサイトにアクセスしてアカウントを作成していきましょう。

github.com

サイトを開くとこのような画面が表示されると思います。

f:id:kurora-shumpei:20190127214243p:plain
アカウント登録画面

この画像の赤い四角の箇所に

  • アカウントのユーザー名
  • 登録に使うメールアドレス
  • アカウントのパスワード

を入力しましょう。

登録してからでも変更はできますので、好きに決めてください。

入力が完了したら、「Sign up for GitHub」をクリックしましょう。

プランの選択

すると、アカウント登録のために、簡単なパズルを解かされます。

問題ないと判断されたら、プランの選択画面に移行するかと思います。

f:id:kurora-shumpei:20190127215137p:plain
Plan選択

ここでは有料か無料のプランの選択ができます。内容の違いとしては

無料

  • プライベートリポジトリに関しては共同編集者は3人まで

有料

  • 共同編集者も無制限
  • 色々な便利ツールの使用が可能

大体こんな感じです。

リポジトリというのは、「GitHub」で管理するプロジェクトのことだと取り敢えずは理解しておいてください。

まあよっぽどのことがない限りは無料プランで問題ないはずです。

余談

この記事の一番最初にも話題に上げましたが、つい最近までは、プライベートリポジトリ(全世界に公開しないリポジトリ)の使用は有料プランでしか許可されてませんでした。

Microsoftが買収してくれたおかげか分かりませんが、公開したくないものを公開せずに済むのは良いことですね。

Welcom to GitHub

あとはアンケートみたいなのを答える・「GitHub」からメールアドレスの登録しましょうっていうメールの登録ボタンを押せば、登録完了です。

SSH Keyと公開鍵の登録

あともう少しです。

GitHub」はWeb上でリポジトリ(「GitHub」上でのプロジェクト)を管理するので、「アクセス認証」ということをしなければなりません。

GitHub」ではアクセス認証はSSHを用いた公開鍵認証で行います。

SSHとか公開鍵って何ぞや?と思った方は以下のサイトを参考にしてください。
knowledge.sakura.ad.jp

基本的にその辺りのことはわかってなくても大丈夫ですので、ここから先の作業は機械になったつもりで進めていくと良いかもしれません。

SSH Keyの登録

まずは、PCの上で以下を実行してください。(Linux or Mac は端末、WindowsはGitBash)

ssh-keygen -t rsa -C "登録したメールアドレス"

"登録したメールアドレス"にはその名の通り、自分がアカウントに登録したメールアドレスを入力してください。

すると

(/Users/あなたのディレクトリ/.ssh/id_rsa): 

と出てくるので Enter を押しましょう。

次に

Enter passphrase (emty for no passphrase):
Enter same passphrase again : 

と出てくるので、自分がわかりやすい & 特定されにくいパスワードを入力しましょう。

確認用のためにもう一度入力してくれと言われているのでもう一度入力してください。

公開鍵の登録

これで最後です。

GitHub」のページの右上に自分のアカウントのロゴ(初期は勝手に登録されてる)があると思うので、それをクリックして、Settingをクリックしましょう。

f:id:kurora-shumpei:20190127231222p:plain
プロフィール画面

そしたら以下のような画面が表示されます。
f:id:kurora-shumpei:20190127232003p:plain

上の画像のように、左のタブから
①「SSH and GPG keys」をクリック
②「New SSH key」をクリック

次は以下のような画面が表示されます。
f:id:kurora-shumpei:20190127232324p:plain

公開鍵とそのタイトルを入力しろとのことです。

タイトルは何でも良いのですが、公開鍵は先ほど作ってもらったものを使用します。

$ cat ~/.ssh/id_rsa.pub
ssh-rsa <公開鍵の内容> 登録したメールアドレス

ssh-rsa <公開鍵の内容>」の部分を「Key」の箇所にコピペして、「Add SSH key」をクリック。

上手く登録できれば登録したメールアドレスにメールが来ます。

最後に、動作確認をしてみましょう。

ssh -T git@github.com

接続を続けますか?と英語で聞かれるので、「yes」と入力してください。

以下のように表示されればOKです。

Hi hirocastest! You're successfully authenticated, but GitHub does not provide shell access




さいごに

思ってたよりも長くなりましたが、これで「GitHub」で開発を進める準備ができました。

次回は、実際にリポジトリ(GitHub上でのプロジェクト)を作成して、コードの公開までをしていきます。

今回の記事作成する際に参考にした本です。


GitHub実践入門──Pull Requestによる開発の変革 WEB+DB PRESS plus

次回
kurora-shumpei.hatenablog.com