開発者によるGitHubの紹介

JavaScriptの学習に興味がありますか? jshandbook.comで無料の電子ブックを入手

GitHubは数十億行のコードをホストするWebサイトであり、毎日数百万人の開発者が集まり、オープンソースソフトウェアとのコラボレーションと問題の報告を行っています。

つまり、ソフトウェア開発者向けのプラットフォームであり、Gitを中心に構築されています。

ヒント:Gitについてまだ知らない場合は、Gitガイドをご覧ください。

開発者として、作業の一部としてGitHubまたは別のGitベースのツールを毎日使用することを避けることはできません。コードをホストするため、または他の人のコードで共同作業するために使用されます。この記事では、GitHubのいくつかの重要な概念と、その機能のいくつかを使用してワークフローを改善する方法について説明します。

なぜGitHubなのか?

GitHubとは何かがわかったので、GitHubを使用する理由を尋ねるかもしれません。

結局のところ、GitHubは民間企業によって管理されており、人々のコードをホストすることで利益を得ています。では、なぜBitBucketやGitLabなどの類似のプラットフォームの代わりにそれを使用する必要があるのでしょうか?

個人的な好みや技術的な理由に加えて、大きな理由が1つあります。誰もがGitHubを使用しているため、ネットワーク効果が大きいからです。

主要なコードベースは、その利便性のために他のバージョン管理システムからGitに時間の経過とともに移行し、GitHubは歴史的に適切な位置にあり、オープンソースコミュニティのニーズを満たすために多大な努力を払ってきました。

そのため、今日、ライブラリを検索するたびに、GitHubで99%の時間を見つけます。

オープンソースコードとは別に、多くの開発者は、プラットフォームの利便性のためにGitHubでプライベートリポジトリもホストしています。

ここで、開発者が知る必要がある重要なGit固有の概念から始めましょう。

GitHubの問題

GitHubの問題は、世界で最も人気のあるバグトラッカーの1つです。

リポジトリの所有者は、問題を整理、タグ付けし、マイルストーンに関連付けることができます。

他の誰かが管理しているプロジェクトで課題を開くと、それを閉じるまで(たとえば、問題を見つけた場合)、リポジトリ所有者がそれを閉じるまで開いたままになります。

決定的な答えが得られる場合もあれば、問題を未解決のままにして、それを分類する情報でタグ付けすることもあります。その後、開発者はフィードバックを受け取って問題を解決したり、コードベースを改善したりすることができます。

ほとんどの開発者は、GitHubでリリースされたコードをサポートするための支払いを受けていないため、迅速な返信は期待できません。ただし、一部のオープンソースリポジトリは、そのコードを中心にサービスを提供する企業、より多くの機能を備えたバージョンの商用製品を提供する企業、またはプラグインベースのアーキテクチャを利用する企業によって公開されています。そして、彼らはオープンソースプロジェクトに取り組んでいる開発者に支払いをしました。

ソーシャルコーディング

画像クレジット:https://octodex.github.com

数年前、GitHubのロゴには「ソーシャルコーディング」のキャッチフレーズが含まれていました。

これはどういう意味でしたか?確かにそうです。

フォロー

GitHubを使用すると、ユーザーのプロファイルに移動して[フォロー]をクリックするか、リポジトリの[ウォッチ]ボタンをクリックして、開発者またはリポジトリをフォローできます。

どちらの場合も、アクティビティはダッシュボードに表示されます。ユーザーやリポジトリをフォローすることは、人々が言うことを見る代わりに人々が何をするかを見るTwitterとは異なります。

GitHubの大きな特徴の1つは、リポジトリにスターを付ける機能です。このアクションにより、「スター付きリポジトリ」リストに追加されます。これにより、興味のあるプロジェクトを追跡し、同様のプロジェクトを発見できます。

また、最も重要な評価メカニズムの1つでもあります。レポの星が多いほど、一般的に人気が高く重要です。これにより、検索結果でより顕著に表示されます。

主要なプロジェクトには、何万もの星があります。

GitHubには、特定の期間(たとえば、今日、今週、または今月)に最も多くの星を獲得するリポジトリを備えたトレンドページもあります。

これらのトレンドリストにアクセスすると、他のサイトに掲載されるなど、他のネットワーク効果が発生する可能性があります。

フォーク

プロジェクトの最後の重要なネットワーク指標は、フォークの数です。

フォークはプルリクエスト(PR)のベースであり、これは変更提案であるため、これはGitHubの動作の鍵です。リポジトリをフォークし、いくつかの変更を行った後、プルリクエストを作成して、それらの変更をマージするよう依頼する場合があります。

時々、リポジトリをフォークする人は、何もマージするようにあなたに決して尋ねないかもしれません。彼らはあなたのコードが好きで、元のリポジトリにマージしたくない何かをその上に追加することにしたという理由だけであなたのリポジトリをフォークするかもしれません。ユーザーは、自分に固有のバグを修正することもできます。

人気=より良い

全体として、これらはすべてプロジェクトの人気の重要な指標です。上記のインジケータとは別に、最新のコミットの日付と課題トラッカーへの著者の関与は、ライブラリまたはソフトウェアに依存すべきかどうかの有用な指標です。

