GitHubを使う

アプリを開発しているとファイル(プログラムとか画面デザインとか画像とか色々)の管理が大変になってきます。

最初はいいのですが、バージョンアップを重ねたり、開発に関わる人が増えたりすると、どのファイルが最新で、どのプログラムに何の機能を追加したのか分からなくなったりします。

そこで、古くから『ソースコード管理システム』というものが使われてきました。ファイルのバージョン管理や共有機能、排他機能などを搭載し、複雑なプログラム開発を支えています。

GitHubとは?

GitHubは最近流行りのソースコード管理システムです。Gitというソースコード管理システムをオンラインで管理してくれます。

多くの人で1つのプロジェクトを混乱なく作り上げることが出来ます。

(運用に失敗すると混乱することもあります)

ん?Gitってなんだ?そうですね、まずはGitです。

Gitとは?

Gitとは、ソースコード管理システムの一種です。変更したファイルの保存(Commit)や変更前への復元などが出来ます。

機能を追加しようとしたらバグを入れ込んでしまったとか、無意識のうちに関係ない部分を変更して壊してしまったとか、そのような『ソースコード修正時の事故』を防ぐことが出来ます。

改めて、GitHubとは?

それぞれのMacやPCで管理されているGitをオンラインでまとめて管理することが出来るWebサービスです。

複数の人が離れた場所にいても1つのアプリやシステムの開発を行えます。リモートワークやクラウドソーシングが活発な現代の開発では欠かせないサービスとなっています。

コラム:本当に欠かせないサービスなのか?
本当のことを言えば、一人でアプリを作ってキチンとソースコードを管理できていればGitもGitHubも使わずにアプリ開発は出来ます。ジオグラフィカというアプリはiPhone版とAndroid版でそれぞれ5万行程度のプログラムを書きましたが、GitもGitHubも使っていません。コミットとか地味に面倒ですし。

ただ、チームでの開発には必須ですし、個人での開発でも使っていれば楽だったかも知れません。開発者の一般常識としてソースコード管理システムは使えるようになってください。

XcodeにはGit、GitHubの連携機能がある

これまでのレッスンでたくさんのプロジェクトを作ってきましたが、実は全てGitを使うように設定していました。

新規プロジェクトの保存画面で『Create Git repository on my Mac』という項目にチェックが入っているとGitがプロジェクトを管理してくれます。

Xcodeのメニューにも『Source Control』という項目があり、そこからファイルのコミットなどを行えます。

更にGitHubとの連携機能もあるので、簡単に変更したファイルをGitHubのサーバーに送ることが出来ます。もし開発用の機体が壊れてもソースファイルを失わずに済みます。

用語解説

コミット

編集したソースコードの内容を確定(リポジトリに保存)する事をコミットといいます。どういう部分を変えたのか、必ずコメントを残すことで、あとで何を何の目的で変更したのか確認することが出来ます。

リポジトリ

ソースコードを保存しておく場所の事です。ローカルリポジトリとリモートリポジトリの2種類が存在します。

ローカルリポジトリ

自分のパソコン(Mac)に存在するリポジトリです。コミットしても、プッシュしなければ他の人のソースコードに影響を与えることはありません。

リモートリポジトリ

GitHubなど、自分のパソコンではないサーバーに存在するリポジトリです。ローカルリポジトリでコミットした内容をプッシュするとリモートリポジトリに反映されます。

プッシュ

自分がコミットした内容をリモートリポジトリに送ることをプッシュと言います。

プル

他人がリモートリポジトリにプッシュした内容をダウンロードして自分のローカルリポジトリに反映させることをプルといいます。

GitHubのアカウントを作る

自分のMacだけでGitを使うことも出来ますが、先のことを考えるとGitHubを使えたほうが便利なのでアカウントを作っておきましょう。

まずはGitHubのWebサイトにアクセスしてください。

https://github.com/

ユーザー名(IDの事です)、メールアドレス、新しいパスワードを入力し、『Sign up for GitHub』をクリックしてください。

最初は無料アカウントで構いません。

有料アカウントにすると月に$7かかります。

無料だとGitHubに登録したリモートリポジトリは世界に公開されますが、有料アカウントだと非公開を選択できます。

ソースコードを世界に公開したくないけどGitHubで管理したい時は月に$7が必要です(または、GitHubにはプッシュせずにローカルリモートリポジトリのみ使う)。

『Continue』ボタンを押すと次の画面に進みます。

開発レベル、使用目的などのチェックボックスを入れてください。

下のような画面になったら登録完了です。

登録したアドレスに『[GitHub] Please verify your email address.』というメールが来るので、文中にある長いURLのリンクをクリックしてメールアドレスの認証を行ってください。

ターミナルでGitの設定をする

アカウントを作ったら、Macのターミナルで下記コマンドを実行してください。『GitHubユーザー名』の部分は自分のユーザーIDを入力してください。

git config --global user.name "GitHubユーザー名"

次はメールアドレスの設定です。下記コマンドを実行してください。ダブルクォーテーションは要りません。『メール@アドレス.com』の部分にアドレスを入力してください。

git config --global user.email メール@アドレス.com

最後に下記コマンドで設定を確認して問題なければ完了です。

git config --list

