めざせGitHubマスター💪💪💪

リポジトリGETだぜ!(???)

はじめに

この記事はあくあたん工房 GWアドベントカレンダー 2020,2日目の記事です.ぜひ他の記事も見てみて下さい! gw-advent.9wick.com

GitHub便利だけど多機能すぎて把握しきれてないなぁと思ったので勉強も兼ねてまとめてみました.

基本的にリポジトリの管理者が使える便利機能をGitHubのタブの順に紹介していきます. 詳しい使い方とかまでは書けなかったので概要のみ紹介します.

f:id:ocucraqp:20200430194124p:plain

Code

概要

リポジトリの概要を書いたりリンクを貼ったりできます.

f:id:ocucraqp:20200430193512p:plain
f:id:ocucraqp:20200430193607p:plain

Topic

リポジトリにTopicを付けることができます. Topicをつけることで他の人が検索しやすくなったり,GitHubを使って研究している人がデータを集めやすくなったりするのでぜひ付けましょう

f:id:ocucraqp:20200430193849p:plain
f:id:ocucraqp:20200430193903p:plain

Issues

issueには様々なものを紐付けて管理できます.

f:id:ocucraqp:20200430195511p:plain

Assignees

誰がこのissueを担当するかを任命することができます. 任命できるのは自分か後述するCollaborator(協力者)のみです.

Labels

issueの内容が分かりやすくなるようにissueにラベルをつけることができます. デフォルトで9種類のラベルが用意されていて自分で新しく作ることもできます.

f:id:ocucraqp:20200430195424p:plain

Milestone

開発の目標や期日を設定することができます.

f:id:ocucraqp:20200430195657p:plain

issueへの紐付け

コミットメッセージissue番号を含めるとissueと紐付けることができます. issueの画面で関連するコミットが見えるので非常に分かりやすいです.

git commit -m "Update README.md #1"

ちなみにclose issue番号のようにするとissueを閉じてくれます.

git commit -m "Update README.md close #1"

Pull requests

こちらもIssueと同じくAssignees, Labels, Milestoneなどを設定できます. 追加で設定できるReviewers, Linked issuesについて説明します.

f:id:ocucraqp:20200430202015p:plain

Reviewers

名前の通りレビュー担当者を設定することができます.

Linked issues

issue と pull requestを紐付けることができます. 直接Linked issuesを選択してもいいんですが,先程のコミットメッセージのようにCommentに「Close #1」というふうにするとマージされたときにissueを自動で閉じたりしてくれます.

f:id:ocucraqp:20200430200958p:plain

File changed

そのプルリクでの差分を確認できます.

Actions

テストは自動化する時代がもうそこまできている! っていうかもう来ていますね. 今まで使ったことなかったので今回初挑戦しました.

f:id:ocucraqp:20200430202307p:plain
おすすめのworkflowみたいなのがでてきたのでTopicsとかから自動で判別してくれてるのかな? 分からないですが今回はDjangoリポジトリなのでDjangoのWorkflowを選択.
f:id:ocucraqp:20200430203025p:plain
ここで自由にテストを記述することができるっぽいです.

ほとんど使ったことがないため詳しく説明できないのですが,こちらの記事を見れば結構簡単に設定できそうです.

GitHubの新機能「GitHub Actions」で試すCI/CD | さくらのナレッジ

Projects

f:id:ocucraqp:20200430204007p:plain
この機能も初めて使いました. TrelloやPlannerのようなタスク管理機能ですね.
f:id:ocucraqp:20200430204152p:plain

GitHubでは基本的にはIssueなどで作業を管理すると思っていたのですが,Issueなどにはしないコードと関係ないような内容などを管理するのに使えそうです. あとここで作成したタスクをIssueにするなどの使い方もできます.

僕は普段Trelloを利用してるんですが,GitHubならではの機能もありますが,Trelloのほうが機能が充実してて使いやすいなと感じました. まだ機能を把握しきれていないだけかもしれないですが.

Wiki

簡易なWiki機能が利用できます.

f:id:ocucraqp:20200430205058p:plain
Markdownなどの形式で簡単な記事を書いていくことができます. チームのWikiがない場合や,プロジェクトに紐づけて管理する場合は便利そうですね.

Security

チームの参加者に見せるためのセキュリティポリシーを書いたり,依存関係のアラートを設定したりできます.

f:id:ocucraqp:20200430205823p:plain
セキュリティポリシーは有名なリポジトリを見ても書かれていない場合もあったので必ずしも設定してるわけではなさそうですし,READMEなど他の場所でセキュリティについて書いていたりしそうです.

依存関係のアラートはデフォルトで有効になっています. Dependabotというのが動いていて問題のあるライブラリなどを使用していると自動で更新してくれるプルリクを生成してくれて便利です. 現在サポートしているのは以下の言語です.

f:id:ocucraqp:20200430210946p:plain

Insights

誰がどれくらい貢献しているかや,このリポジトリを訪問した回数やcloneした回数などを確認できます.

Settings

リポジトリに関する設定が色々できます. リポジトリ名の変更や公開・非公開の設定などはここでします. 一部設定を紹介します.

Manage access

Collaboratorはここで招待できます. CollaboratorはReviewerやAssigneeに設定できる他,Wikiを書く権限などを付与できます.

Branch protection rules

Branchesから設定できます.

f:id:ocucraqp:20200430200709p:plain
設定したブランチにマージするプルリクに対し,レビューを必須にするなどの条件を設定できます.

Webhooks

ここを設定することでマージ時に自動でデプロイするなどを設定できるそうです.

その他

GitHub Pages

f:id:ocucraqp:20200430212641p:plain
github-pages
GitHubにpushしたリポジトリをサイトとして公開できます. 静的なサイトしか公開できませんが,HPとして使うには十分です. あくあたん工房のHPもこの機能で公開しています. 自分でもっているドメインを設定することもできます.

GitHub Pages を使ってみる - GitHub ヘルプ

最後に

改めて今まで全然GitHubを使いこなせてなかったなと思いました. 実際1人で開発する分には必要ないというか,使っていたら余計な労力が掛かりそうな部分もありました.

Actionsはすごく便利だと感じたので,今後は積極的に使っていきたいと思います.

Projects,Wikiなどは複数人で開発するときに有効活用したいです. もしかするとここらをきちんと書いておけば,外部からプロジェクトに参入してもらえるのかもしれません.

これであなたもGitHubマスター!
みんなもリポジトリGETじゃぞ〜〜!