GitHubのリポジトリのメニュー / タブについてのメモ

## はじめに

### このメモについて

このメモは、GitHubのリポジトリにある各種タブやメニューについての覚え書きになります。
個人の無償利用の範囲でも、気がつくといろいろと機能が増えていて便利に使えるようになっているのですが、気がついていない機能もあったので、書き出してみました。

- 一部は今まで使っていなかったので、GitHub側のガイドを元に書き起こしています
- 意訳になっているところがありますので、ご指摘やアドバイスいただければ幸いです
- 使っていない機能のいくつかに関しては、今回試してみましたので、そのキャプチャも添えています

個人メモ的なものでテクニカル内容ではありませんが、もしこのメモにたどり着いてくださった方に、各種機能の意図しているところを自分なりにご紹介できれば幸いです。

※キャプチャは全て自分の公開リポジトリのもの、もしくは自分の設定のものを利用しています。

## 本題: 各種メニュー / タブについて

### Pulse 

- リポジトリの活動状況(Activity)を表示しています
- オープンソースプロジェクトでは、とくに「最近もちゃんと活動、更新、メンテナンスがされているか」が、利用の目安にもなります

PCでの参照の場合は前面には出てこないのですが、スマホやタブレットでレスポンシブモードでリポジトリを表示すると、Plusの内容が上の方に表示されますので、意外とあなどれません...。