XCcodeにGitHubのアカウントを登録する

Xcodeのメニューから『Preference』を選んでください。

設定の『Accounts』を選び、左下の『+』ボタンを押すとアカウントの種類を選ぶ画面になります。

GitHubを選んで『Continue』をクリックしてください。

GitHubに登録したユーザー名とパスワードを入力して『Sign In』をクリックしてください。

これでXcodeにGitHubのアカウントが設定されました。

リモートリポジトリを作ってプッシュする

リモートリポジトリを作って、ローカルリポジトリの内容をプッシュしてみましょう。無料アカウントの場合は内容が世界に向けて公開されるので、ソースコード中に秘密のAPI keyなどが入っている場合は注意してください。

Xcodeの左側にあるナビゲーションウィンドウの、『ソース・コントロール・ナビゲーター』ボタンをクリックして表示してください。

次に、青いフォルダアイコンを二本指でクリックしてメニューを表示させてください。

『Create “プロジェクト名” Remote on GitHub』をクリックしてください。

リモートリポジトリを作る画面になります。

Publicを選ぶと世界に公開され、誰でも内容を見ることが出来ます。他人に公開したくない場合はPrivateを選んでください(月に$7)。

プッシュの前にコミットしておいてください

ナビゲーション・ウインドウのファイル名の右に『M』と表示されているファイルは、編集後にコミットしていないファイルです。まずはローカルリポジトリにコミットしてください。

Xcodeのメニューの『Source Control』から『Commit』を選んでください。

変更されているファイルにチェックが付いています。

画面下部のコメント欄に変更内容を入力して、右下の『Commit』ボタンを押すとコミット(ローカルリポジトリへの保存)が出来ます。

ある程度コミットがまとまり、変更部分に問題が無くなったらプッシュしてみましょう。

Xcodeのメニューの『Source Control』から『Push』を選んでください。

次の画面で『Push』をクリックして、送信に成功すればGitHubのリモートリポジトリに保存されます。

GitHubからファイルをダウンロードする

ここまでで、自分のローカルリポジトリをリモートリポジトリに保存することが出来ました。

他人が公開しているリモートリポジトリをダウンロードして自分のパソコンの開発環境で開くことも出来ます。

まず、適当なリモートリポジトリを開いてください。

例↓
https://github.com/cleanAndBuild/sakubun

右にある『Clone or download』をクリックしてください。

ポップアップが表示されます。『Open in Xcode』をクリックすると、ファイルがダウンロードされて解凍まで自動で行われ、Xcodeが起動してプロジェクトファイルが読み込まれます。

コードサインが違っているとビルド出来ないので、エラーになっている場合はプロジェクトの『General』の『Signing』の『Team』を自分のものに変更してください。

GitHubへのプッシュや、GitHubからのプルはXcodeを使うととても簡単です。

SSH通信をする手順

XcodeからGitHubを使う場合はHTTPSでも通信できるため必須ではありませんが、SSH通信(暗号通信)をするための手順を解説しておきます。

SSHキーを作る

SSH通信には公開鍵と秘密鍵という、とても長いパスワードのようなものが必要です。それぞれは『id_rsa.pub(公開鍵)』とか『id_rsa(秘密鍵)』という名前のファイルとして生成されます。

下記コマンドを、メールアドレスの部分だけ書き換えてターミナルから実行してください。

ssh-keygen -t rsa -b 4096 -C "自分の@メールアドレス.jp"

すでにファイルがあると、下のようなメッセージが表示されます。

上書きしたくない場合はnを押して、違うファイル名で保存されるようにしてください。

Enter file in which to save the key (/Users/cleanbuild/.ssh/id_rsa):   
/Users/cleanbuild/.ssh/id_rsa already exists.
Overwrite (y/n)? n

上書きしたくない場合はnを押して、違うファイル名で保存されるようにしてください。

下のように、パスワードの入力を促されたら新しく決めたパスワードを2回入力してください。

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

全体としてはこんな感じになります。

ターミナルで下記コマンド(ファイル名の部分は各自変える)を実行してください。

pbcopy < ~/.ssh/id_rsa.pub  (『~/.ssh/id_rsa.pub』の部分は公開鍵のファイル名です)

これでクリップボードに公開鍵の内容がコピーされました。

GitHubに公開鍵を登録する

次は、生成してクリップボードにコピーした公開鍵をGitHubに登録します。

GitHubにアクセスして、右上にある自分のアイコンをクリックして『Settings』を選んでください。

https://github.com/

左のメニューの『SSH and GPG keys』を選んで、右上の『New SSH key』をクリックしてください。

タイトルはアクセスするMacの名前など、自分が識別できる名前を入力してください。

Keyの部分に先程クリップボードにコピーした公開鍵をペーストし、Add SSH Keyをクリックすれば登録完了です。

XcodeのGitHubアカウントでSSH通信の設定をする

Xcodeのメニューの『Xcode→Preferences…→Accounts』を開き、上で設定したGitHubのアカウントを選んでください。

下のような画面になります。

Clone usingをSSHにして、右にあるフォルダマークから、SSHキーを作るときに一緒に出来た秘密鍵のファイルを指定してください。

エラーが出なければこれで設定完了です。

 


戻る