Workshop

V4.1

本日の講師

ダニエル・チョ

シニアソリューションズエンジニア
GitHub本日のアジェンダ

0102

0304

GitHub Copilot 質疑応答
現状

ハンズオン

今後の動向 &まとめ

30 分

60 分

25 分

20 分

第1部

現状

AI原動

コラボレーション

安全なソフトウェアをビルド・スケール・リリースできる
AI原動の開発基盤

生産性

セキュリティ

外部連携とAPIスケール

開発
エンジニアの第一候補

生成AI系開発
ツール利用中の55%の開発エン
ジニアはGitHub
Copilotを選ぶ

75%の開発者
は 来年試した
いと言及

GitHub Copilot
を使ってコード業務を 55%
速く遂行

75% の開発エンジニアが仕事により満足

利用者数

AIの企業採用 20％以上のFortune 500
企業はGitHubの先駆者
Copilot を利用(リリースから1年未満時点)

37,000+ の企業はGitHub Copilotとともにソフトウェアを開発

自分のプロジェクトに特化したステートレスコード提案を提示
コメントをコードに変換

繰り返しコードの自動補完

代替手段の提示Chat
エディタ上のコンテキストを踏まえた、Copilotとのチャット

コーディングに関する質問への回答

コードの説明ユニットテストの生成

コードの修正提案

可読性の向上言語変換

GitHub Copilot / AI-Powered SDLC

世界で最も人気なIDE向けの拡張機能
IDE とターミナルから基盤まで

文脈
提案
LLM

GitHub Copilot

IDE ワークスペース

認証
1. 認証

及びラ

GitHub.com

2. Co

pilot用

イセン

ス確認

トーク

ン受信

3. 文脈（プロンプト）送信

Azure
OpenAI
Service

Copilot
Proxy

4. 提案の受信

IDE 拡張機能

データの流れIDE ワークスペース

GitHub 所有 Azure テナント
Copilot ProxyService•
•

認証
感情分析

文脈（プロンプト）(暴力的な表現検知等)

OpenAI
LLM••••

セキュリティフィルター
個人情報フィルター
感情分析
二重検知OSSフィルター

提案IDE 拡張機能

デモ

GitHub Copilot

Accenture社内の450人の開発エンジニアに対し6ヶ月間かけた GitHub Copilot 効果の調査結果
活動量

生産性

効率性

満足度

94%

90%

50%

96%90%88%

84%

90%

フロー状態が維持できたと報告した割合

調査に割いた時間の削減を実現した割合

より品質が高いコードがかけたと報告した割合

Copilot が提案した内容のうち利用した割合

ビルドの増加率成功したビルドの増加率

初日から成功した割合

より満足できた割合

第2部

質疑応答

よくあるご質問

出典:
https://github.com/features/copilot/
https://resources.github.com/ja/copilot-trust-center/

Q. GitHub Copilotが収集したデータは学習に使われますか？
A.

いいえ、GitHub Copilot Businessの場合は提案を生成するために収集した顧客データ（コード等）を学習やサービス改善に一切利用しません。
なお、GitHub Copilot Individualsの場合は契約時または個人設定にてテレメトリの設定を変更することによって収集したデータをサービス改善に利用される可能性があります。

Q. GitHub Copilotは学習したデータをそのまま検索してユーザに提示する仕組みでしょうか？
A.

いいえ、GitHub CopilotはOpenAI社にて開発されたGPT系モデルにて稼働している生成式事前学習済みの言語モデル型AIになります。
GitHub Copilotにて生成される提案は全てコードやコメント等の文脈を考慮したものであり、学習データに対して検索をかけて提案として表示する検索エンジンではございません。

Q. GitHub Copilotの学習データは何でしょうか？

A.

GitHub CopilotはOpenAI社のGPT系モデルを利用しております。学習デー
タはOpenAI社にて定めており、GitHubやMicrosoftによる介入や選別等は行っておりません。

Q. GitHub Copilotが生成したコードの所有者はGitHubになりますか？
A.

