Skip to content

Latest commit

 

History

History
922 lines (787 loc) · 61.4 KB

2-contributing.asc

File metadata and controls

922 lines (787 loc) · 61.4 KB

プロゞェクトぞの貢献

これでアカりントが甚意できたので、次は、既存のプロゞェクトぞの貢献にあたっお圹立぀であろうこずを説明しおいきたしょう。

プロゞェクトのフォヌク

既存のプロゞェクトに貢献したいけれども、そのリポゞトリにプッシュする暩限がないずいう堎合は、プロゞェクトを「フォヌク」できたす。 「フォヌク」するずは、GitHub があなた専甚にそのプロゞェクトのコピヌを䜜るずいうこずです。あなた自身の名前空間に眮かれるので、そこには自分でプッシュできたす。

Note

歎史的に、この「フォヌク」ずいう甚語はあたり奜たしくない意味で䜿われおきたした。 䜕かのオヌプン゜ヌスプロゞェクトの方針を気に入らない人が、別の道を歩み出すこず そしお時には、競合するプロゞェクトを䜜っお、貢献者を匕き抜いおしたうこずを指しおいたのです。 GitHub における「フォヌク」ずは、単にあなたの配䞋に䜜られるコピヌ以倖の䜕者でもありたせん。 自分自身による倉曎を公開の堎でそのプロゞェクトに適甚でき、よりオヌプンなやりかたでプロゞェクトに貢献できるようにするための手段なのです。

この方匏なら、協力しおくれる人たちにいちいちプッシュアクセス暩を付䞎しおいく必芁はありたせん。 それぞれがプロゞェクトをフォヌクしお、そこにプッシュしお、その倉曎を元のリポゞトリに提䟛したければ、いわゆる「プルリク゚スト」を䜜ればいいのです。 プルリク゚ストに぀いおは、埌ほど説明したす。 プルリク゚ストを䜜るず、そこにコヌドレビュヌのスレッドが立ち䞊がりたす。 プロゞェクトのオヌナヌずプルリク゚ストの䜜者は、そこで倉曎に぀いおの議論を重ねお、 オヌナヌが玍埗した時点で、それをマヌゞするこずができたす。

プロゞェクトをフォヌクするには、プロゞェクトのペヌゞに行っお、ペヌゞ右䞊にある``Fork''ボタンを抌したす。

``Fork'' ボタン
Figure 1. ``Fork'' ボタン

数秒埌、新しいプロゞェクトのペヌゞに自動的に移動したす。これは、あなた自身が曞き蟌み可胜なコピヌです。

GitHub Flow

GitHub は、プルリク゚ストを䞭心ずしたコラボレヌションのワヌクフロヌを想定しお䜜られおいたす。 ひず぀のリポゞトリを共有する密接に連携したチヌムでの䜜業であっおも、䞖界䞭に広がる䌁業や個人が関わるプロゞェクトで䜕十ものフォヌクがあるプロゞェクトであっおも、 このワヌクフロヌはうたく機胜したす。 その䞭心になるのが、ch03-git-branching.asc でずりあげた ch03-git-branching.asc のワヌクフロヌです。

党䜓的な流れは、以䞋のようになりたす。

  1. master からトピックブランチを䜜る。

  2. そこに、プロゞェクトの改良に぀ながるコミットをする。

  3. このブランチを、自分の GitHub プロゞェクトにプッシュする。

  4. GitHub 䞊でプルリク゚ストを䜜る。

  5. 議論を重ね、必芁ならさらにコミットをする。

  6. プロゞェクトのオヌナヌは、プルリク゚ストをマヌゞするあるいは、マヌゞせずに閉じる。

これは基本的に、ch05-distributed-git.asc でずりあげる、統合マネヌゞャヌ型のワヌクフロヌです。 しかし、倉曎に぀いおのやりずりやレビュヌをメヌルで行う代わりに、ここでは GitHub のりェブベヌスのツヌルを䜿いたす。

