こんにちは!TECH Street編集部です!
2024年3月21日(木)に開催した「GitHub勉強会」のイベントレポートをお届けします。2023年にも開催し、講師を担当していただいた大平さんを再びお招きして、GitHub最新情報をお話いただいたので、ぜひご覧ください。
登壇者はこちらの方々!
大平かづみ/フリーランス/ZEN Architects所属
早速、内容を紹介いたします!
では、大平さんよろしくお願いします!
大平:本日は、前回のGitHub勉強会以降の最新情報をお伝えします!
GitHub Copilotの最新動向
GitHub Copilotの機能
Code Completion
・Copilotによるコード補完。IDEで利用する。
Chat
・Copilotとコーディングに特化した会話ができる。エディタで表示しているファイルなどをコンテキストに含められる。IDEで利用する。
Chat in GitHub.com
・チャットをGitHub.comで利用でき、リポジトリをコンテキストとして指定し会話できる。
Knowledge base
・ドキュメントを含むリポジトリのセットを作成し、Copilotとの会話でコンテキストとして指定できる。
Pull request summaries
・Copilotにより、プルリクエストのサマリを生成する。GitHub.comで利用する。
In the CLI
・ターミナルで自然言語を用いて質問できる。対象は、GitHub CLI(gh)、Gitコマンド、一般的なシェルコマンド。GitHub CLIの拡張機能として提供される。
上図の水色部分(3段目〜5段目)に関しては、GitHub Copilot Enterprise上で利用可能です。
GitHub Copilotの利用形態
GitHub Copilot Individual
・個人アカウントで有効化して利用する。プロンプトと候補のデータの収集と利用の可否について、設定で変更できる。
GitHub Copilot Business
・OrganizationまたはEnterpriseで有効化して利用する。プロンプトと候補のデータは収集されない。
GitHub Copilot Enterprise
・2024年2月にGA。 Copilot Businessの機能に加え、「Chat in GitHub.com」が利用できる。ファインチューニングはadd-onになるそう。プロンプトと候補のデータは収集されない。
個人アカウントで使う場合はindividual版で、組織で使う場合はBusiness版を使います。大きな違いは、個人向けはデータ収集と利用について、自分で許可をする設定が可能です。Business版では、プロンプトとCopilotから返されたデータについては収集されません。そのため、組織としてより安全に使いたい場合はBusiness版の方が良いです。
その他、詳しい内容はGitHub featuresのホームページからもご覧いただけます。
次に上記で紹介した機能を、先ほどとは異なる視点から紹介していきます。
エディタから利用する
エディタから利用できるのは、コード補完とチャット機能です。
チャット機能ではコーディングに特化した会話ができるだけでなく、「ここをこのように変更してほしい」とお願いすると、エディタ上で差分表示して提案もしてくれます。
チャットでの会話も効率的にできて、スラッシュコマンドやコンテキスト変数、エージェントなどを使って、Copilotへ簡単に情報を渡すことができます。
GitHub.comから利用する
続いて、GitHub Copilot Enterpriseで使える「Chat in GitHub.com」について紹介します。
- リポジトリのインデックス
- ナレッジベース
- リポジトリのコードやプルリクエストの差分に対して会話
これら3つについてお話します。
ブラウザで使えること以外は、特に目新しいものはありません。
リポジトリのインデックス
任意のリポジトリを開いた状態で、下図の右上(赤丸で囲んだ)のチャットボタンを押すと、ポップアップで図10のコピーチャットが開きます。
ここでは、「このリポジトリについてチャットします」という形で、コンテキストをリポジトリに絞ってチャットすることができます。
もっと快適にリポジトリについてチャットしたいときは、下図の緑ボタンを押下して、インデックスを張る操作をしておくとレスポンスの質が上がるので試してみてください。
ナレッジベースの作成
まずセッティングで下図赤枠のナレッジベース(どのリポジトリでのナレッジを参照するか)を作ります。
チャットをする入力欄の左側に、ナレッジベースをアタッチするボタンがあります。
GitHub.comでコードについて説明させる
別の人が書いたプルリクエストでも、下図の黄緑図13枠のように範囲を選択して「explain」させることも可能です。
プルリクエストの差分について聞いたりできるので、レビューがしやすくなると思います。また、コードリーディングをするという使い方もできます。
Pull request summaries
プルリクエストのサマリーを作ることもできます。
プルリクエストを作るときにはディスクリプションを書くと思いますが、エディット欄にある「Copilot actions」のボタンでサマリーを選択することができます。
Content exclusionsについて
Business以上で使える機能として「Content exclusions」があります。
「リポジトリの中のこのファイルはコンテキストに含めないでほしい」という指定ができる機能です。企業で使用する場合に重要になってくる機能だと思います。
データの扱いが不安な方は、FAQ参照
「データの漏洩は大丈夫か」といった質問もたくさんされますが、FAQのページがあるのでそちらを確認してください。
https://github.com/features/copilot#faq
開発フローを支援する注目のアップデート
ここからは開発フローを支援する注目のアップデートについて紹介します。 まずはMarkdownで注釈が書けるようになりました。
Markdownで注釈が書けるように
- New Markdown extension: Alerts provide distinctive styling for significant content - The GitHub Blog
- Markdownで以下のように記述すると、注釈のようなスタイルで表示できるようになりました。
Rulesets(ルールセット)
- GitHub Repository Rules are now generally available - The GitHub Blog
- Branch protection rulesの後継になるだろう
- リポジトリ毎に設定できるし、Organizationで設定したルールセットを、配下のリポジトリに継承もできる
- Evaluateステータスを利用すると、ルールは強制されないが適用した場合の結果をInsightsで確認できる(Enterpriseのみ)
ルールセットの作成画面
下画像のようにブランチに対するルールを設定することができます。(タグやプッシュ(beta)に対するルールも設定できます。)
Custom properties(カスタム プロパティ)
次にCustom Propertiesの機能が使えるようになっています。
- Repository Custom Properties GA and Ruleset Improvements - The GitHub Blog
- Organizationで定義したプロパティをリポジトリに割り当てられる
・プロパティの値は、任意のテキストか、選択肢 - リポジトリ一覧でフィルタに利用できる
- ルールセットのリポジトリ指定に利用できる
マージ キュー
- Pull request merge queue is now generally available! - The GitHub Blog
- プルリクエストをキューに入れてFIFOでマージできる
- 実装するには、GitHub Actionsでmerge_groupトリガーを指定してワークフローを作成する
・プルリクエストのbaseブランチにマージした一時的なブランチが展開される
・ビルドやテストを行うことも可能 - Branch protection rulesまたはルールセットと組み合わせて利用する
頻繁にプルリクエストがマージされるようなプロジェクトの場合、コンフリクトが起きたり、待機時間が必要だったりと不都合が起きると思いますが、それを解決するのがマージキューです。
GitHub Codespacesホストイメージ更新
- codespaces host image upgrade - The GitHub Blog
- インストールされているDockerエンジンとDocker Composeパッケージのメジャーバージョンの更新など
アカウント、ログイン周りの改善
- マルチアカウントでログインできるように
・GitHub.com,モバイルアプリ、GitHub CLI
・Multi-account support on GitHub.com
・Log in with multiple GitHub accounts on GitHub Mobile
・Log in to multiple GitHub accounts with the CLI - Passkey対応
・Passkeys are Generally Available
アカウントが複数ある方にとっては利用しやすくなると思います。
認証方法もPasskey対応となりました。
Copilot in GitHub Support
困ったことがあったら、以下のサポートを使ってみてください。
GitHubActions関連の注目アップデート
続いてGitHub Actions関連のアップデートについて紹介します。
GitHub-hosted largerランナー
- GitHub-hosted larger runners for Actions are generally available
- GitHub Actions: macOS 14 (Sonoma) is now available
・macos-14- xlarge,macos-14-large - GitHub Actions and Larger Runners; Windows 11 Beta
GitHub-hosted largerランナーでは、費用はその分かかりますが、一般的なランナーよりもスペックの高いランナーを使えるようになりました。
GitHub-hostedランナー
- M1 macOS
・GitHub Actions: Introducing the new M1 macOS runner available to open source!
・GitHub Actions: macOS 14 (Sonoma) is now available - Arm,GPU(private beta)
・Accelerate your CI/CD with Arm-based hosted runners in GitHub Actions
・Run your ML workloads on GitHub Actions with GPU runners
こちらは通常版のランナーです。
Self-hostedランナー
Artifactsアクション v4
- GitHub Actions – Artifacts v4 is now Generally Available
- actions/upload-artifactとactions/download-artifactのv4がGA
- 10倍のパフォーマンス改善と新機能
- workflowではなくjobをスコープの対象にするようになった
- 並列実行からの保護
- 前バージョンと互換性なし
アクションがv4になり、パフォーマンス改善や新機能追加などいろいろと改善されました。もし古いバージョンを使っている人がいれば、最新のアクションに更新したほうがいいと思います。
全般
- JavaScriptアクションが動作する環境がNode.js20に
・GitHub Actions; All Actions will run on Node20 instead of Node16 by default - リポジトリでランナーの一覧が閲覧できるように
・GitHub Actions – Repository Actions Runners List is now generally available - Actions Fine Grained Permissions
- Azure private networking for GitHub-hosted runners – Public Beta
セキュリティ関連の注目アップデート
次にセキュリティ周りのアップデートについて、まずDependabotを紹介します。
Dependabot
依存関係をGitHubがスキャンをしてくれますが、その依存関係をグループ化して対処できるような機能が追加されました。
Secret scanning
「Secret scanning」はパブリックリポジトリ、もしくは有償プランを使っている場合はプライベートリポジトリでも使える機能です。
その中の「Push protection」はリポジトリにアップする前からシークレットを検出するために、プッシュする時に保護してくれる機能です。
Code scanning
解析ツールの提供と、解析結果の一元管理ができる機能です。
それにAIによる自動修正の機能が追加されました。
Code scanning - Default setup
解析ツールを適用するためにはアクションを使う必要がありますが、デフォルトでセットアップしてくれる機能もあります。更新も頻繁にあり、対応言語なども増えています。
Securityタブ - overview
Overviewタブではオーガナイゼーションが持っている配下のリポジトリを横断して見る画面が追加されています。
Securityタブ - Risk
Riskタブではリポジトリで発生したアラートの状態を見ることができます。
Securityタブ - Coverage
Coverageはスキャニングなどをきちんと適用しているかを確認できる画面です。
Securityタブ - Enablement trends
Enablement trendsはカバレッジを時系列で閲覧できる画面です。
最近はセキュリティに関する画面の更新が頻繁にされています。
GitHubの最新情報はここから
最後にGitHubの最新情報をまとめたリンクをご紹介します。
- GitHub Blog
- GitHub Changelog
- X(旧Twitter)
・GitHub(本家)
・GitHub Changelog
・GitHub Japan - ドキュメントも頻繁に更新されているので、時々眺めると吉
機能の更新が分かりやすく書かれているのはGitHub Changelogの方です。
それと、Chanelogのまとめをzennでまとめていますので、そちらもご確認ください。
ぜひ皆さんも積極的に活用して情報を追っていってください!
発表は以上です。
大平さん、ありがとうございました!
続いては、Q&Aコーナーです。
Q&Aコーナー
(Q)Github CopilotとCursorの使い分け結局どっちが生産性高いでしょうか、Git のGUIクライアントを使うかコマンドのみがいいのか。
Cursorは触ってないので、比較の話はできません。
GitHub Copilotは自身がもっているオープンソースの学習をしています。なので、GitHubがもつオープンソースに似たコードや機能が生成されます。どのような学習データを用いているかが、違いを把握する上での一つの視点になるかと思います。
(Q)もしチームにすでにコーディングガイドラインがある場合、GitHub Copilotを利用してそのガイドラインに従いながらコードを生成させることは可能でしょうか?
コードを生成する方法は、コード補間とチャットの2つがあります。コード補完を使う場合、そのIDEで使ってないものは使えませんが。IDE上で開いているテキストファイルは参照される可能性があります。明示的にガイドラインに従うコードを生成させたい場合は、そのコンテキストを含めるよう指示をすれば、可能かもしれません。「かもしれません」というのは、プロンプトの書き方次第で、意図した動きをしない場合もあるからです。Wordで書いたものは参照できないです。
エンタープライズ版を利用している場合、ガイドラインがリポジトリにあって、マークダウンで書いてあれば、ナレッジベースになるので、チャット機能でガイドラインに沿ったコードを生成できるはずです。まずやるべきは、ガイドラインをマークダウンで書くことです!コードと突合せができるように書いてあると、良いと思います!
(Q)GitHubを触ったことあるのですが深くは触ったことないです(ターミナルと連携させるくらいしかないです) もし本気でGitHubを知りたい場合、どういう勉強をしたほうがよろしいでしょうか?
Microsoft Learnで「GitHub」と検索してみましょう!ラーニングパスにまとめています。
<URL>
https://learn.microsoft.com/ja-jp/training/browse/
https://learn.microsoft.com/ja-jp/training/paths/az-400-manage-source-control/
ドキュメントもありますが、量が多いので、Microsoft Learnから始めるのが良いと思います!トレーニング講師もやってますので、ぜひお問合せを👍
(Q)テックストリートさんでIDEを学ぶイベントなんてどうですか?私は1年目でVS Codeしか使ったことないので他も気になります。かづみさんが一番使うおすすめIDEもきになります。
VS Codeは大好きです。C#はVisual Code 一択ですね。
(Q)Copilotの登場で、GitHubの扱いはどの程度インパクトがあったのでしょうか?弊社はまだ導入し始めて日が浅いのですが、社内研修にCopilot活用を入れられておらず、この先を考えると含めるのが必須でしょうか?
Copilotを便利に感じるタイミングが、初学者と玄人で違うそうです。つまずいたときに、チャットで聞いてヒントを出してもらえます。周りに参考にするコードが沢山あるから、それに倣ってコードを出力してくれるのでなじんだコードを出してくれるはずです。
ベテラン:コードを補間するときに、遅いと感じることがありますが、自分の専門分野外の業務では役立ちます。例えば、コマンドラインの書き方など、シェルスクリプトやYAMLなど、普段使わないコードとかを書くときに便利です!使う人の性質によって、メリデメにも違いが出ています。
(Q)GitHub Copilotを使ってコード生成させる場合に、ターゲットデバイスの環境の違いなどはどのように指定するのでしょうか? 例えばRaspberry Pi 3と5のコードを書き分けたいといった時に、素早く切り替えたり、設定をワンタッチで呼び出したりすることはできないのでしょうか?
プロンプトエンジニアリングの話になります。「このバージョンを使います」と明示的に伝える必要があります。
(Q)GithubCopilotに XML形式のデータを調査して、コードを書いてほしいのですが、それに近しいユースケースがありましたら簡単に実装方法を聞きたいです。
サンプルを作ってあげて、それを渡してプロンプトを書いてみましょう。
プロンプトエンジニアリングの話になります。
(Q)Actionsを試行錯誤する場合、やはりpublicリポジトリを作成して実験しますか?
目的によりますが、コストを抑えたいという話の場合、プライベートリポジトリでの無料枠を越えそうな場合はパブリックリポジトリを選択すると無料で利用できますね。GitHub Actionsの課金については、下記ドキュメントをご参照ください。
https://docs.github.com/ja/billing/managing-billing-for-github-actions/about-billing-for-github-actions
(Q)GitHub Copilotが、ビジネスにおいてどれだけ実用的なのかを知りたい
利用者のスキルレベルや利用している言語、開発形態に寄るので一概に言えませんが、GitHubが公開している調査については下記をご参照ください。
GitHub Copilot(コード補完)の調査についてはこちら(2022年当時のものなので古いです)
https://github.blog/jp/2022-09-15-research-quantifying-github-copilots-impact-on-developer-productivity-and-happiness/
GitHub Copilot Chatに関する調査結果はこちら
https://github.blog/jp/2023-10-20-research-quantifying-github-copilots-impact-on-code-quality/
また、日本でも様々な企業からレポートが公開されているので参考になるかと思います。以下にいくつか掲載します。「GitHub Copilot 導入」などで検索するとたくさん見つかります。
<ZOZO>
https://techblog.zozo.com/entry/introducing_github_copilot
<サイバーエージェント>
https://developers.cyberagent.co.jp/blog/archives/43059/
(Q)github actions + github copliotの組み合わせについて教えていただきたいです
GitHub Copilot(コード補完)でGitHub Actionsのワークフローを記述すると、感覚的には妥当な候補を提示してくれるのでタイピングの量が減って速く書けると思います。ただし、アクションを利用する場合はバージョンが古い場合が多いので、そこは人間が確認して更新、場合によってパラメータの調整などを対応してあげる必要はあります。
(Q)Copilotの活用例について教えていただきたいです。
コーディングだけでなく、READMEなど開発に関するドキュメントや、技術記事の執筆においても、文章を保管してくれてタイピングの量が減って楽です。
また、テスト用のデータセットなどを量産する場合も向いています。
(Q)まだ使ったことがないので、以下のような点が知れれば良いと思います。 GitHubCopilotの支援がどのくらい的確なのか セキュリティ的な点も踏まえた支援になっているのか
GitHub Copilot Individual/Businessでは、IDEで開いているファイルなどを参照して提案するので、既存のコードがあればより的確な提案をしてくれます。ただし、GitHub CopilotのベースはLLMなので、LLMにおける制約はCopilotでも発生します。(最新情報が反映されない、ハルシネーションなど)なお、GitHub Copilot EnterpriseによるGitHub Copilot Chat in GitHub.com を利用すれば、インデックスを生成したリポジトリを参照したり、ナレッジベースを利用してリポジトリにあるドキュメントを加味して会話できるので、より高い精度で会話できます。
また、Copilotの提案におけるセキュリティの観点では、ある程度のフィルタがかけられた状態で提案が返却されるように構成されているようです。ただし、LLMの制約もあり完璧に安全であるとは保証できないので、人間によるレビューは欠かせませんし、GitHubのセキュリティ製品(DependabotやCode scanningなど)や他のセキュリティ製品と組み合わせることでセキュリティリスクを抑える必要があるでしょう。以下のGitHub Copilot Trust Centerの「How GitHub Copilot aids secure development」の項目が参考になるかと思います。
https://resources.github.com/copilot-trust-center/
(Q)プルリクエストに対して自動でコメントをつけてくれるサービス(CodeRabbitなど)がありますが、企業で利用している例をご存知でしたら使用感など情報がありましたら共有いただきたいです。
GitHub Copilot Enterpriseのpull request summariesは最近GAされたので、まだ例を知りません。
また、他のサービスは私自身は利用したことがなく、他にも聞いたことがなく、ご期待にそえずすみません。
(Q)GitHubアクションを使用したメリットについて知りたい。
他にもCI/CDなどに利用できる自動化サービス(JenkinsやCircle CIなど)が多数ありますが、それらと比べてGitHub Actionsを利用するメリットは、GitHubにコードを置いて開発している場合に同じプラットフォーム内で自動化できることです。他のサービスで自動化をする場合、連携するために認証などを設定する必要があり、手間もあるし、セキュリティリスクにもなりえます。
(Q)github copilot enterpriseの効果的な利用法
GitHub Copilot Enterpriseでは、GitHub.com上でCopilot Chatを利用でき、そのChatではリポジトリにあるコードやドキュメントを会話に含められるようになります。すなわち、コードはもとより仕様書や設計書などのドキュメントもリポジトリに格納することで、Copilot Chatとの会話がより開発対象の文脈に従ったものとなります。
(Q)エンジニア超初心者活GitHub初心者なのですが、まずは何からGitHubを触る・学ぶのがおすすめでしょうか?
多くの教材がありますが、オンラインで学習しやすいMicrosoft Learn trainingをお勧めします。GitHubについてのカテゴリがあり、体系的に学習を進められます。GitHubやMicrosoft製品だけでなく、一般的なプログラミングのコンテンツもあるのでぜひご活用ください。
https://learn.microsoft.com/ja-jp/training/github/
(Q)GitHub Copilot初めて見ました、本当にすごいですね。扱う上での注意点もございましたら教えていただけますでしょうか
個人で利用できるCopilot Individualプランがありますが、GitHub・Microsoftによるデータの保持・利用について利用者の任意で有効/無効を選択できるようになってます。組織で利用する場合、このデータ保持・利用に懸念があるのであればCopilot Business以上のプランを利用することで一律保持・利用をさせないことができます。詳しくは、下記のCopilot製品ページのFAQの「Privacy」の項目をご参照ください。
https://github.com/features/copilot#faq
また、Copilot Business以上のプランでは、Content exclusionsを利用して指定したファイルを会話のコンテキストに含めないことができるので併せてご確認くださいませ。
https://docs.github.com/ja/copilot/managing-github-copilot-in-your-organization/configuring-content-exclusions-for-github-copilot
(Q)ChatCPTみたいで凄いですね!CopilotとChatGPT(Cursor)、どちらもAIでコードを生成、補完してくれるものだと思うのですが、GitHub上のコードについて詳しく知りたいとかであればCopilotの方を利用したほうが良いのでしょうか?
Cursorは利用したことがないのですが、Copilotとはまた違った利用体験だそうです。また、Copilot Enterpriseプランで利用できるリポジトリのコードやドキュメントの情報をコンテキストに含めたい場合は、GitHub Copilotが優勢かと思います。
(Q)Cursorは利用したことがないのですが、Copilotとはまた違った利用体験だそうです。また、Copilot Enterpriseプランで利用できるリポジトリのコードやドキュメントの情報をコンテキストに含めたい場合は、GitHub Copilotが優勢かと思います。
Copilot in GitHub Supportは日本語でも利用可能です。
(Q)Actionsのセルフホストランナーは例えばクロスコンパイル用のtoolchainをインストールした環境を用意してCI/CDを行いたい場合の機能でしょうか? それとも上記のユースケースはホステッドランナーでも既に実現可能でしょうか?
ActionsのGitHubホステッドランナーでも、toolchainをインストールすれば使える場合もあります。最近ではMacOSのM1やGPUのサポートもされています。それで難しい場合は、セルフホステッドランナーの方が扱いやすいかもしれません。ただし、セルフホステッドランナーを構築するインフラのメンテナンスコストは無視できないので、開発チームでのスキルや体制にもよるかと思います。
いかがでしたでしょうか、レポートの内容は以上です。
次回のイベントレポートもお楽しみに♪