みなさんこんにちは! 現在、東京大学工学部に在籍している、さとうじょうゆです!
この記事では「XcodeでのGitHubの使い方」を何処よりもわかりやすく、丁寧に、知識のない方にも全く問題のないように説明します
意外とチーム開発の流れを簡潔にまとめている記事が少ないと思ったので、この機会にまとめておくことにしました
この機会にチーム開発をマスターしよう!
それでは早速、プロジェクトを作成するところからスタート!
Xcodeプロジェクトの作成
- 代表者が、Xcodeで新しいプロジェクトを作成します。
- プロジェクトの設定(プロジェクト名、Organizationの設定など)を行います。
GitHubリポジトリの作成
- 代表者が、GitHub上に新しいリポジトリを作成します。
- リポジトリの設定(プライベートまたはパブリック、ライセンス、README.mdの作成など)を行います。
Xcodeプロジェクトのリモートリポジトリへのプッシュ
- 代表者は、Xcodeプロジェクトにローカルでコミットします。
- 「Source Control」メニューから「Push」を選択し、GitHubのリモートリポジトリにプッシュします。
チームメンバーの招待
- 代表者は、GitHubのリポジトリ設定から、チームメンバーをコラボレーターとして招待します。
- 招待されたメンバーは、メールまたはGitHub上の通知から招待を受諾します。
ローカル環境へのクローン
- 各メンバーは、Xcodeで「Clone an existing project」を選択し、リポジトリをローカル環境にクローンします。
新しい作業用フォルダの作成
- 新しい機能を追加したり、問題を修正したりする前に、各メンバーはXcodeで新しい作業用フォルダを作成します。
- Xcodeの上部メニューから「Source Control」を選択し、「New Branch」をクリックします。
- 作業用フォルダの名前を入力し、「Create」をクリックします。
変更の実装
- メンバーは、自分に割り当てられたタスクに取り組み、Xcodeでコードを変更します。
- 変更が完了したら、変更内容を保存します。
- 変更内容を保存するには、以下の手順を実行します:
- Xcodeの左側にある「Source Control」をクリックします。
- 変更したファイルの横にあるチェックボックスをクリックして選択します。
- 画面下部の「Commit」欄に、変更内容を要約したメッセージを入力します。
- 「Commit」ボタンをクリックして、変更内容を保存します。
変更内容のアップロード
- メンバーは、Xcode内で変更内容をインターネット上の共有フォルダにアップロードします。
- アップロードするには、以下の手順を実行します:
- Xcodeの上部メニューから「Source Control」を選択し、「Push」をクリックします。
- アップロードする作業用フォルダを選択し、「Push」ボタンをクリックします。
変更内容の反映依頼の作成
- メンバーは、GitHub上で自分の作業用フォルダからメインフォルダへの反映依頼を作成します。
- 反映依頼を作成するには、以下の手順を実行します:
- GitHubのウェブサイトを開き、プロジェクトのページを開きます。
- 「Pull requests」タブをクリックし、「New pull request」ボタンをクリックします。
- 「base」のドロップダウンメニューからメインフォルダを選択し、「compare」のドロップダウンメニューから自分の作業用フォルダを選択します。
- 変更内容を確認し、タイトルと説明を入力します。
- 関連する問題の番号がある場合は、説明欄に「#問題番号」の形式で記載します。
- 「Create pull request」ボタンをクリックして、反映依頼を作成します。
変更内容の確認とフィードバック
- 他のメンバーや代表者は、反映依頼の内容を確認し、コメントやフィードバックを提供します。
- 確認する内容は以下の通りです:
- 変更内容が適切かどうか
- コードの品質や可読性
- 変更によって新たな問題が発生していないか
- 改善点や修正が必要な点
- フィードバックは、GitHub上の反映依頼ページのコメント欄に記入します。
- 必要に応じて、変更を依頼したメンバーはXcodeで指摘された点を修正し、再度変更内容をアップロードします。
変更内容の反映
- 確認が完了し、反映依頼が承認されたら、代表者または反映権限を持つメンバーが変更内容を反映します。
- 反映するには、以下の手順を実行します:
- GitHub上の反映依頼ページを開きます。
- 「Merge pull request」ボタンをクリックします。
- 反映内容を要約したメッセージを入力し、「Confirm merge」ボタンをクリックします。
- 反映が完了すると、インターネット上の共有フォルダのメインフォルダが更新されます。
自分のパソコンのメインフォルダの更新
- 他のメンバーは、Xcodeで自分のパソコンのメインフォルダを最新の状態に更新します。
- 更新するには、以下の手順を実行します:
- Xcodeの上部メニューから「Source Control」を選択し、「Pull」をクリックします。
- インターネット上の共有フォルダから最新の変更内容を取得し、自分のパソコンのメインフォルダに反映します。
次のタスクへ
- 次のタスクに取り組む際は、最新のメインフォルダから新しい作業用フォルダを作成し、同じ流れを繰り返します。
- 新しい作業用フォルダを作成するには、以下の手順を実行します:
- Xcodeの上部メニューから「Source Control」を選択し、「New Branch」をクリックします。
- 作業用フォルダの名前を入力し、「Create」をクリックします。
- 新しい作業用フォルダができたら、そこで次のタスクに取り組みます。
まとめ
この流れは、GitHubとXcodeを使ったiOSアプリのチーム開発に特化したものです。Xcodeの「Source Control」機能を活用することで、Gitの操作をGUIで行うことができ、よりスムーズにチーム開発を進められます。
ただし、コンフリクトの解決やコミュニケーションの重要性は、通常のGitを使った開発と同様です。チームメンバー間で密にコミュニケーションを取り、定期的なミーティングを行いながら、開発を進めていくことが大切です。
Xcodeを使わない場合のGitHubの使い方
GitHubを使用したチーム開発の一般的な流れは以下の通りです。
プロジェクトの共有フォルダを作る
- チームの代表者が、GitHub上に新しいプロジェクトの共有フォルダを作ります。
- この共有フォルダのことを、「リポジトリ」と呼びます。
- 共有フォルダを作るときに、以下の設定を行います:
- 公開範囲の設定
- 共有フォルダを、チームメンバーだけが見られるようにするか、インターネット上で公開するかを決めます。
- チームメンバーだけが見られるようにする場合は「プライベート」、インターネット上で公開する場合は「パブリック」を選びます。
- 利用規約の選択
- 共有フォルダを使うときのルールを決めます。
- このルールのことを「ライセンス」と呼びます。
- GitHub上で用意されているライセンスの中から、プロジェクトに適したものを選びます。
- 説明文の作成
- 共有フォルダの説明文を作ります。
- この説明文のことを「README.md」と呼びます。
- 説明文には、プロジェクトの目的や使い方などを書きます。
- 公開範囲の設定
- これらの設定を行うことで、プロジェクトの共有フォルダが作成されます。
- 共有フォルダができたら、チームメンバーを招待して、一緒に作業ができるようにします。
- 共有フォルダを作ることで、チームメンバー全員が同じファイルを使って作業できるようになります。
- また、共有フォルダにはプロジェクトの履歴が記録されるため、いつ、誰が、どんな変更を加えたかを確認することができます。
このように、チーム開発を始める前に、代表者がGitHub上に新しいプロジェクトの共有フォルダを作ります。共有フォルダを作るときは、公開範囲や利用規約、説明文などの設定を行います。共有フォルダができたら、チームメンバーを招待して、一緒に作業ができるようにします。
チームメンバーの招待
- 共有フォルダを作ったら、代表者はチームメンバーを招待して、一緒に作業ができるようにします。
- 招待するには、以下の手順を行います:
- GitHub上で共有フォルダのページを開きます。
- ページ上部にある「Settings」(設定)をクリックします。
- 左側のメニューから「Collaborators」(協力者)を選びます。
- 「Add people」(人を追加)をクリックします。
- 招待するメンバーのGitHubアカウント名またはメールアドレスを入力します。
- 「Add」(追加)をクリックして、招待を送ります。
- 招待されたメンバーは、以下の方法で招待を受け取ります:
- GitHubから招待メールが届きます。
- GitHub上で通知が表示されます。
- 招待を受け取ったメンバーは、以下の手順で招待を受諾します:
- 招待メールまたはGitHub上の通知から、招待ページを開きます。
- 「Accept invitation」(招待を受諾)をクリックします。
- これで、そのメンバーも共有フォルダにアクセスできるようになります。
- 招待を受諾したメンバーは、共有フォルダを自分のパソコンに複製(クローン)して、作業を始めることができます。
- 複製した共有フォルダに変更を加えて、元の共有フォルダに反映させることで、チーム全体で作業を進めていきます。
- メンバー全員が招待を受諾したら、いよいよチーム開発がスタートします。
- メンバー同士で連絡を取り合い、役割分担をしながら、プロジェクトを進めていきましょう。
このように、代表者は共有フォルダの設定ページから、チームメンバーを招待します。招待されたメンバーは、メールまたはGitHub上の通知から招待を受け取り、受諾します。全員が招待を受諾したら、チーム開発がスタートします。メンバーは共有フォルダを自分のパソコンに複製して、作業を進めていきます。
ローカル環境へのクローン
- チームの代表者がGitHub上に作成した共有のフォルダを、各メンバーが自分のパソコンに複製します。
- 複製するには、次の手順を実行します:
- パソコンで、プロジェクトを保存したいフォルダに移動します。
- コマンドプロンプト(Windowsの場合)またはターミナル(MacやLinuxの場合)を開きます。
- 以下のコマンドを入力し、Enterキーを押します。
- git clone https://github.com/代表者のユーザー名/共有フォルダの名前.git
- 共有フォルダの複製が、自分のパソコンに作成されます。
- この作業により、GitHub上の共有フォルダと同じ内容のフォルダが自分のパソコンに作成されます。
- 各メンバーは、自分のパソコンに複製したフォルダ内でファイルの編集や追加を行い、変更をGitHubの共有フォルダに反映させることができます。
これにより、チームメンバー全員が同じファイルを共有し、それぞれが自分のパソコンで作業を進められるようになります。
ブランチの作成
- 新しい機能を追加したり、問題を修正したりする前に、各メンバーは「作業用の別フォルダ」を作成します。
- この「作業用の別フォルダ」を作成することで、元のフォルダ(メインフォルダ)に影響を与えずに作業を進められます。
- 「作業用の別フォルダ」を作成するには、次の手順を実行します:
- コマンドプロンプト(Windowsの場合)またはターミナル(MacやLinuxの場合)を開きます。
- プロジェクトのフォルダに移動します。
- 以下のコマンドを入力し、Enterキーを押します。
- git checkout -b 新しい機能や修正の内容を表す名前
- 例えば、新しいログイン機能を追加する場合は、以下のようなコマンドを入力します。
- git checkout -b ログイン機能の追加
- これで、「作業用の別フォルダ」が作成され、そのフォルダに自動的に切り替わります。
- 「作業用の別フォルダ」内で作業を進め、変更が完了したら、その変更をメインフォルダに反映させるための手順を踏みます。
- 「作業用の別フォルダ」を使うことで、各メンバーが同時に異なる機能や修正に取り組めるようになり、作業の独立性が確保されます。
このように、「作業用の別フォルダ」を作成することで、メインフォルダに影響を与えずに新しい機能の追加や問題の修正に取り組むことができます。
変更の実装
- 各メンバーは、自分に割り当てられた仕事に取り組み、必要なファイルの変更や追加を行います。
- ファイルの変更が完了したら、その変更を「作業用の別フォルダ」に保存します。保存する際は、以下の2つのステップを実行します: ステップ1:変更したファイルを「変更リスト」に追加する
- コマンドプロンプト(Windowsの場合)またはターミナル(MacやLinuxの場合)を開きます。
- プロジェクトのフォルダに移動します。
- 以下のコマンドを入力し、Enterキーを押します。
- git add .
- これにより、変更したすべてのファイルが「変更リスト」に追加されます。
- ステップ2:「変更リスト」の内容を保存する
- 「変更リスト」に追加したファイルを保存するには、以下のコマンドを入力し、Enterキーを押します。
- git commit -m “変更内容を簡潔に説明するメッセージ”
- 例えば、新しいログイン機能を追加した場合は、以下のようなコマンドを入力します。
- git commit -m “ログイン機能を追加”
- これで、変更内容が「作業用の別フォルダ」に保存されます。
- 変更内容を保存する際は、わかりやすいメッセージを付けることが重要です。メッセージは、他のメンバーが変更内容を理解しやすいように、簡潔で明確なものを心がけましょう。
このように、ファイルの変更が完了したら、その変更を「作業用の別フォルダ」に保存します。保存する際は、変更したファイルを「変更リスト」に追加し、わかりやすいメッセージを付けて保存します。
リモートへのプッシュ
- 各メンバーは、自分の「作業用の別フォルダ」に保存した変更内容を、GitHub上の共有フォルダに送信します。
- 変更内容を送信するには、以下の手順を実行します:
- コマンドプロンプト(Windowsの場合)またはターミナル(MacやLinuxの場合)を開きます。
- プロジェクトのフォルダに移動します。
- 以下のコマンドを入力し、Enterキーを押します。
- git push origin 作業用の別フォルダ名
- 例えば、「ログイン機能の追加」という名前の「作業用の別フォルダ」の変更内容を送信する場合は、以下のようなコマンドを入力します。
- git push origin ログイン機能の追加
- GitHubのユーザー名とパスワードを入力し、認証を完了します。
- これで、自分の「作業用の別フォルダ」の変更内容がGitHub上の共有フォルダに送信されます。
- 変更内容を送信することで、他のメンバーがその変更を確認し、必要に応じてフィードバックを提供できるようになります。
- また、変更内容が送信された後は、他のメンバーがその変更をそれぞれの「作業用の別フォルダ」に取り込むことができます。
このように、自分の「作業用の別フォルダ」に保存した変更内容を、GitHub上の共有フォルダに送信することを「リモートへのプッシュ」と呼びます。これにより、他のメンバーがその変更を確認し、フィードバックを提供できるようになります。
プルリクエストの作成
- 各メンバーは、自分の「作業用の別フォルダ」の変更内容を、メインフォルダにマージ(統合)してもらうように依頼します。この依頼を「プルリクエスト」と呼びます。
- プルリクエストを作成するには、以下の手順を実行します:
- GitHubにログインし、プロジェクトのページを開きます。
- 画面上部にある「Pull requests」タブをクリックします。
- 「New pull request」ボタンをクリックします。
- 「base:」のドロップダウンメニューから、メインフォルダを選択します(通常は「master」または「main」)。
- 「compare:」のドロップダウンメニューから、自分の「作業用の別フォルダ」を選択します。
- 変更内容を確認し、プルリクエストのタイトルと説明を入力します。
- タイトルは、変更内容を簡潔に表すものにします。
- 説明には、変更内容の詳細や、関連する問題(Issue)の番号を含めます。
- 「Create pull request」ボタンをクリックして、プルリクエストを作成します。
- プルリクエストを作成することで、他のメンバーや代表者に変更内容を確認してもらい、フィードバックをもらうことができます。
- プルリクエストには、変更内容の説明や関連する問題の番号を含めることが重要です。これにより、他のメンバーが変更内容を理解しやすくなり、レビューがスムーズに進みます。
このように、自分の「作業用の別フォルダ」の変更内容をメインフォルダにマージしてもらうために、GitHubでプルリクエストを作成します。プルリクエストには、変更内容の説明や関連する問題の番号を含めることで、他のメンバーがレビューしやすくなります。
コードレビュー
- プルリクエストが作成されると、他のメンバーや代表者は変更内容を確認し、改善点やアドバイスを提供します。この作業を「コードレビュー」と呼びます。
- コードレビューの手順は以下の通りです:
- 他のメンバーや代表者は、GitHubのプルリクエストのページを開きます。
- 変更内容を確認し、改善点や問題点があれば、コメントを残します。
- コメントは、特定の行や部分に対して行うことができます。
- コメントには、改善案や問題点の指摘、質問などを含めます。
- プルリクエストを作成したメンバーは、コメントを確認し、必要に応じて変更内容を修正します。
- 修正が完了したら、以下の手順で修正内容を「作業用の別フォルダ」に反映します:
- コマンドプロンプト(Windowsの場合)またはターミナル(MacやLinuxの場合)を開きます。
- プロジェクトのフォルダに移動します。
- 以下のコマンドを入力し、Enterキーを押します。
git add .
git commit -m “コードレビューに基づく修正”
git push origin 作業用の別フォルダ名
- GitHubのプルリクエストのページで、修正内容が反映されていることを確認します。
- 必要に応じて、再度コードレビューを行い、変更内容を改善します。
- コードレビューは、コードの品質を向上させ、問題点を早期に発見するために重要な作業です。
- コードレビューでは、改善点や問題点を指摘するだけでなく、良い点も伝えることが大切です。これにより、メンバーのモチベーションを高め、より良いコードを書くことができます。
このように、プルリクエストが作成されると、他のメンバーや代表者がコードレビューを行います。コードレビューでは、改善点やアドバイスを提供し、必要に応じて修正を行います。これにより、コードの品質を向上させ、問題点を早期に発見することができます。
マージ
- コードレビューが完了し、変更内容に問題がないことが確認されたら、「作業用の別フォルダ」の内容をメインフォルダに統合します。この作業を「マージ」と呼びます。
- マージは、代表者または特定のメンバーが行います。
- マージの手順は以下の通りです:
- GitHubのプルリクエストのページを開きます。
- コードレビューが完了し、変更内容に問題がないことを確認します。
- 「Merge pull request」ボタンをクリックします。
- マージのコメントを入力し、「Confirm merge」ボタンをクリックします。
- これで、「作業用の別フォルダ」の内容がメインフォルダに統合されます。
- マージが完了すると、GitHub上のメインフォルダが更新され、「作業用の別フォルダ」の変更内容が反映されます。
- マージ後は、他のメンバーがそれぞれのパソコンのメインフォルダを最新の状態に更新する必要があります。
- マージが完了した「作業用の別フォルダ」は、通常は削除します。これにより、プロジェクトの管理がシンプルになります。
- 「作業用の別フォルダ」を削除するには、以下の手順を実行します:
- GitHubのプロジェクトのページを開きます。
- 「Branches」タブをクリックします。
- マージが完了した「作業用の別フォルダ」を見つけ、横にあるゴミ箱アイコンをクリックします。
- 確認ダイアログで「Delete branch」ボタンをクリックします。
このように、コードレビューが完了し、変更内容に問題がないことが確認されたら、「作業用の別フォルダ」の内容をメインフォルダに統合します。この作業を「マージ」と呼び、代表者または特定のメンバーが行います。マージ後は、他のメンバーがそれぞれのパソコンのメインフォルダを最新の状態に更新し、不要な「作業用の別フォルダ」を削除します。
ローカル環境の同期
- マージが完了し、GitHub上のメインフォルダが更新されたら、他のメンバーはそれぞれのパソコンのメインフォルダを最新の状態に更新します。この作業を「ローカル環境の同期」と呼びます。
- ローカル環境の同期の手順は以下の通りです:
- コマンドプロンプト(Windowsの場合)またはターミナル(MacやLinuxの場合)を開きます。
- プロジェクトのフォルダに移動します。
- 以下のコマンドを入力し、Enterキーを押して、メインフォルダに切り替えます。
- git checkout main
- 次に、以下のコマンドを入力し、Enterキーを押して、GitHub上の最新の変更内容をパソコンのメインフォルダに取り込みます。
- git pull origin main
- これで、パソコンのメインフォルダが最新の状態に更新されます。
- ローカル環境の同期を行うことで、全てのメンバーが最新の変更内容を共有できます。
- 他のメンバーの変更内容が反映された最新のメインフォルダを使って、次の作業を始めることができます。
- ローカル環境の同期は、マージが完了するたびに行います。
- 定期的にローカル環境の同期を行うことで、他のメンバーの変更内容を確実に取り込み、コンフリクト(変更内容の競合)を防ぐことができます。
このように、マージが完了し、GitHub上のメインフォルダが更新されたら、他のメンバーはそれぞれのパソコンのメインフォルダを最新の状態に更新します。この作業を「ローカル環境の同期」と呼び、コマンドプロンプトまたはターミナルを使って行います。ローカル環境の同期を定期的に行うことで、全てのメンバーが最新の変更内容を共有し、コンフリクトを防ぐことができます。
次のタスクへ
- 一つのタスクが完了し、変更内容がメインフォルダに統合されたら、次のタスクに取り組みます。
- 次のタスクを始める前に、以下の手順で新しい「作業用の別フォルダ」を作成します:
- コマンドプロンプト(Windowsの場合)またはターミナル(MacやLinuxの場合)を開きます。
- プロジェクトのフォルダに移動します。
- 以下のコマンドを入力し、Enterキーを押して、最新の状態のメインフォルダに切り替えます。
- git checkout main
- 次に、以下のコマンドを入力し、Enterキーを押して、新しい「作業用の別フォルダ」を作成します。
- git checkout -b 新しいタスクの名前
- 例えば、「パスワードのリセット機能の追加」というタスクに取り組む場合は、以下のようなコマンドを入力します。
- git checkout -b パスワードのリセット機能の追加
- これで、新しい「作業用の別フォルダ」が作成され、そのフォルダに切り替わります。
- 新しい「作業用の別フォルダ」を作成したら、以下の流れでタスクを進めます:
- 担当するファイルを変更または追加します。
- 変更内容を「作業用の別フォルダ」に保存します。
- 変更内容をGitHub上の共有フォルダに送信します。
- GitHub上でプルリクエストを作成します。
- 他のメンバーや代表者がコードレビューを行い、フィードバックを提供します。
- 必要に応じて変更内容を修正し、再度送信します。
- コードレビューが完了したら、変更内容をメインフォルダに統合します。
- 他のメンバーがそれぞれのパソコンのメインフォルダを最新の状態に更新します。
- この流れを繰り返すことで、プロジェクトを効率的に進めることができます。
- 新しいタスクごとに新しい「作業用の別フォルダ」を作成することで、各タスクの変更内容を独立して管理できます。
このように、一つのタスクが完了したら、次のタスクに取り組みます。次のタスクを始める前に、最新の状態のメインフォルダから新しい「作業用の別フォルダ」を作成します。そして、新しい「作業用の別フォルダ」で作業を行い、同じ流れでタスクを進めていきます。この流れを繰り返すことで、プロジェクトを効率的に進めることができます。
注意点
この記事で説明した流れは、一般的なチーム開発の進め方ですが、チームによって少しずつ違いがある場合があります。また、作業中に問題が発生することもあります。
問題の一つに、「コンフリクト」と呼ばれるものがあります。これは、複数のメンバーが同じファイルの同じ部分を同時に変更したときに起こります。この問題が発生した場合は、チームで話し合って解決方法を決める必要があります。
スムーズにチーム開発を進めるためには、以下の点に注意しましょう:
- こまめに連絡を取り合う
- メンバー同士で頻繁に連絡を取り合い、お互いの進捗状況や問題点を共有します。
- 連絡を取り合うことで、問題の早期発見と解決につながります。
- 定期的に会議を行う
- 定期的にチームの会議を開き、進捗状況の確認や問題の解決、今後の計画について話し合います。
- 会議では、各メンバーの意見を尊重し、建設的な議論を行うことが大切です。
- 決まったルールを守る
- チームで決めた開発のルールや手順を守ることで、ミスや問題の発生を減らすことができます。
- ルールを守ることで、メンバー同士の信頼関係も深まります。
- 困ったときは助け合う
- 開発中に問題にぶつかったら、一人で抱え込まずに、チームメンバーに相談しましょう。
- お互いに助け合うことで、問題をスムーズに解決できます。
このように、チーム開発では、コミュニケーションを大切にし、定期的に会議を行い、決まったルールを守り、困ったときは助け合うことが重要です。これらのポイントを意識してチーム開発を進めることで、スムーズにプロジェクトを進めることができます。
東京大学工学部B2。AIに興味があり、AI技術を活かした起業を目指して奮闘中。スマホアプリも作ってたりします。
コメント