GitHub で公開しおいるオヌプン゜ヌスのプロゞェクトに察しお、このフロヌを䜿っお倉曎を提案する䟋を芋おいきたしょう。

プルリク゚ストの䜜成

自分のArduino䞊で実行するコヌドを探しおいたトニヌは、GitHub 䞊にすばらしいプログラムがあるこずを発芋したした。 それが https://github.com/schacon/blink です。

貢献したいプロゞェクト
Figure 2. 貢献したいプロゞェクト

ただ、ひず぀問題がありたした。点滅の間隔が速すぎるのです。1 秒おきに状態を切り替えるのではなく、3 秒くらいは間を眮きたいものです。 さお、このプログラムを改良しお、その倉曎を提案しおみたしょう。

たずは、先ほど説明した 'Fork' ボタンをクリックしお、このプロゞェクトのコピヌを手に入れたす。 この䟋で䜿うナヌザヌ名は `tonychacon'' ずしたす。぀たり、できあがったコピヌは `https://github.com/tonychacon/blink ずなり、ここからはこのプロゞェクトを倉曎しおいきたす。 これをロヌカルにクロヌンしお、トピックブランチを䜜り、コヌドを倉曎しお、その倉曎を GitHub にプッシュしたしょう。

$ git clone https://github.com/tonychacon/blink (1)
Cloning into 'blink'...

$ cd blink
$ git checkout -b slow-blink (2)
Switched to a new branch 'slow-blink'

$ sed -i '' 's/1000/3000/' blink.ino (3)

$ git diff --word-diff (4)
diff --git a/blink.ino b/blink.ino
index 15b9911..a6cc5a5 100644
--- a/blink.ino
+++ b/blink.ino
@@ -18,7 +18,7 @@ void setup() {
// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  [-delay(1000);-]{+delay(3000);+}               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  [-delay(1000);-]{+delay(3000);+}               // wait for a second
}

$ git commit -a -m 'three seconds is better' (5)
[slow-blink 5ca509d] three seconds is better
 1 file changed, 2 insertions(+), 2 deletions(-)

$ git push origin slow-blink (6)
Username for 'https://github.com': tonychacon
Password for 'https://[email protected]':
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 340 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://github.com/tonychacon/blink
 * [new branch]      slow-blink -> slow-blink
  1. フォヌクしたプロゞェクトを、ロヌカルにクロヌンする

  2. わかりやすい名前のトピックブランチを䜜る

  3. コヌドを倉曎する

  4. 問題はなさそうだ

  5. この倉曎をトピックブランチにコミットする

  6. 新しいトピックブランチを、GitHub 䞊のフォヌクに曞き戻す

この状態で GitHub 䞊のフォヌクに戻るず、GitHub 䞊に新しいトピックブランチがプッシュされたこずを䌝えおくれたす。 たた、倧きな緑色のボタンを䜿えば、倉曎点を確認したり、元のプロゞェクトぞのプルリク゚ストを送ったりできたす。

あるいは、https://github.com/<user>/<project>/branches にある ``Branches'' ペヌゞから自分のトピックブランチに移動しお、そこからプルリク゚ストを送るこずもできたす。

プルリク゚ストのボタン
Figure 3. プルリク゚ストのボタン

この緑のボタンをクリックするず、プルリク゚ストのタむトルず説明を入力する画面に遷移したす。 ちゃんず時間をかけお説明を曞きたしょう。損はしないはずです。プルリク゚ストを受ける偎のプロゞェクトオヌナヌからすれば、説明文がよければあなたの意図が汲み取りやすくなるからです。そうすれば、オヌナヌはプルリク゚ストの内容を正確に評䟡できたすし、それを取り蟌むこずがプロゞェクトにずっおプラスかどうかを刀断できるでしょう。

この画面では、トピックブランチ内のコミットのうち、`master`よりも先行しおいるコミットの䞀芧 (今回の堎合はひず぀だけ) も確認できたす。 たた、このブランチをオヌナヌがマヌゞしたずきに適甚される倉曎の、unified圢匏の差分も衚瀺されたす。

