🐱

GitHubの機能リスト(Sponsor,Discussions,Actions,Releases,Packages,etc...)

2022/10/31に公開

GitHubを本格的に使い始めました。すると機能が多くてなにがなにやら。そもそもPull requestsさえ、聞いたことはあるけど使ったことがなかったのでこの機会に調べてみました。
各機能はそれぞれ公式ドキュメントに画像付きで説明があるので探せば使えるようになるでしょう。しかし、機能一覧としてまとまっていると便利かなと思い公式ドキュメントへのリンク集として記事を書きます。(さすがに網羅はできてませんが)
セクションタイトルがリンクとなっていて、各機能に簡単な概要を書いていきます。

用語集

GitHubの用語集が用意されています。

右上にあるボタンたち

right-up buttons

リポジトリに対してお金を渡すことができます。「チップ」「心付け」「投げ銭」のような1回限り(One-time)のもありますが、メインは最初からあった毎月(Monthly)支払いのスポンサーシップでしょう。金額はリポジトリ所有者が10個まで設定でき、それぞれの課金に対して謝礼を設定できることもできます。謝礼はプレイベートリポジトリのアクセス権付与やメーリングリスト登録とかがあるようです。

自分のリポジトリなら、Settings > General > Features > Sponsorshipsで表示設定ができます。

Pin

自分のリポジトリやGistに対してピン留めができます。Pinを1つでもすると、自分のプロフィールページにあるPopular repositoriesPinnedに置き換わります。プロフィールに表示されるのは最大6つまでです。

Watch

Watchすると、そのリポジトリのアクティビティ通知を購読できます。通知があると、右上の「🛎」(鈴アイコン)が変化します。
通知を受けるアクティビティは用意された組み合わせから選択可能です。

Notifications

GitHubにサインインしていない場合は、Watchの代わりにNotificationsが表示されます。クリックするとサインインが求められますが、サインインした後あらためてWatchボタンを操作する必要があります。

Fork

🍴フォークのように分岐を意味し、リポジトリを自分のアカウント下にコピーします。主に他人のリポジトリを変更し、所有者へ提案するのに使われます(Pull requests参照)

Star

⭐️スターはリポジトリメンテナに感謝を示すことでもあります。リポジトリ検索時にスター数順で並べるなど人気のバロメータとしても使われます。
スターしたものは、右上プロフィールアイコンからYour starsをクリックすると確認できます。リストで管理でき、フィルターなどの検索もできます。
また、関連するコンテンツがお勧めとして個人用ダッシュボードに表示されることがあるようです。

タブたち

tabs

Code

ソースコードがブラウズできます。

Issues

issueとは(議論すべき)重要な話題/問題です。
作業内容を記載し、担当者を決めたり期限を設定したりしてタスク管理が可能になります。イシューは特定のコード行や議論のコメントなどからも作成できます。
いろんな所で#番号とするとissueへのリンクになります。

自分のリポジトリなら、Settings > General > Features > Issuesで表示設定ができます。

Pull requests

通称「プルリク」です。プロジェクトへの変更を提案して、リポジトリに取り込んでもらうときに使います。このタイミングでコードレビューができます。有料プランであれば事前にドラフト作成が可能です。また、Actionsを使って自動テストを回すこともできます。
プルリクはまずブランチを作ります。もし他人のリポジトリならForkをして、書き込みできるようにする必要があります。
マージの方法は3つあり、リポジトリのSettings > General > Pull Requestsで有効/無効を切り替えらます。

公式にブランチグラフ付きの説明があります。(英語なのでDeepLなど活用します)

  • Merge pull request: Featureブランチが取り込まれます。Featureブランチのそれぞれの履歴がどのブランチから来たかが残ります。
  • Squash and merge:(スクウォシュ、スクワシュ、押しつぶす、詰め込む)Featureブランチの変更を1つにまとめて、それだけを取り込みます。Fix bugとかの余計な変更がなくなりすっきりした履歴になります。
  • Rebase and merge: マージ先ブランチで作業していたかのように、Featureブランチの変更履歴がそれぞれ取り込まれます。