GitHub Copilotはコンパイラやペンのような道具です。GitHubはGitHubCopilotが提案する内容の所有権を一切所持しておりません。GitHub
Copilotを利用して作成しているコードの責任は作成者のものであり、本番環境で利用する前に緻密にコードをテスト、評価、そしてレビューすることを推奨しております。

Q. GitHub Copilot は外部認証を受けてますか？

A.

2024年6月時点ではGitHub Copilot BusinessはSOC 2 Type 1認証及びGitHubのISO/IEC 27001:2013認証の対象になっております。今後は更にGitHubのSOC 2 Type 2の認証対象に加えることが予定されております。

第3部

ハンズオン

ハンズオン
最初の始め方の紹介

注意: Copilotは確率的モデルであり、決定論的モデルではないハンズオン シナリオ

Pythonでじゃんけんゲームを作成
まずはじゃんけんゲームを作りながら様々なCopilotの使い方を学びます
別資料の案内に従いできるだけ多くの内容をカバーしますハンズオン資料:

https://github.github.com/workshops/copilot-for-dev-ja/index.html#1

第4部

今後の動向

GitHub のビジョン
統合された一つのエンタープライズ向け基盤

開発エンジニア向け
業界最先端のコラボレーションツール

すべての工程にセキュリティを実装

AI 原動

Accelerate Workflows / Copilot Business

GitHub Copilot
Business
ソフトウェアをAI と一緒に開発するおともに

55%
46%
15%

早くコードを書くのコードは AI が作成高いコード品質

開発: 25%

エンジニアの業務時間のうち75% は開発以外のタスク
計画: 75%

乗り越えるべき 課題
複雑なコードベース
断片的な知識共有・処理
長いオンボード期間
反復的な作業

厳しい納期
存在時間が長い歴史的なリポジトリ

知識の発見・共有・コラボレーション
不慣れなコードベースでの作業

コード再利用GitHub Copilot / AI-Powered SDLC

AI駆動なソフトウェア開発向けの GitHub
Copilot EnterpriseIDE, CLI,Mobileから基盤 へGA: 一般提供

将来2025年初期

Copilot
Enterprise

Custommodels

Plugins

コードとナレッジベースからドメインの専門知識をCopilot Chatにもたらす

SDK、API、およびあまり普及していない言語に関する知識を Copilot のコード補完モデルに追加

お好きなサードパーティのツール、データベース、サービスをCopilotに統合します

Add-onリポジトリとナレッジベースに特化

発見

解説

解析

この部分のコードはすでにどこかにありますか？

このコードは何をしていますか？

どこに注目すべきですか？

細かい手順で説明してください
なぜこれが必要ですか？

アンチパターンを使っている部分はありますか？

新たなユースケースでより大きな物をCopilot Enterprise

価値の実現までの時間短縮● 開発ベロシティ● 要件収集やプロジェクト計画● InnerSource
運用効率の改善● コード品質やベストプラクティスの遵守● アプリケーションのモダナイズ● 技術的負債の評価とパフォーマンス最適化
より効果的な人材流出防止● 同僚の支援とコラボレーション● アップスキリングと学び● メンタリングとコーチング

Copilot Business

Copilot Enterprise

コーディング環境内の Copilot

組織のソフトウェア開発ライフサイクル全体においてパーソナライズされた Copilot※ 要GitHub Enterprise Cloud$19 per user/month
●
●
●
●
●
●
●
●

コード補完
IDE と Mobile 内のチャット
CLI 補助脆弱性フィルター
コード引用検知
公開コードフィルター
第三者による訴訟に対する補償
エンタープライズレベルのプライバシー、ポリシー、管理制御$39 per user/month
●
●
●
●
●
●

Copilot Businessの全機能に加えて :コードベースに特化したチャット体験 *ドキュメント検索や要約
Pull request 要約
コードレビュー
ファインチューンモデル ***リポジトリをインデックス化し、 RAGにて文脈向上**Copilot Enterpriseのお客様向けのアドオン機能
リリース日未定

Copilot Individual
個人開発者やフリーランサー向けのコード補完やチャット機能等の Copilot
認証済みの学生、教師、そして人気の OSSプロジェクトメンテナー向けには無償で提供$