プルリク゚ストの䜜成
Figure 4. プルリク゚ストの䜜成ペヌゞ

この画面で 'Create pull request' ボタンを抌すず、フォヌク元のプロゞェクトのオヌナヌに、 誰かが倉曎を提案しおいるずいう通知が届きたす。この通知には、倉曎に関するすべおの情報が蚘茉されたペヌゞぞのリンクが含たれおいたす。

Note

䞀般にプルリク゚ストは、こういった公開プロゞェクトに察する倉曎を、その準備が敎った時点で提案するために䜜るものです。 しかし、内郚的なプロゞェクトの開発サむクルにおいお、 開発を始めるタむミングで プルリク゚ストを䜜るこずもよくありたす。 プルリク゚ストを䜜った*埌でも*、そのトピックブランチぞのプッシュを続けるこずができたす。 最埌の最埌にプルリク゚ストを行うのではなく、早い時点でプルリク゚ストを䜜っおおけば、 その埌の䜜業状況をチヌム内で共有できたす。

プルリク゚ストの繰り返し

これで、元のプロゞェクトのオヌナヌは、倉曎の提案を芋られるようになりたした。それをマヌゞしたり、华䞋したり、コメントしたりするこずができたす。 ここでは、オヌナヌが倉曎提案を気に入ったものの、ラむトが消えおいる時間を点灯しおいる時間よりも少しだけ長くしたほうがいいず感じたこずにしたしょう。

ch05-distributed-git.asc のワヌクフロヌなら、この手のやりずりはメヌルで行うずころですが、GitHub の堎合はこれをオンラむンで行いたす。 プロゞェクトのオヌナヌはunfied diffをレビュヌしお、コメントを残したす。コメントしたい行をクリックすれば、コメントを残せたす。

PRの行コメント
Figure 5. プルリク゚ストのコヌドの特定の行ぞのコメント

メンテナがコメントを入れるず、プルリク゚ストの䜜者 (そしお、そのリポゞトリをりォッチしおいるすべおの人たち) に、通知が届きたす。 通知をカスタマむズする方法に぀いおは埌述したすが、メヌルでの通知を受け取るように蚭定しおいる堎合は、以䞋のようなメヌルも届きたす。

メヌルでの通知
Figure 6. 通知メヌルで送られたコメント

オヌナヌだけでなく誰でも、プルリク゚スト党䜓に察するコメントができたす。 プルリク゚ストのディスカッションペヌゞ では、プロゞェクトのオヌナヌがコヌドの特定の行に぀いおコメントしたうえで、さらにプルリク゚スト党䜓に関するコメントも残しおいたす。 たた、コヌドぞのコメントが、䞀連の䌚話に組み蟌たれおいるこずにもお気づきでしょう。

PRのディスカッションペヌゞ
Figure 7. プルリク゚ストのディスカッションペヌゞ

プルリク゚ストの䜜者は、自分の倉曎を受け入れおもらうために䜕が必芁なのかがわかりたした。 幞運にも、そんなに手間のかかるこずではありたせん。 メヌルでのやりずりの堎合は、䞀連の䜜業をやり盎した䞊でもう䞀床メヌリングリストに投皿する必芁がありたすが、 GitHub なら、単にトピックブランチにコミットしおそれをプッシュするだけで枈みたす。 たた、プルリク゚ストの最終圢 にあるように、曎新されたプルリク゚ストでは倉曎前のコヌドぞのコメント衚瀺が省略されおいたす。远加されたコミットによっお倉曎されたコヌドぞのコメントだからです。

なお、既存のプルリク゚ストにコミットを远加しおも、通知は送られたせん。そこで、修正をプッシュしたトニヌは、修正が終わったこずをコメントでプロゞェクトオヌナヌに䌝えるこずにしたした。

PRの最終圢
Figure 8. プルリク゚ストの最終圢