Discussions

Discussionsはコミュニケーションフォーラムです。質問をしたり、最新情報を共有したり、自由に議論できます。Issuesにする前の相談の場として活用できます。
カテゴリで管理したり、重要なディスカッションを固定したりして可視性を高めることができます。投票の作成も可能です。
またIssuesと相互変換できます。

自分のリポジトリなら、Settings > General > Features > Discussionsで表示設定ができます。

Actions

CI/CDを含むジョブを実行してくれます。
ジョブが実行されるサーバーのことをランナーと呼び標準ランナーは、Ubuntu Linux, Microsoft Windows, macOSがあるようです。必要なら自分自身でランナーをホスティングできます。標準ランナーは無料アカウントではパブリックリポジトリだけで使えますが、セルフホステッドランナーはプライベートリポジトリでも利用できます。詳しくは使用制限、支払い、管理を参照ください。

Actionsはリポジトリ下に.github/workflows/フォルダを作り、その中にYAMLファイルを置くことで動かせます。各ファイルが1つのワークフローとなり、複数置けます。
ワークフローの中に開始トリガーとなるイベントと、実行されるジョブが複数書けます。イベント一覧を見ると、いろいろあるようです。
ジョブの中にはステップが複数あります。そして1つのステップがアクションとそのパラメータをまとめたもののようです。
1つのジョブは1つのランナー上で実行されるので、その中の各ステップ間でデータを共有できます。通常はジョブを複数書いた場合、それぞれが並列に別のランナーで実行されます。ジョブ間で依存関係を設定すると、対応するジョブが終わるまで待機して、その後別のランナーでジョブを走らせることもできます。
最小の単位のアクション(コマンド)は自分でも作れるしマーケットプレイスにあるものも使えます。

Self-hosted runners

Actionsを実行するランナーを自前で用意できます。ランナーマシンは、GitHub Actionsのセルフホストランナーアプリケーションを使ってGitHubに接続します。
セルフホストランナーは、プライベートリポジトリでのみ利用することをお勧めします。 パブリックリポジトリだと悪意のある危険なコードを埋め込んだプルリクエストが作られ実行されることもあります。

Projects