10 per month/$100 per yearhttps://resources.github.com/ja/copilot-trust-center/Appendix

プロンプトクラフティング

旅行会社と一緒に海外への旅行を計画していると仮定…

下記の情報がない限り適切な計画を作成することができないはずです:
●
●
●
●
●

予算
起点
旅行先
出発日・帰国日
直行便・乗り換え便の希望等

プロンプトクラフティング: プログラム（例えばGitHub
Copilotの裏にある大規模言語モデル）に対し自然言語による明確な指示を与えるプロセス

Copilotは何をプロンプトとして認識しているか？

• 質問、文書、またはCopilotにて実現してほしい説明文• ファイル内のコメントやCopilot Chatに対する入力値の形で受理

Copilot は確率論的 であり、決定論的ではない

Copilotの裏にある大規模言語モデル
は確率論に基づいたエンジンになるため、同じプロンプトに対して毎回同じ結果が返ってこない可能性があります効果的なCopilotプロンプトの原則

文脈

意思鮮明

具体的Copilotに要求するタスクをより理解されるためにプロンプトに含めている情報プロンプトを作成する際に自分が持っている特定な目標や目的曖昧でなく理解しやすい

プロンプト内の詳細や精度のレベル

Copilotを助ける
コード内のパターン変数名

メソッドシグネチャー

命名規則

自分の意思が伝わるように分かりやすい変数名を利用

明確なパラメータ名や型をメソッドシグネチャーで定義

変数名や関数名を規則的につける

total_attendees = 5

calculateAverage(intnum)

例: 変数名では必ずcamelCase (キャメルケース )を利用

リファクタリング時はChatに訊く！
BeforeAfterこれらの原則はプロンプト作成にどう関連しているか？

入力・出力の型

エラー処理

制御構造

入力値・出力値の型を明確に記載

エラー処理が必要な場面を明確に説明

制御構造を説明「入力値として文字列型の配列を使い、回文である場合は trueのブーリアン型を返す関数を作成して」「整数型の入力値が空の場合はexit処理を行い、入力値が整数ではない場合はエラーを発生させて」「整数の配列を入力値としてある場合、最初の素数を返す while
文を作成して。素数が配列にない場合はそのままループからexitするように処理して」

Copilotの提案精度を最大限にするためのアドバイス

ファイルの冒頭に要件のハイレベルな説明文を含める
明確な手順をその後に記載するとより効果的である

期待している内容を明確にするためプロンプトにいくつかの例を含める

操作中のファイルの要件に関連するプロジェクト内の別ファイルを開いたままにする最初のプロンプト

最初に成功
しなかったらもう一度試す!

二回目のプロンプト

Chatを活用してCopilot体験をより一層高める

GitHub Copilot Chat:
文脈を認識した
ChatGPTらしい会話
Copilotのコード補完機能と同様、Copilot
Chatは文脈を認識し対話形式で提案を表示

文脈

プロンプト作成での4原則はChat
鮮明にも適用意思

具体的スラッシュコマンド
/explain/tests/fix/workspace/help

選択したコードの仕組みを解説

選択したコードに対する単体テストを生成選択したコード内の問題に対する修
正案を提示

現ワークスペースに間する質問を訊く

Copilot Chatの使い方を解説Chatで新しいプロジェクトを始める●/new や /createNotebook で新しいワークスペースやノートブックを作成●

プロンプト作成の4原則に従って新しい機能の実装方法をChatから提案をもらう●

繰り返して試す! Chatから望ましい結果を得られない場合、Chatがどのように提案を修正できるかをフィードバックとして与える●/tests を使って単体テストを生成●

Chatを使って READMEファイルやドキュメント生成を行う既存のコードベースでChatを使う●

わからないコードがあれば /explain でCopilotに解説をお願いする●

Chatを使って 脆弱性の修復 や バグ修正 に関するアドバイスをもらう●

関連ファイルをIDE内で開き、無関係のファイルを閉じる●

テストの提案をChatに訊いて単体テストのカバー範囲を強化する●

Chatを使ってコードのリファクタリングや別の開発言語への変換を行う