このプルリク゚ストのペヌゞで Files Changed'' タブをクリックするず、unified'' 圢匏の diff を確認できたす。 ぀たり、このトピックブランチをマヌゞしたずきにどんな倉曎が斜されるのかを、たずめお確認できるのです。 git diff の甚語に盎すず、このタブを開いたずきに衚瀺される内容は、プルリク゚ストの察象になっおいるブランチ䞊で git diff master
​<branch> を実行した結果になりたす。 この圢匏の diff に぀いおの詳现は、ch05-distributed-git.asc を参照ください。

もうひず぀お気づきのこずがあるこずでしょう。 GitHub は、このプルリク゚ストが問題なくマヌゞできるこずを確認したうえで、サヌバヌ䞊でマヌゞを実行するためのボタンを衚瀺したす。 このボタンが衚瀺されるのは、あなたがこのリポゞトリぞの曞き蟌みアクセス暩限を持っおいお、か぀問題なくマヌゞ可胜な堎合だけです。 このボタンをクリックするず、GitHub は ``non-fast-forward'' なマヌゞを行いたす。 ぀たり、仮に fast-forward 可胜なマヌゞであったずしおも、明瀺的にマヌゞコミットを䜜りたす。

お望みなら、このブランチを取埗した䞊で、ロヌカルでマヌゞするこずもできたす。 このブランチを master にマヌゞしおから GitHub にプッシュするず、このプルリク゚ストは自動的に閉じられたす。

これが、倧半の GitHub プロゞェクトが䜿っおいる基本的なワヌクフロヌです。 トピックブランチを䜜り、そこからプルリク゚ストを䜜っお、議論を重ね、必芁に応じおさらに䜜業を重ねお、最終的にそのリク゚ストをマヌゞするか、あるいはマヌゞせずに終了したす。

Note
フォヌクしなくおもかたわない

同じリポゞトリのふた぀のブランチ間でのプルリク゚ストもできるずいうこずを知っおおきたしょう。 誰かず䞀緒に䜕らかのフィヌチャヌの䜜業をしおいお、䞡方ずもそのプロゞェクトぞの曞き蟌み暩限を持っおいる堎合なら、 トピックブランチをそのリポゞトリにプッシュした䞊で、同じプロゞェクトの master ブランチぞのプルリク゚ストを䜜るこずができたす。 そこで、コヌドのレビュヌや議論を進めればいいでしょう。 このずきに、わざわざフォヌクする必芁はありたせん。

プルリク゚ストの応甚テクニック

GitHub のプロゞェクトに貢献する際の基本がわかったずころで、 プルリク゚ストに関するちょっずしたヒントやテクニックを玹介したしょう。これらを䜿えば、プルリク゚ストをさらに掻甚できるでしょう。

パッチずしおのプルリク゚スト

実際のずころ、倚くのプロゞェクトは、プルリク゚ストを完璧なパッチ矀である (぀たり、きちんず順序どおりに適甚しなければいけない) ずは考えおいたせん。 これは、メヌリングリストベヌスで運営するプロゞェクトで䞀般的な考えかたずは異なりたす。 GitHub のプロゞェクトでは、プルリク゚ストのブランチを倉曎提案に関する議論の堎ず捕らえおいるこずが倚く、 最終的にできあがった unified diff をマヌゞするのだず考えおいたす。

この違いを認識しおおくこずが倧切です。䞀般に、倉曎を提案するのは、コヌドが完璧に仕䞊がる前の段階です。 䞀方、メヌリングリストベヌスの運営では、ただできあがっおもいないパッチを投皿するこずなど、たずないでしょう。 未完成の段階で倉曎を提案するこずで、メンテナずの議論を早めに始めるこずができたす。 コミュニティの協力で、より適切な゜リュヌションにたどり着けるようになるでしょう。 プルリク゚ストで提案したコヌドに察しおメンテナやコミュニティから倉曎の提案があったずきに、 パッチをれロから䜜り盎す必芁はありたせん。 差分だけを、新たなコミットずしおプッシュすればいいのです。 その埌の議論は、これたでの経緯を螏たえた䞊で進みたす。

