「ハローワールド」プロジェクトは、コンピュータプログラミングの伝統的な初心者向けの練習です。新しい技術を学ぶ際のシンプルなスタート地点となります。それでは、GitHubの使用を始めてみましょう。
GitHubは、プロジェクトの管理と協力作業のためのプラットフォームです。HDDでのデータ損失や複数のPCの管理に関する心配は不要です。どこからでもプロジェクトを同期できます。最も重要なのは、GitHubが協力的かつ非同期的な作業プロセスを通じて、より良いソフトウェアの共同開発を可能にすることです。
このガイドでは GitHubの基本について学びます:リポジトリ、ブランチ、コミット、課題、取込み要求
これらを理解するだけで、開発プロセスを進めることができます。また、「ハローワールド」リポジトリを利用して、アイデア(例:jlord/hello-world のような機能リポジトリ)、素材、その他の一般的な事項を保存したり、他の人との議論内容(例:holman/feedback のような)も記録できます。
・インストールやプログラミングは不要
このガイドは GitHub.com を使用して進めます。コマンドラインに関する知識や Git のインストールは必要ありません(GitはGitHubの基盤となるバージョン管理システムです)。プログラミングスキルも不問です。ただし、GitHubのアカウントが必要になるため、持っていない場合は事前に登録しておいてください。
注:このガイドをブラウザの別ウィンドウやタブで開いておくと、各ステップを実行しながら内容を確認することができます。
■ リポジトリの作成
リポジトリはGitHubの基本的な単位であり、1つのプロジェクトを表します。リポジトリには、フォルダ、ファイル、画像など、プロジェクトに必要な要素が含まれています。リポジトリごとにREADMEやプロジェクトの説明書を作成することを推奨しています。GitHubでは、新しいリポジトリを作成する際にこれらを簡単に追加できます。ライセンスファイルなどの他の共通オプションも利用可能ですが、この説明では省略します。
・新しいリポジトリを作成する
- 右上にあるユーザー名の隣の「+」アイコンをクリックします
- リポジトリに名前を付けます
- 簡単な説明を入力します
- 「Initialize this repository with a README」を選択します
(図1)
「Create repository」ボタンをクリックすると、リポジトリが作成されます。
■ 課題を作成する
リポジトリにおける「課題」は、注意が必要な事項を記録する場所です。これにはバグ、機能要求、質問などが含まれます。GitHubでは、課題に対するラベル付け、検索、問題の割当て、効果的なプロジェクト管理のための工程を簡単に行うことができます。
リポジトリを作成した後、初めてであれば内容がまだ何もない状態です。何を行っているのかを他人に伝えるために、情報を記載したREADMEが役立ちます。ここでは、「課題」の作成方法を見ていきます。
・READMEの編集に関する「課題」を作成する
- サイドバーの「Issues」タブをクリックします
- 「New Issue」ボタンをクリックします
- 題名(例:「READMEを完成させる」)と説明を入力します
(図2)
情報を入力したら、「Submit new issue」ボタンをクリックします。これで、「課題」は作成され、閉じた後でもURLでいつでも参照可能になります。
後ほど、READMEを編集し、完成させたら、この「課題」を閉じることができます。
■ ブランチの作成
ブランチを使用すると、1つのリポジトリ内で複数の人が同時に作業を進めることができます。
リポジトリを作成すると、デフォルトで「master」というブランチが作成されます。このブランチだけで作業を続けることも可能ですが、新しい機能やアイデアを試したい時には、動作中の master ブランチから新しいブランチを作成できます。
ブランチを作るということは、作成時点でのオリジナルブランチのスナップショットを取ることです。新しいブランチで作業している間にオリジナルブランチに変更が加えられても、それらの更新をいつでも取り込む(pull)ことができます。
(図3)
あなたがstory.txt、story-joe-edit.txt、story-sue-edit.txtといった1つのファイルの異なるバージョンを作成した経験があるかもしれません。ブランチの目的もこれと同じですが、GitHubのリポジトリ上で扱うことがより簡単です。
GitHubでは、開発者、ライター、デザイナーがバグ修正や新機能の追加のために、製品用の master(製品)ブランチとは別のブランチで作業を進めます。機能や修正が完成したら、そのブランチを master にマージします。
・新しいブランチを作成する
- hello-world リポジトリに移動します
- 「branch: master」と表示されているドロップダウンのファイルリストの上部をクリックします
- テキストボックスに新しいブランチ名「readme-edits」を入力します
- 青色で表示される「Create branch」を選択するか、Enterキーを押します
(図4)
これで、master と readme-edits の2つのブランチが作成されました。現時点では内容は同じですが、将来的には異なるものになります。次に、新しいブランチに変更を加えてみましょう。
■ コミットを行う
GitHubでは、保存された変更点をコミットと呼びます。コミットを通じてプロジェクトの歴史をたどることができるのが魅力的です。
各コミットには、なぜその変更が行われたのかを説明するコミットメッセージが付随します。これにより、誰でもそのコミットを読み解き、何が行われたのか、なぜそれが行われたのかを理解できます。
readme-edits ブランチにいくつかの変更を加えましょう。
・変更をコミットする
- READMEファイルをクリックします
- ファイルビューの右上にある鉛筆アイコンをクリックして編集モードに入ります
- エディターで文書を記入します
- 変更内容を説明するコミットメッセージを記入します
(図5)
「Commit changes」ボタンをクリックすると、変更が readme-edits ブランチのREADMEファイルに反映されます。このブランチは、master とは異なる内容になります(master は元の状態を保持)
■ 取込み要求を作成する
取込み要求はGitHubでの協同作業の核心です。取込み要求を通じて、変更内容を共有し、誰かにその変更を取り込んで欲しいと依頼します。つまり、その変更を他のブランチにマージするよう求めます。GitHubの取込み要求機能により、2つのブランチ間の内容を比較し、変更点、追加点、削除点を「diffs(差異)」として緑色と赤色で表示できます。
変更を加えた直後に取込み要求を作成できます。コードが完全には完成していなくても、取込み要求を利用してコミットについて議論することができます(コードレビュー)。これにより、進行に必要なフィードバックや行き詰まりを解消するためのアドバイスを得ることができます。
取込み要求メッセージ内で、GitHubの @mention システムを使用して特定の人やチームにフィードバックを求めることができます。他の階に居たり、10区画離れた場所に居ても構いません。
自分自身のリポジトリに対して取込み要求を行い、自分でそれをマージすることも可能です。これは、大規模なプロジェクトに取り組む前に、手順を習得するのに良い方法です。
・README に行った変更の取込み要求を作成する
- サイドバーの「Pull Request」アイコンをクリックします。Pull Requestページから、緑色の「New pull request」ボタンをクリックします(図6)
- master(オリジナル)と比較するために、作成したブランチ readme-edits を選択します(図7)
- Compareページの「diffs」で変更を表示し、登録したい変更に間違いがないか確認します(図8)
- 間違いがなければ、大きな緑色の「Create Pull Request」ボタンをクリックします(図9)
- 取込み要求にタイトルを記入し、変更の簡単な説明を加えます。既存の課題に直接関連する場合は、「fixes #」と課題番号を題名に含めます(図10)
メッセージを記入し終わったら、「Create pull request」をクリックします。
注: コメントや取込み要求に絵文字を加えたり、写真やGIFをドラッグアンドドロップで追加することもできます。
■ 取込み要求をマージする
これにより、2つのブランチの変更を統合します。すなわち、readme-edits ブランチをmaster ブランチにマージします。
- 変更をmasterにマージするには、「Merge pull request」の緑色のボタンをクリックします
- 「Confirm merge」をクリックします
- 変更が統合されたので、紫色の「Delete branch」ボタンをクリックしてブランチを削除します
(図11)
(図12)
以前作成した「課題」は「closed」と表示されるはずです。「fixes #1」という記述が取込み要求のタイトルに含まれている場合、GitHubはその取込み要求がマージされると課題を自動的に閉じます。
■ 賛辞
GitHubで取込み要求を作成する方法を学びました。
このガイドを通して、以下のステップを実行しました:リポジトリの作成、ブランチ、課題、取込み要求、そして、取込み要求のマージ
あなたの新しい貢献を誇りに思ってください。
取込み要求の機能についてさらに学びたい場合は、GitHubの作業フローガイドをお勧めします。また、GitHubの探索ページやオープンソースプロジェクトへの参加も検討してみてください。
注: GitHubの使用方法については、他にもガイドやYouTubeチャンネルがあります
■ ツールの紹介
GitLab:GitHub をオンプレミスで構築する
ATLASSIAN Sourcetree: Git の GUI ツール
VMware ESXi:複数の OS を同じ物理サーバー上で実行
Redmine:タスク管理、ガントチャート、Wiki