ProjectsはGitHubでの作業を計画および追跡するためのツールです。(classicと新しい方式の2つがあるようです。projects(classic)からの移行
IssuesPull requestsを紐づけて追加情報を付与し、カンバン方式のボード表示やスプレッドシートで表示してプロジェクトの管理をしやすくします。組込みのメタデータ(担当者、マイルストーン、ラベルなど)だけでなくカスタムフィールドを作れ、アイテムをグループ化、ソート、フィルタできます。

プロジェクトは複数作成でき、リポジトリに紐づかない個人(または組織)用も作れ、その場合リポジトリを横断してタスク管理ができます。プロジェクトからドラフトイシューが作れ、好きなタイミングで正規のイシューに変換できます。

自分のリポジトリなら、Settings > General > Features > Projectsで表示設定ができます。

Wiki

WikiはFreeアカウントならパブリックリポジトリだけですが、有料アカウントならプライベートリポジトリでも使用できます。
Markdownやasciidocなど(対応マークアップ)を使用して書き、サーバーサイドレンダリングされたページが表示されます。ブラウザ上でページの追加・編集ができますが、.wikiを付与したリポジトリをクローンしてローカルで作業もできます。

git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.wiki.git

自分のリポジトリなら、Settings > General > Features > Wikisで表示設定ができます。

Security

リポジトリのセキュリティ情報です。

Insights

リポジトリの活動情報です。

Settings

リポジトリの各種設定ができます。

右のパネル

right panel

Releases

特定バージョンのソースコードやバイナリファイルを、ほかの人が使えるように配布します。Gitのタグに付加情報を持たせたものとなっています。付加情報はリリースノートやアセットファイル(ビルド済みパッケージとか)があります。
リリースノートは自動生成ができ、.github/release.ymlファイルで微調整できます。
あと容量制限ですが、添付する各アセットファイルは2GB以下で、全体での容量制限やダウンロード帯域制限はないようです。

Packages

Packagesはコンテナレジストリや各言語のパッケージレジストリのホスティングサービスです。これはプランによって容量が変わりますが、個人アカウントのFreeなら500MBのストレージとなっています。

対応しているものは以下です。

  • Container registry
  • Gradle registry
  • Apache Maven registry
  • npm registry
  • NuGet registry
  • RubyGems registry

Packageは名前からするとReleaseのアセットファイルとの違いが分かりませんでしたが、レジストリと分かれば腑に落ちました。

Environments

GitHub ActionsでカスタムCD(Continuous Deployment)ワークフローが作れます。その際に環境(production環境、staging環境、development環境とか)ごとに設定を変えるのにEnvironmentsが使えます。

作業管理

Labels

IssuesPull requestsDiscussionsを分類するのにラベルが使えます。ラベルには名前のほか色分けができるので、視覚的に分かりやすくなります。

Milestones

milestoneはマイルごとに置かれる石で日本だと一里塚です(←いわれてみれば、そういう意味かと気付いた)。そこから転じて節目の意味があります。
IssuesPull requestsの進捗を確認するのにマイルストーンが使えます。また、マイルストーン内のリスト並び順を変えることで簡易的な優先順位付もできます。

Webページ

Pages

PagesはFreeアカウントならパブリックリポジトリだけですが、有料アカウントならプライベートリポジトリでも使用できます。
静的サイトジェネレータJekyllを使ってWebサイトが作成できます。Markdownファイルから変換のほか、直接HTMLファイルを置くことができるのでJavaScriptも使用できます。
Pagesは通常gh-pagesブランチをサイトトップとして扱います。既存のGitHub Actionsを使わない場合は、指定ブランチの指定フォルダをサイトトップとして扱うことも可能です(たとえば、mainブランチのdocs/以下とか)。

似た機能のWikiは手軽にブラウザ上でもサイトを構築できますが、融通が効きません。PagesはHTML+CSS+JavaScriptでいろいろできます。

Profile README

GitHubユーザー名と同じパブリックリポジトリを作り、そこにREADME.mdファイルを置くとアカウントページが置き換わります。

https://zzetao.github.io/awesome-github-profile/

Gist

ちょっとしたコードを共有するのにGistが使えます。gistホームページから手軽に作れます。GistはGitリポジトリですので、フォークしたりクローンしたりできます。
なお、secret gistでもプライベートではなく、URLが秘密になっておおっぴらに公開していないだけですので、アドレスを知っている人は見ることができます。

コーディング

Copilot

Copilotを使うと、コーディング時にAIペアプログラマーからオートコンプリートスタイルの候補を取り入れることができます。各エディタの拡張機能として用意されています。現在のところVS Code, Visual Studio, JetBrains IDE, Neovimに対応しているようです。

Codespace

Codespaceは有料プランのみ使用でき2022-11-10から無料でも月60時間使用でき、追加の使用量によって従量課金されるようです。
Codespaceはクラウド上の開発環境で、どこでも開発を始めることができます。

その他

Webhook

Webhookを使用すると、GitHub.comの特定のイベントをサブスクライブするGitHub AppsOAuth Appsなどの統合を構築または設定できます。

Marketplace

Actionsのアクションや、Webhookで統合できるアプリなどがあるようです。検証済みのOrganization(組織)が所有するものは有料で販売もできます。

人をフォローする

フォローしたい人のプロフィールページに行きFollowすると、その人のパブリック アクティビティについて通知されます。新しいリポジトリを作成したり、リポジトリにStarを付けたり、別のユーザーをフォローしたりすると、個人用ダッシュボードに表示されます。

Template repository

Settings > General > Template repositoryにチェックをつけるとテンプレートリポジトリとして使用でき、そのリポジトリと同じディレクトリ構造、ブランチ、ファイルをもつ新しいリポジトリを作成できます。

まとめ

GitHubは非常に多くの機能があり、これからも増え続けていくでしょう。全部使う必要はないけど、楽になる機能があれば積極的に使用していきたいです。

Discussion