![responsive-mode.png](https://qiita-image-store.s3.amazonaws.com/0/27976/3f7dedc6-de74-860c-eb28-c57c76017de5.png)

上記は自分のリポジトリの例です。
デフォルトでは一週間分の活動状況が表示されます。

### Contributors

このリポジトリに対して協力した人が表示されます。

- リポジトリに対してのpushのほか、外部からのプルリクエストがマージされた場合、プルリクエストのユーザがも表示されます
- 個人の活動であればほとんどはリポジトリのオーナーですが、チームでの活動なら、チームメンバーがリストアップされます

### Community (Community Profile)

とくにオープンソースのプロジェクトとそのリポジトリの場合に重要になります。
このメニューには、いくつかチェックリストがあり、リポジトリがチェック項目を満たしているかどうかが、GitHubの基準で可視化されています。
（基本は、必要なファイルがある、適切に情報が添えられている、といったあたりを自動で判断してチェックをしています）

![community-profile.png](https://qiita-image-store.s3.amazonaws.com/0/27976/8b804ab7-c941-2668-b227-54c195b67a04.png)

#### Description

このプロジェクトがどういうものかの説明があること。
リポジトリのタイトルの下に表示される部分です。鉛筆マークのアイコンを押すか、Settingsからリポジトリの設定で、「Description」に記載ができます。

なにも書かれていなければ未チェック状態になりますが、「いろいろ」という4文字程度でもダメのようです....。

#### README

READMEがリポジトリに登録されていると、チェックマークが付きます。
レスポンシブモードでも、PCでのブラウズでも、READMEの内容はリポジトリのトップに表示されるので、ここは大事ですね。

#### Code of conduct

リポジトリ / プロジェクトへ協力したい場合のための適切なガイドラインが提示されていること、いわゆる「行動規範」が明示されていることが条件になります。

- プロジェクトが健全なコミュニティ活動ができるように、行動規範を明示していること
- GitHubの場合は、CODE_OF_CONDUCT.mdというファイルに規範を記載するとチェックマークが付きます
 - https://help.github.com/articles/adding-a-code-of-conduct-to-your-project/

#### Contributing

このリポジトリやプロジェクトへの参加方法、コントリビュート（協力）方法についての記載があると、チェックマークが付きます。

- GitHubの場合は、CONTRIBUTING.mdというファイルを用意してあげると、チェックマークが付きます
- 大規模なプロジェクトだと、「プルリクやIssueを送る前に、まずこれを読んでね」という情報が提示されているかと思いますが、だいたいこちらに該当します。

#### License

ソフトウェアのライセンスについて提示されていると、チェックマークが付きます。

- License.txtやライセンス明示用のファイルがリポジトリに登録されていることが条件です
- テンプレートが用意されているので、GitHubの画面からも登録できます
 - 関連記事: [GitHubのWebUIからライセンスを追加してみました。](https://qiita.com/akiko-pusu/items/3f9f798845730fce0714)

#### Issue or pull request template

バグレポートやリクエストのためのテンプレート、プルリクエストのためのテンプレートが用意されていると、チェックマークが付きます。
プルリクエスト / issue tracking自体はGitの機能ではなくGitHubの機能なので、こちらは画面からも設定できます。

- issue_template.md や pull_request_template.md というファイルを追加すると、自動で適用されます

### Traffic

リポジトリがクローンされた回数や、アクセス数、どのURLからアクセスされたかの情報が取得できます。
クローンの回数は、「みんなに使ってもらえてるなあ」という実感にもなりますね。

新しいバージョンをリリースした場合、やっぱりしばらくアクセス数どうかな？とか、Cloneしてもらえてるかな？というのが気になりますので...。

![traffic.png](https://qiita-image-store.s3.amazonaws.com/0/27976/22cd2412-a23c-1f6d-15f4-ee191f124bef.png)

公開リポジトリの場合は、ブログなどで紹介してもらったりするとアクセス数が増えることがあります。わたしの場合は小さいリポジトリですが、紹介してもらえたりすると、とても嬉しいです！

Cloneの数も励みにはなりますが、リリースの前にコミットが多く自動テストをたくさん走らせる場合は、個人ユーザではなくCIツールからのcloneがほとんどだったりするので、ちょっと寂しいこともあります。

### Commits

コミット状況をグラフで表示してくれます。
ただし、masterブランチ（もしくはデフォルトとして設定したブランチ）へのコミット状況しか表示されません。

開発専用のトピックブランチがあり、そこでガンガンコミットはしていても、その状況はCommitsのグラフには反映されないようです...。
（同様に、プロフィールのコミット状況も、masterブランチでないと緑にならない模様...）

ここでのグラフにあまり動きがないからと言って、Activeでないなあと判断するのはちょっと待って、「Network」側のコミット状況も見たほうがいいかなと思います。

![commits-and-network.png](https://qiita-image-store.s3.amazonaws.com/0/27976/c9b2e0d0-e736-2e31-1e4f-7b10b718ece2.png)

### Code frequency

基本は直近1〜2週間での「コードの行数の増減」を表示します。

「増える」だけが良いというものではなく、リファクタリングや不要なファイルの削除の結果、コードが減るというのも活動として悪いことではありませんので、**「コードがグッと減ってるけどどんな工夫をしたんだろう？」**といった観点で眺めるのも楽しいと思います。

### Dependency graph

対象のリポジトリのソースコードが、他のリポジトリのソースコードに依存している場合は、このページに自動で表示されます。

情報はGemfileやpackage.jsonがあればそこから自動的に抽出します。
依存しているリポジトリがGitHub上のリポジトリであれば、リンクも貼られます。

![dependency-graph.png](https://qiita-image-store.s3.amazonaws.com/0/27976/c86448b0-8985-c295-396c-942252d21a6a.png)

Dependency graphは、公開リポジトリの場合はデフォルトでOnになっています。
プライベートリポジトリの場合は、自分で明示的に有効化する必要があるようです。

- 参考: https://help.github.com/articles/listing-the-packages-that-a-repository-depends-on/

### Network

リポジトリ内の各ブランチのコミット状況が表示されます。
Commitsと違い、フォーク状況（公開状態になっているもの）のコミット状況も参照することができます。

「あ、フォークしてくれたあの人、こんな変更を加えてるんだ！」といった発見もあります。
ただし、大規模でフォーク件数が多いプロジェクトだと、この画面の表示ができないこともあるようです。

### Forks

フォークしてくれた方のリポジトリへのリンクが一覧表示されます。

## settings（リポジトリ）

リポジトリの基本設定ができます。
この画面は、リポジトリのオーナーか、権限を持ったチームメンバーしか参照できません。

以下のようなことが行えます。

- どのブランチをデフォルトブランチとするか（基本はmaster)
- ブランチへのアクセス権限の設定（直にpushを禁止するとか）
- 各種ツールの利用設定（WikiやIssueを使うかどうか）
- CIツールやプロジェクト管理ツールなど外部ツール連携の設定
- CIツールで使うデプロイキー（CIがリポジトリにアクセスするためのキー）の管理生成

## settings（個人設定側）

以下は、リポジトリ単位ではなく個人設定側になります。

### Profile (個人の基本設定）

連絡先や表示のアカウント名、個人のサイトへのリンクなどを設定できます。
公開プロフィールになるので、SPAMメールは避けたいような場合は、メールアドレスは非表示にすることもできます。

また、「求職中ですよ」「プロフィールを見てオファーしてもらってもいいよ」という方の場合は、「Jobs profile」の「Available for hire」をチェックすると良いみたいです。
（わたしは小さいリポジトリしか持っていないので、効果のほどはよくわからないですが...）

### Account

ここでは、特にパスワード管理、アカウントの変更を行います。
二段階認証を有効にする場合も、こちらから設定します。

### Emails

基本はGitHubへの登録にはメールアドレスが必要ですが、プロフィールには公開しないでおきたいとか、別の連絡先を登録しておきたい場合に使います。

### Notifications

各種通知設定を行います。
大規模なプロジェクトになってくると、コミット単位での通知やissueの登録、コメントの通知などたくさんの通知がくるので、そのあたりを調整します。

### Billing

支払いカード情報です。有償プランをご利用の方のみお世話になるかな？

### SSH and GPG keys

sshのkeyの設定になります。
基本は個人の鍵のみですが、CIツールや外部ツールとの連携で、複数の鍵を登録することもできます。

### Security

ここでも、二段階認証や、アカウントがロックされてしまった場合のリカバリの設定ができます。
また、自分のアカウント「として」どの端末からのアクセスがあったか、ということもトラッキングできます。不正アクセスで自分のリポジトリや設定に変更がないかもチェックできます。

### Blocked users

ブロックユーザの設定ができます。（あまり機会はないと思いますが...）

### Repositories

自分のリポジトリ一覧が表示されます。

### Organizations

Joinしているプロジェクト・チームの情報が表示されます。

### Saved replies

プルリクエストやIssueのコメントの一部をストックしておくことができます。
「あとから返事しなくちゃ！」とか、「このコメントのコード大事！」みたいなものを保存しておけます。

### Applications

GitHub連携しているアプリケーションの一覧が表示されます。
CIツールやコード解析、GitHub認証を使ってログインするようなアプリケーションは、ここに一覧表示されます。

![applications.png](https://qiita-image-store.s3.amazonaws.com/0/27976/c6dd8385-d873-b3f5-04ec-4f26fab2e0b2.png)

### Developer settings

こちらは、GitHub連携するアプリケーションへの設定などを行います。
（わたし個人はまだそこまでのアプリケーションがないので、あまり詳しくかけません...）

## まとめ

以上、駆け足でのご紹介でした。
ほそぼそとGitHubを使い出して5年くらいは経っていますが、いつのまにか機能が増えていて驚くことがあります。

とくに、OSS活動・コラボレーションを安全に気持ちよく進めるための仕組みが整ってきているところがすごいなあと思っています。
連携アプリケーションもどんどん増えており、大変便利に使わせていただいております！

引き続き、個人リポジトリの情報を整理したり、ほかの方が参加したりしやすくなるようにドキュメントを整備したり、逆に他のプロジェクトに関われるようになりたいなと思っております、