GitHubの機能リスト(Sponsor,Discussions,Actions,Releases,Packages,etc...)
GitHubを本格的に使い始めました。すると機能が多くてなにがなにやら。そもそもPull requestsさえ、聞いたことはあるけど使ったことがなかったのでこの機会に調べてみました。
各機能はそれぞれ公式ドキュメントに画像付きで説明があるので探せば使えるようになるでしょう。しかし、機能一覧としてまとまっていると便利かなと思い公式ドキュメントへのリンク集として記事を書きます。(さすがに網羅はできてませんが)
セクションタイトルがリンクとなっていて、各機能に簡単な概要を書いていきます。
用語集
GitHubの用語集が用意されています。
右上にあるボタンたち
Sponsor
リポジトリに対してお金を渡すことができます。「チップ」「心付け」「投げ銭」のような1回限り(One-time)のもありますが、メインは最初からあった毎月(Monthly)支払いのスポンサーシップでしょう。金額はリポジトリ所有者が10個まで設定でき、それぞれの課金に対して謝礼を設定できることもできます。謝礼はプレイベートリポジトリのアクセス権付与やメーリングリスト登録とかがあるようです。
自分のリポジトリなら、Settings > General > Features > Sponsorships
で表示設定ができます。
Pin
自分のリポジトリやGistに対してピン留めができます。Pinを1つでもすると、自分のプロフィールページにあるPopular repositories
がPinned
に置き換わります。プロフィールに表示されるのは最大6つまでです。
Watch
Watch
すると、そのリポジトリのアクティビティ通知を購読できます。通知があると、右上の「🛎」(鈴アイコン)が変化します。
通知を受けるアクティビティは用意された組み合わせから選択可能です。
Notifications
GitHubにサインインしていない場合は、Watchの代わりにNotifications
が表示されます。クリックするとサインインが求められますが、サインインした後あらためてWatchボタンを操作する必要があります。
Fork
🍴フォークのように分岐を意味し、リポジトリを自分のアカウント下にコピーします。主に他人のリポジトリを変更し、所有者へ提案するのに使われます(Pull requests参照)
Star
⭐️スターはリポジトリメンテナに感謝を示すことでもあります。リポジトリ検索時にスター数順で並べるなど人気のバロメータとしても使われます。
スターしたものは、右上プロフィールアイコンからYour stars
をクリックすると確認できます。リストで管理でき、フィルターなどの検索もできます。
また、関連するコンテンツがお勧めとして個人用ダッシュボードに表示されることがあるようです。
タブたち
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)からの移行)
IssuesやPull 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
リポジトリの各種設定ができます。
右のパネル
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
Issues、Pull requests、Discussionsを分類するのにラベルが使えます。ラベルには名前のほか色分けができるので、視覚的に分かりやすくなります。
Milestones
milestoneはマイルごとに置かれる石で日本だと一里塚です(←いわれてみれば、そういう意味かと気付いた)。そこから転じて節目の意味があります。
Issues、Pull 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ファイルを置くとアカウントページが置き換わります。
Gist
ちょっとしたコードを共有するのにGist
が使えます。gistホームページから手軽に作れます。GistはGitリポジトリですので、フォークしたりクローンしたりできます。
なお、secret gist
でもプライベートではなく、URLが秘密になっておおっぴらに公開していないだけですので、アドレスを知っている人は見ることができます。
コーディング
Copilot
Copilot
を使うと、コーディング時にAIペアプログラマーからオートコンプリートスタイルの候補を取り入れることができます。各エディタの拡張機能として用意されています。現在のところVS Code, Visual Studio, JetBrains IDE, Neovimに対応しているようです。
Codespace
2022-11-10から無料でも月60時間使用でき、追加の使用量によって従量課金されるようです。Codespace
は有料プランのみ使用でき
Codespace
はクラウド上の開発環境で、どこでも開発を始めることができます。
その他
Webhook
Webhook
を使用すると、GitHub.comの特定のイベントをサブスクライブするGitHub AppsやOAuth Appsなどの統合を構築または設定できます。
Marketplace
Actionsのアクションや、Webhookで統合できるアプリなどがあるようです。検証済みのOrganization(組織)が所有するものは有料で販売もできます。
人をフォローする
フォローしたい人のプロフィールページに行きFollow
すると、その人のパブリック アクティビティについて通知されます。新しいリポジトリを作成したり、リポジトリにStarを付けたり、別のユーザーをフォローしたりすると、個人用ダッシュボードに表示されます。
Template repository
Settings > General > Template repository
にチェックをつけるとテンプレートリポジトリとして使用でき、そのリポジトリと同じディレクトリ構造、ブランチ、ファイルをもつ新しいリポジトリを作成できます。
まとめ
GitHubは非常に多くの機能があり、これからも増え続けていくでしょう。全部使う必要はないけど、楽になる機能があれば積極的に使用していきたいです。
Discussion