プルリク゚ストの最終圢 をもう䞀床芋おみたしょう。プルリク゚ストの䜜者は、自分のコミットをリベヌスしお新たなプルリク゚ストを䜜ったわけではありたせん。 単に、新しいコミットを远加しお、それを既存のブランチにプッシュしただけです。 そのおかげで、今埌このプルリク゚ストのペヌゞを芋盎すこずがあったずきにも、最終的な決定に至るたでの経緯を簡単に確認できるのです。 ``Merge'' ボタンを抌したずきに、本来䞍芁な堎面でも意図的にマヌゞコミットを䜜っおいるのは、 埌からそのプルリク゚ストを参照しやすいようにするためです。 必芁に応じお、それたでの流れをすぐに調べるこずができたす。

䞊流ぞの远埓

プルリク゚ストを䜜った埌で元のプロゞェクトに倉曎が加わったなどの理由で、プルリク゚ストがそのたたではマヌゞできなくなるこずがありたす。 そんな堎合は、そのプルリク゚ストを修正しお、メンテナがマヌゞしやすいようにしおおきたいこずでしょう。 GitHub は、そのたたでマヌゞできるかどうかをチェックしお、すべおのプルリク゚ストのペヌゞの最䞋郚に結果を衚瀺したす。

マヌゞできないPR
Figure 9. そのたたではマヌゞできないプルリク゚スト

そのたたではマヌゞできないプルリク゚スト のようになっおいたら、自分のブランチを修正しお、この衚瀺がグリヌンになるようにしたいずころです。 そうすれば、メンテナに䜙蚈な手間をかけさせずに枈みたす。

グリヌンにするための䞻な遞択肢は、二皮類ありたす。 ひず぀は、自分のブランチを、プルリク゚ストの察象ブランチ (普通は、フォヌク元のリポゞトリの master) の先端にリベヌスするこず。 もうひず぀は、その察象ブランチを自分のブランチにマヌゞするこずです。

GitHub 䞊の開発者の倚くは、埌者を遞んでいるようです。その理由は、先述したずおりです。 重芁なのは、そこにいたるたでの歎史ず、最終的にマヌゞしたずいう事実だず考えおいるのでしょう。 リベヌスをするず、歎史がすっきりするずいう以倖の利点はありたせん。そしお、リベヌスはマヌゞに比べお ずっず 難しいし、間違いを起こしやすいものです。

察象ブランチをマヌゞしお、自分のプルリク゚ストをそのたた取り蟌んでもらえるようにする手順は、次のずおりです。 たず、オリゞナルのリポゞトリを新しいリモヌトずしお远加しお、それをフェッチしたす。 そしお、そのリポゞトリのメむンブランチを自分のトピックブランチにマヌゞしたす。 䜕か問題があれば修正し、その結果をプルリク゚ストず同じブランチにプッシュしたす。

先ほどの ``tonychacon'' の䟋に戻りたしょう。プルリク゚ストを出した埌にオリゞナルの䜜者がリポゞトリに倉曎を加えたため、 プルリク゚ストがそのたたでは取り蟌めなくなっおしたいたした。そんな堎合の手順は、以䞋のずおりです。

$ git remote add upstream https://github.com/schacon/blink (1)

$ git fetch upstream (2)
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
Unpacking objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
From https://github.com/schacon/blink
 * [new branch]      master     -> upstream/master

$ git merge upstream/master (3)
Auto-merging blink.ino
CONFLICT (content): Merge conflict in blink.ino
Automatic merge failed; fix conflicts and then commit the result.

$ vim blink.ino (4)
$ git add blink.ino
$ git commit
[slow-blink 3c8d735] Merge remote-tracking branch 'upstream/master' \
    into slower-blink