プルリクエスト

前のセクションで、プルリクエスト(PR)とは何かを紹介しました。繰り返しになりますが、人はあなたのリポジトリをフォークし、いくつかの変更を行った後、プルリクエストを作成してそれらの変更をマージするように頼むかもしれません。

プロジェクトには何百ものPRがある場合があります。一般的に、Reactプロジェクトのように、プロジェクトの人気が高いほど、PRが多くなります。

人がプルリクエストを送信したら、プロジェクトのコアメンテナーがそれをレビューする必要があります。

プルリクエストの範囲(変更の数、変更の影響を受けるものの数、または触れたコードの複雑さ)に応じて、メンテナーは、変更がプロジェクトと互換性があることを確認するために多少の時間を必要とする場合があります。

プロジェクトには、導入したい変更の明確なタイムラインがある場合があります。プルリクエストで複雑なアーキテクチャを導入している間、メンテナーは物事をシンプルにしたいと思うかもしれません。

これは、プルリクエストが常に迅速に受け入れられるとは限らず、プルリクエストが受け入れられるという保証がないということです。

上記の例では、1.5年前にさかのぼるレポジトリにプルリクエストがあります。これはすべてのプロジェクトで発生します。これは非常に正常であり、前述の理由による可能性があります。

プロジェクト管理

GitHubインターフェースは、開発者がユーザーからフィードバックを受け取る場所である問題に加えて、いくつかのプロジェクト管理機能を提供することを目的とした他の機能を提供します。

その1つがプロジェクトです。エコシステムでは非常に新しく、ほとんど使用されていませんが、実行する必要のある問題や作業を整理するのに役立つかんばんボードです。

Wikiは、ユーザー向けのドキュメントとして使用することを目的としています。これまで見てきたWikiの最も印象的な用途の1つは、Goプログラミング言語のGitHub Wikiです。

もう1つの一般的なプロジェクト管理支援はマイルストーンです。これは問題ページの一部であり、特定のマイルストーンに問題を割り当てることができます。これはリリースのターゲットになる可能性があります。

リリースといえば、GitHubはリリースを導入することでGitタグ機能を強化しました。

Gitタグは特定のコミットへのポインターであり、一貫して実行されると、特定のコミットを参照せずにコードの以前のバージョンにロールバックするのに役立ちます。

GitHubリリースはGitタグの上に構築され、コードの完全なリリースと、コードの最終製品の完全に機能するバージョンを表すZipファイル、リリースノート、およびバイナリアセットを表します。

Gitタグはプログラムで作成できますが(たとえば、コマンドラインgitプログラムを使用)、GitHubリリースの作成はGitHub UIを介して行われる手動プロセスです。基本的に、GitHubに新しいリリースを作成し、そのリリースに適用するタグを伝えるように指示します。

コミットの比較

GitHubは、コードを操作するための多くのツールを提供します。

最も重要なことの1つは、あるブランチを別のブランチと比較することです。または、最新のコミットを現在使用しているバージョンと比較して、どの変更が経時的に行われたかを確認することもできます。

GitHubでは、比較ビューでこれを行うことができます。レポ名の最後に/ compareを追加するだけです。

たとえば、https://github.com/facebook/react/compare

次の図では、最新のReact v15.xと、この記事の執筆時点で利用可能な最新のv16.0.0-rcバージョンを比較して、何が変更されたかを確認します。

このビューには、変更された2つのリリース(またはタグまたはコミット参照)の間に行われたコミットと、変更の数が妥当な量より少ない場合の実際の差分が表示されます。

Webhookとサービス

GitHubは、webhookやサービスなど、開発者のワークフローを支援する多くの機能を提供します。

Webhook

Webhookを使用すると、リポジトリで特定のイベント(コードのプッシュ、フォークの作成、タグの作成または削除など)が発生したときに外部サービスをpingできます。

イベントが発生すると、GitHubは使用するよう指示したURLにPOSTリクエストを送信します。

この機能の一般的な使用法は、ローカルコンピューターから更新プログラムをプッシュするときに、リモートサーバーにpingを実行してGitHubから最新のコードを取得することです。

GitHubにプッシュすると、GitHubはプッシュしたサーバーに通知し、サーバーはGitHubからプルします。

サービス

GitHubサービスと新しいGitHubアプリは、開発者のエクスペリエンスを向上させたり、サービスを提供したりするサードパーティの統合です。

たとえば、TravisCIを使用して、新しいコミットをプッシュするたびにテストを自動的に実行するようにテストランナーをセットアップできます。

CircleCIを使用して継続的インテグレーションをセットアップできます。

コードを分析し、「技術的負債」とテストカバレッジのレポートを提供するCodeclimate統合を作成できます。

最後の言葉

GitHubは、今日のデベロッパーツールセットの真の逸品である、活用する素晴らしいツールとサービスです。このチュートリアルは開始に役立ちますが、GitHubオープンソース(またはクローズドソース)プロジェクトで実際に作業した経験は見逃せないものです。

JavaScriptの学習に興味がありますか? jshandbook.comで無料の電子ブックを入手