GitHub Discussions とは何か? 完全ガイド
2022年1月19日 // 2 min read
GitHub Discussions は、GitHub のパブリック リポジトリまたはプライベート リポジトリにコミュニティ フォーラムを導入し、コミュニティとのコミュニケーション、質問と回答、最新情報の共有などを簡単に行えるようにします。ここでは、GitHub Discussions について知っておくべきこと、ベスト プラクティス、他のオープン ソース プロジェクトで GitHub Discussions がどのように使われているのかを紹介します。
主な内容
GitHub Discussions の使用を開始する: GitHub Discussions をリポジトリで有効にする方法と一般的なユース ケース。
GitHub Discussions を使用するためのベスト プラクティス: GitHub Discussions をコミュニティへの参加ツールとして効果的に使うためのヒント。
GitHub Discussions と GitHub Issues: それぞれを使うタイミング: プロジェクトで Discussions と Issues を使うタイミングと方法、Discussion を Issue に (または Issue を Discussion に) 変える方法。
優れたソフトウェアの構築に必要なのはソース コードだけではありません。コミュニティの規模が拡大すれば、多くのことに時間が取られるようになります。ロードマップの計画、潜在的な機能に関するコミュニティとの協力、コラボレーターとの簡単な進捗状況の共有、新しいコントリビュータの獲得とオンボーディングなどがあります。
これらは全て、メンテナーとコントリビュータが一堂に会し、アイディアを出し合い、会話し、将来の計画を立案できる中心的な集まりのスペースがあれば解決できます。
それが、GitHub Discussions です。2020 年にリリースされた Discussions によって GitHub にコミュニティ フォーラムが導入され、オープン ソース コミュニティ、開発者チーム、企業は、コードのすぐ横で質問したり、アイディアを共有したり、互いに連携を深めたりすることを簡単に実現できます。
このガイドでは、GitHub Discussions の使用方法、ベスト プラクティス、他の GitHub 機能 (Issues など) をどのように補完してデベロッパーエクスペリエンス全体をサポートするのかなどについて説明します。
GitHub Discussions の使用を開始する: 基本
GitHub Discussions は共に何かに取り組んでいる開発者コミュニティ向けに作られています。自分のリポジトリ、つまり、既に作業しているコミュニティに直接配置されるため、他のウェブサイトでサードパーティ フォーラムを管理する際のコンテキスト切り替えを削減できるという、大きなメリットがあります。
また、自由形式の会話が可能な非同期のコミュニケーション プラットフォームにより、履歴情報や FAQ、機能のアイディアなどを簡単に保存できます。
リポジトリで GitHub Discussions を有効にする方法
Discussions は、管理者、メンテナー、または書き込みアクセス権限を持つユーザーがパブリック リポジトリまたはプライベート リポジトリで有効にできます。手順は次のとおりです。
- リポジトリ設定を開き、[機能] に移動します。
- [ディスカッション] の横にあるボックスをオンにします。
- ウェルカム投稿を作成してフォーラムを開始します。
これだけです。確信が持てなければ、こちらをご覧ください。
GitHub ユーザーがリポジトリで Discussions を有効にする動作を示す GIF
GitHub Discussions でできること: 一般的なユース ケースの例
Discussions では GitHub 内でコミュニティやコラボレーターに直接関与できます。作業を促進するために、ラベル付け、参考になった回答のマーク付け、賛成票を投じる機能なども用意されています。
オープン ソース コミュニティやチームが GitHub Discussions をどのように利用しているのかを一部紹介します。
- コミュニティの発表を作成する: 管理者、メンテナー、コントリビュータに関係なく、Discussions を使用して今後のリリースやロードマップの決定などについてコミュニティで発表できます。詳しくは、オープン ソース コミュニティ「Node」がそのロードマップをどのようにコミュニティに発表したのかをご覧ください。
- アイディアを共有してコミュニティからフィードバックを得る: 解決しようとしている問題についてフィードバックが必要な場合があります。また、将来のスプリントの一部として確認すべき新機能について、アイディアを共有することもあるでしょう。Discussions はシンプルで協力的なコミュニティへの参加を目的に作られています。オープン ソース コミュニティやチームの間で一般的なユース ケースでは、アイディアを共有したりフィードバックを得たりするために Discussions を使用しています (オープン ソース コミュニティ「Gatsby」がどのように使用しているのかはこちらをご覧ください)。
- 新しいリリースについて話し合う: 一部のオープン ソース コミュニティでは Discussions を使ってより広範なコミュニティからの新しいリリースに関する質問に回答しています。React チームが Discussions を使って最新のリリースに関する質問に回答し (リリース内容について少し説明を加えて)、大きな効果を得たことはこちらで確認できます。
- 重要な会話を固定してスポットライトを当てる: Discussions では、会話と発表をフィードの一番上に固定できるため、コミュニティやチームが重要な情報に簡単にアクセスできます。良い例として、Next.JS コミュニティでは、重要で役に立つ会話を Discussions ボードの上部に固定しています。
- コミュニティで話題のトピックを判断する: 特定の Discussions インスタンス内で、賛成票が投じられた数で会話を並べ替えることができます。これは日別、月別、年別、全期間別に実行できます。これは、どのような会話がコミュニティで最も関心を集めているのかを追跡する優れた方法です。
- Q&A の投稿で質問して回答を得る: プルリクエスト、Issue、直面している問題について質問がありますか? Q&A のディスカッションに投稿して回答を探してみましょう。一番の利点は、参考になった回答にマークを付けて、他のユーザーがすばやく見つけられるようにできることです。例については、jsPsych のコミュニティ ディスカッション ボードをご覧ください。ここには (参考になる回答にマークが付けられた) 多くの Q&A 投稿があります。
- エンジニアリング リソースを調整する: 一部のコミュニティで一般的な Discussions のもう 1 つのユース ケースは、チームのリソースとスプリント計画の調整です これ以外にも、ディスカッションから直接 Issues を作成して割り当てることができるため、スプリントを計画しやすくなります (詳しくは後述します)。
- 一般的なディスカッションを行う: コミュニティやチームに関与してもらうために、Discussions を使用した一般的な投稿でショップ (またはライフ) について話すことができます。たとえば、Next.JS のコミュニティでは Discussions を使用して、自社ソフトウェアを使用している企業やウェブサイトを紹介しています。
GitHub Discussions の使用とモデレートのベスト プラクティス
Discussions ではリポジトリ内にコミュニティ フォーラムがあるため、GitHub から簡単にコラボレーターとコミュニケーションしたりコミュニティを育成したりできます。
ただし、フォーラムの成功には、生産的で有益な会話を維持するモデレーションが必要です。小規模なチームで Discussions を使用している場合でも、大規模なオープン ソース プロジェクトの一部として Discussions を使用している場合でも、留意すべきベスト プラクティスをいくつか紹介します。
- ラベルを使ってスペースを整理する。Discussions はラベルをサポートしており、ニーズに合わせてカスタマイズできます。これらのラベルはあらゆるディスカッションに適用でき、重要な情報を表示したり、特定のディスカッションを検索しやすくしたり、重複するコンテンツを避けたりするのに役立ちます。
- Q&A ディスカッションで質問に回答した返信にマークを付ける。Discussions の一般的なユース ケースは、Q&A 投稿でチームやコミュニティからの回答をクラウドソースするのに役立ちます。ただし、質問をしたら、その質問に回答した返信にマークを付けてください。これは、重複コンテンツ (またはネクロ投稿) を避けるのに役立ちます。また、参考になった正確なコメントや返信に賛成票を投じるのも良いプラクティスです。
- Discussions を使って自動化をトリガーする: Discussions では GraphQL API がサポートされているため、GitHub Actions を使って新しい Discussions やコメント イベントから自動化をトリガーできます。一般的なユース ケースでは、新しいディスカッションやコメントが作成されたときにチャット アプリの通知をトリガーしたり、発表などの重要なディスカッションによる自動更新をウェブサイトに送信したりします。
- コラボレーターをモデレーターに変えてトリアージ権限を割り当てる。コミュニティの規模が十分に大きい場合、多くのコラボレーターをモデレーターに変えて Discussions インスタンスの円滑な運用を支援することもできます。これは、トリアージ権限をプロジェクト内のユーザーに割り当てることで実行できます。これにより、このユーザーはモデレーターとなり、回答のマーク付け、フォーラムの管理、リモート コンテンツの管理などを実行できます。
- トップソート機能を使ってトレンド上位の会話を見つける。Discussions フォーラムの規模が十分に大きくなると (Next.JS を参照)、毎日のアクティビティや投稿が大量に表示されるようになります。全ての会話に目を通す時間がない場合は、トップソート機能を選択して優先する時間枠 (日、週、月、年、または全期間) を設定することで、トレンド上位の会話を確認できます。
GitHub Discussions のスレッドで役に立つスレッドとしてマークされた回答を示す画像。
GitHub Discussions のスレッドで役に立つスレッドとしてマークされた回答を示す画像。
GitHub Discussions と GitHub Issues: それぞれを使うタイミング
GitHub Discussions を初めて使う開発者の間でよくある質問は、Discussions と Issues を使うタイミングの違いについてです。
簡単な答え: GitHub Discussions は意思決定にチームのコミュニケーションが必要な質問やアイディアに適していますが、Issues は定義された作業の一部です。
詳細な答え: あらゆるプロジェクトやスプリントには、話し合いが必要なことと、実行が必要なことがあります。Discussions は物事について話し合うためのものです。Issues は進行方向について決定した後に実行する必要がある作業をカタログ化するためのものです。
GitHub Discussions を使うタイミング
GitHub Discussions は、質問、アイディア、会話、コメント要求 (RFC)、リソース計画、発表などを共有するツールとして最適です。
GitHub Issues を使うタイミング
GitHub Issues は開始点と終了点が定義された実行可能な作業を追跡するために使用されます。これには、新機能、バグの修正、一般的なアップデート、エピックやスプリントの追跡などが含まれます。
Issues と Discussions はどちらも生産的で協力的なアクティビティを支援します。ただし、これらを併用する場合は、Issues とプル リクエストをアクティブな作業用に使用し、Discussions を会話、質問、コミュニティへの参加に使用することで、より効率化できます。
もう 1 つのメリット: Issue でディスカッションを参照し、作業の背景やコンテキストを提供できます。タスクを完了する前に追加情報や決定が必要な場合は、Issue をディスカッションに変換できます。
ディスカッションから Issue を作成する方法
Discussions は履歴情報、メモ、アイディアなどを保存する非同期のコミュニケーション プラットフォームアイデアを提供します。最大のメリット: ディスカッションから直接 Issue を作成できます。つまり、作業の一部となったメモや決定を直接 Issue に追加できます。
これを行うには、右サイドバーの [ディスカッションから issue を作成する] をクリックし、Issue を作成して別のユーザー (または自分) に割り当てます。
Issue をディスカッションに変換する方法
実際、会話や、実行可能なタスクを伴わないものについては、Issue をデフォルトのバケットとして使うユーザーもいます。また、Issue を作成してから、次に進む前にチームの決定が必要であることに気づくユーザーもいます。
この場合、Issue の右下にある [ディスカッションに変換] を選択することで、Issue をディスカッションに変換できます。
この方法で、新しいディスカッションのタイトル、説明、作成者を保持したまま Issue をクローズしてロックできます。
まとめ
GitHub Discussions は、機能のロードマップを計画する場合、作業中に何らかの質問をする場合、使用ソフトウェアを構築しているオープン ソース コミュニティに参加する場合など、オープン ソースとプライベートの両方が連携してコラボレーションするための中心的なスペースを全てのコミュニティに提供します。
Discussions には次の 3 つの目的があります。
- 一元化されたコミュニティ スペースを会話や質問を行うために提供する (Issues やプル リクエストをメンテナーが操作しやすくする)
- 新しいユーザーやコード以外のコラボレーター向けに場所を設けて、より大きなコミュニティに参加できるようにする
- プロジェクトのコントリビュータを示し、次世代のメンテナーの育成を支援する
パブリック リポジトリまたはプライベート リポジトリで今すぐ有効にしたり、関心のあるさまざまなオープン ソース コミュニティに参加したりしてみてください。
その他のリソース
Tags