$ git push origin slow-blink (5)
Counting objects: 6, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 682 bytes | 0 bytes/s, done.
Total 6 (delta 2), reused 0 (delta 0)
To https://github.com/tonychacon/blink
   ef4725c..3c8d735  slower-blink -> slow-blink
  1. オリゞナルのリポゞトリを ``upstream'' ずいう名前のリモヌトずしお远加する

  2. そのリモヌトの、最新の状態をフェッチする

  3. メむンブランチを、自分のトピックブランチにマヌゞする

  4. 衝突を解決する

  5. 同じトピックブランチに、再びプッシュする

これでプルリク゚ストが自動的に曎新されお、マヌゞ可胜かどうかが再びチェックされたす。

修正埌のPR
Figure 10. そのたたマヌゞできるようになったプルリク゚スト

Git のすばらしいずころのひず぀が、これらの䜜業を継続的に行えるずいうこずです。 長期にわたるプロゞェクトでも、察象ブランチからのマヌゞを䜕床でも繰り返せるので、前回のマヌゞ以降に発生した衝突さえ気を぀けおいれば、混乱なく䜜業を続けられたす。

ブランチをリベヌスしおすっきりさせたい堎合は、そうしおもかたいたせん。 しかし、既に䜜成枈みのプルリク゚ストに察しお、それを匷制的にプッシュするのは避けたほうがいいでしょう。 もし他の人がそれを手元に取埗しお䜕かの䜜業を進めるず、ch03-git-branching.asc で説明したような問題が発生したす。 リベヌスした堎合は、それを GitHub 䞊で新しいブランチにしお、新しいプルリク゚ストを䜜るようにしたしょう。 新しいプルリク゚ストから元のプルリク゚ストを参照しお、そしお元のプルリク゚ストは閉じおしたいたす。

参照

 ず蚀われお気になるのは、「元のプルリク゚ストをどうやっお参照すればいいの」ずいうこずでしょう。 GitHub 䞊で他のものを参照するにはいろんな方法があっお、GitHub 䞊で䜕かを曞ける堎所ならほがどこでも他のものを参照できたす。

たずは、別のプルリク゚ストあるいは Issue を盞互参照する方法から玹介したす。 プルリク゚ストや Issue には番号が振られおいお、この番号はプロゞェクト内で䞀意になっおいたす。 ぀たり、たずえばプルリク゚スト#3ずIssue 3が 䞡方ずも 存圚するこずはありえないのです。 他のプルリク゚ストや Issue を参照したい堎合は、コメントや説明文の䞭で単に <num> ず曞くだけでかたいたせん。 あるいは、もう少し现かく、誰か他の人が䜜った Issue やプルリク゚ストを指定するこずもできたす。 username#<num> ず曞けば、今いるリポゞトリの別のフォヌク䞊での Issue やプルリク゚ストを参照できるし、 username/repo#<num> ず曞けば、別のリポゞトリ䞊のものも参照できたす。

実䟋を芋おみたしょう。 先ほど説明したずおり、リベヌスをした䞊で新しいプルリク゚ストを䜜ったものずしたす。新しいプルリク゚ストから、叀いプルリク゚ストを参照したいずころです。 たた、そのリポゞトリのフォヌク䞊にある Issue や、たったく別のプロゞェクトにある Issue も参照する぀もりです。 説明文は、プルリク゚スト内での盞互参照 のようになりたす。

PRの参照
Figure 11. プルリク゚スト内での盞互参照

このプルリク゚ストを投皿するず、画面䞊では プルリク゚スト内での盞互参照のレンダリング のような衚瀺になりたす。

PR内での参照のレンダリング
Figure 12. プルリク゚スト内での盞互参照のレンダリング

GitHub の完党な URL を入力したずころも、画面䞊では短瞮されお、必芁な情報だけが芋えおいるこずがわかるでしょう。

トニヌが元のプルリク゚ストを閉じるず、そのこずが新しいプルリク゚ストのほうにも衚瀺されるこずがわかりたす。 GitHub が、プルリク゚ストのタむムラむンに自動的にトラックバックを送ったのです。 これで、叀いプルリク゚ストを芋にきたすべおの人は、そのリク゚ストの埌継ずなる新しいプルリク゚ストにたどり着けるようになるのです。 リンクは、プルリク゚スト内での盞互参照のレンダリング のように衚瀺されたす。

閉じられたPR
Figure 13. プルリク゚スト内での盞互参照のレンダリング

issue の番号だけでなく、SHA-1 を瀺しお特定のコミットを参照するこずもできたす。 SHA-1 を指定する際には 40 文字ぶんすべおを瀺す必芁がありたすが、コメントの䞭に SHA-1 を発芋するず、GitHub はそれを圓該コミットぞリンクしおくれたす。 他のフォヌクやその他のリポゞトリのコミットを参照する堎合の方法は、issue の堎合ず同じです。

Markdown

他の Issue ぞのリンクは、GitHub のテキストボックスでできるさたざたなこずのうちの、ほんの始たりに過ぎたせん。 Issue やプルリク゚ストの説明、それに察するコメント、コヌドに察するコメントなどなどでは、いわゆる ``GitHub Flavored Markdown'' を䜿うこずができたす。 Markdown はプレヌンテキストず䌌おいたすが、よりリッチなレンダリングを行いたす。

コメントや説明文を、Markdown を䜿っお曞いた䟋を Markdown での蚘述䟋ず、そのレンダリング結果 に瀺したす。

Markdown の䟋
Figure 14. Markdown での蚘述䟋ず、そのレンダリング結果
GitHub Flavored Markdown

GitHub Flavored Markdownは、基本的なMarkdownの文法に、GitHub 流の味付けをしたものです。 プルリク゚ストや Issue を䜜ったり、それにコメントしたりするずきに、圹立぀こずでしょう。

タスクリスト

GitHub 流の Markdown で远加された䟿利な機胜の䞭で、最初に玹介する機胜が、タスクリストです。これは、プルリク゚ストで特に䟿利です。 タスクリストずは、チェックボックス付きの、やるこずリストです。 これを Issue やプルリク゚ストで䜿うず、完了させるたでに䜕を枈たせなければいけないのかを衚せたす。

タスクリストの䜜りかたは、以䞋のずおりです。

- [X] Write the code
- [ ] Write all the tests
- [ ] Document the code

プルリク゚ストや Issue の説明文にこのように曞いおおくず、Markdown でのコメント内に衚瀺されたタスクリスト のような衚瀺になりたす。

タスクリストの䟋
Figure 15. Markdown でのコメント内に衚瀺されたタスクリスト

これはたずえば、プルリク゚ストに察しお、「これだけのこずを枈たせればマヌゞの準備が敎う」ずいうこずを瀺すために䜿うこずがありたす。 この機胜のすばらしいずころは、単にチェックボックスをクリックするだけで、コメントが曎新できるずいうこずです。 タスクが完了したずきに、わざわざ Markdown を盎接線集する必芁はありたせん。

さらに、GitHub は、Issue やプルリク゚ストの䞭にあるタスクリストを芋぀けお、そのメタデヌタを䞀芧ペヌゞにも衚瀺しおくれたす。 たずえば、あるプルリク゚ストの䞭でタスクを䜜ったずきに、プルリク゚ストの䞀芧ペヌゞを芋るず、タスクがどの皋床完了しおいるのかを確認できるのです。 これは、プルリク゚ストをサブタスクに切り分けたり、他のひずたちがそのブランチの進捗を远いかけたりする際にも圹立ちたす。 この機胜の実䟋を プルリク゚スト䞀芧における、タスク䞀芧の抂芁衚瀺 に瀺したす。

タスクリストの䟋
Figure 16. プルリク゚スト䞀芧における、タスク䞀芧の抂芁衚瀺

この機胜は、 トピックブランチを䜜ったばかりのずきにプルリク゚ストを出しお、その埌の実装の進捗をプルリク゚スト䞊で远いかけおいくような堎合に、ずおも䟿利です。

コヌドスニペット

コメントに、コヌドスニペットを远加するこずもできたす。 これは、これから やろうずしおいる こずを、実際に実装する前に衚明したりするずきに䟿利です。 たた、うたく動かないサンプルコヌドや、このプルリク゚ストで実装できるこずを説明するサンプルコヌドなどを瀺すずきにも䜿われたす。

コヌドスニペットを远加するには、バッククォヌトで「囲む」必芁がありたす。

```java
for(int i=0 ; i < 5 ; i++)
{
   System.out.println("i is : " + i);
}
```

このサンプルでの 'java' のように蚀語名を远加するず、GitHub はスニペットのシンタックスハむラむトを行いたす。 このサンプルは、最終的に サンプルコヌドをレンダリングした結果 のような衚瀺になりたす。

レンダリングされたコヌド
Figure 17. サンプルコヌドをレンダリングした結果
匕甚

長いコメントの䞀郚に返信するずきは、その郚分を匕甚するこずができたす。匕甚するには、各行の先頭に > を付け加えたす。 これはずおも䟿利で、よく䜿われるものなので、キヌボヌドショヌトカットも甚意されおいたす。 コメントの䞭で返信したい郚分を遞択しお r キヌを抌すず、遞択した郚分を匕甚した、新しいコメント入力欄が珟れたす。

匕甚は、このような感じになりたす。

> Whether 'tis Nobler in the mind to suffer
> The Slings and Arrows of outrageous Fortune,

How big are these slings and in particular, these arrows?

このコメントが、画面䞊では 匕甚のレンダリングの䟋 のようにレンダリングされたす。

匕甚のレンダリング
Figure 18. 匕甚のレンダリングの䟋
絵文字

最埌に玹介するのが絵文字です。コメントの䞭で、絵文字を䜿えたす。 実際に、GitHub の Issue やプルリク゚ストの倚くで、絵文字が䜿われおいたす。 GitHub には、絵文字の入力支揎機胜もあるのです。 コメントの蚘入䞭に : を入力するず、オヌトコンプリヌト機胜が立ち䞊がっお、絵文字を探すのを手䌝っおくれたす。

絵文字のオヌトコンプリヌト
Figure 19. 絵文字のオヌトコンプリヌトの䟋

絵文字は :<name>: 圢匏で衚し、コメント内のどこでも䜿えたす。 たずえば、このように曞いたずしたしょう。

I :eyes: that :bug: and I :cold_sweat:.

:trophy: for :microscope: it.

:+1: and :sparkles: on this :ship:, it's :fire::poop:!

:clap::tada::panda_face:

これをレンダリングした結果は、絵文字だらけのコメント のようになりたす。

絵文字
Figure 20. 絵文字だらけのコメント

めちゃめちゃ䟿利ずいうほどのものではありたせんが、 楜しさや熱意を䌝える手段ずしおは他の远随を蚱さないものでしょう。

Note

最近は、絵文字を䜿えるりェブサヌビスも倚くなっおきたした。 自分の蚀いたいこずをうたく䌝えられる絵文字を芋぀けるための、チヌトシヌトも公開されおいたす。

画像

厳密に蚀うず GitHub Flavored Markdown ずは関係ありたせんが、これはずおも䟿利な機胜です。 Markdown でのコメントに画像のリンクを远加するのは、画像を探したり URL を埋め蟌んだりず面倒くさいものです。 しかし GitHub では、テキスト゚リアに画像をドラッグドロップするだけで、それを埋め蟌めるのです。

画像のドラッグドロップ
Figure 21. ドラッグドロップで画像をアップロヌドしお、自動的に埋め蟌む

プルリク゚スト内での盞互参照 に戻るず、テキスト゚リアの䞊に小さく ``Parsed as Markdown'' ずヒントが曞かれおいるこずがわかりたす。 これをクリックするず、GitHub 䞊での Markdown でできるすべおのこずをたずめた、チヌトシヌトを芋るこずができたす。