「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
ユニット †
- Mitigate AI risks 3 min
AIリスクの軽減
- Microsoft and GitHub's six principles of responsible AI 3 min
マイクロソフトとGitHubの責任あるAIの6原則
- 公平性: AI システムはすべての人を公平に扱う必要があります。
- 信頼性と安全性: AI システムは信頼性と安全性を備えて動作する必要があります。
- プライバシーとセキュリティ: AI システムは安全でプライバシーを尊重する必要があります。
- 包括性: AI システムはすべての人に力を与え、人々を関与させる必要があります。
- 透明性: AI システムは理解可能でなければなりません。
- 説明責任: 人々は AI システムに対して説明責任を負うべきです。
※ AI-900と同じ内容
Knowledge check& summary †
- Knowledge check 3 min
- Summary 3 min
GitHub Copilotの紹介
ユニット †
- GitHub Copilot, your AI pair programmer 2 min
GitHub Copilot、あなたのAIペアプログラマー
- GitHub Copilot features
- Copilot for chat
- Copilot for pull requests
- Copilot for the CLI
- GitHub Copilot Enterprise
・GitHub Enterprise Cloud を通じて組織で利用
・GitHub Copilot Business+組織向けのパーソナライゼーション レイヤー(RAG的な)
- Interact with Copilot 2 min
Copilotとの対話
- Inline suggestions
- Multiple suggestions
- Inline chat
- Copilot chat
- Command palette
- Comments to code
- Explanations
- Automated test generation
- Set up, configure, and troubleshoot GitHub Copilot 7 min
GitHub Copilotのセットアップ、設定、トラブルシューティング
- VS Code で GitHub Copilot を構成する
- GitHub Copilot 用の VS Code 拡張機能を追加する
- VS Code で GitHub Copilot を有効または無効にする
- VS Code でインライン提案を有効または無効にする
- VS Code で GitHub Copilot のトラブルシューティングを行う
Knowledge check& summary †
- Knowledge check 5 min
- Summary 1 min
Exercise †
ユニット †
- Prompt engineering foundations and best practices 7 min
迅速なエンジニアリングの基礎とベストプラクティス
- 迅速なエンジニアリングの原則
- Single(単一)
- Specific(具体的)
- Short(短い)
- Surround(囲う)
- 迅速なエンジニアリングのベストプラクティス
- 十分な明確さを提供する
- 詳細を十分に伝える
- 学習のための例を提供する
- アサートと反復
- Copilotがプロンプトから学習する方法
- Zero-shot learning
- One-shot learning
- Few-shot learning
- GitHub Copilot user prompt process flow 5 min
Copilot がユーザーのプロンプトからコード提案するまでのすべての手順
- 1. 安全な迅速な伝送とコンテキスト収集
エディタで開いているタブの周囲のコード、ファイル、コンテンツを考慮。
- 2. プロキシフィルター
プロンプトインジェクションなどのブロック
- 3. 毒性フィルタリング
生成内容に問題や個人データが入らないようにフィルタリング
- 5. 後処理と応答の検証
コード品質、一致する公開コード (オプション) のチェック
- 6. 提案の伝達とフィードバックループの開始
ユーザーのアクションに基づいて学習/改善
- GitHub Copilot コード提案のデータ処理
エディタのCopilot は、プロンプトを保持しない。
- GitHub Copilot チャットのデータ処理
- フォーマット:生成された応答を細心の注意を払ってフォーマット
- ユーザー エンゲージメント:チャット インターフェイスは会話履歴を維持
- データ保持:入出力からコンテキストを 28 日間保持
- GitHub Copilot Chat でサポートされているプロンプトの種類
- 直接的な質問:問題に関する具体的な質問
- コード関連のリクエスト:生成、変更、説明
- 自由形式の質問:概念を探ったりガイダンスを求めたり。
- コンテキスト プロンプト:カスタマイズされたサポートを求める。
- 限定されたコンテキストウィンドウ
- 4k トークンのコンテキスト ウィンドウで動作
- 通常、約 200-500 行のコードまたは最大数千のトークンの範囲
- プロンプトを作成するときはコンテキスト ウィンドウの制限に注意
- GitHub Copilot Large Language Models (LLMs) 4 min
GitHub Copilot大規模言語モデル(LLM)
- GitHub CopilotにおけるLLMによるコーディングに関する提案
- LoRA(フルファインチューニングより軽量な代替手段)の微調整
Knowledge check& summary †
- Knowledge check 6 min
- Summary 2 min
ユニット †
- The basics
ゴースト テキストは無視するか、Tabキーを押して受け入れ。
- Chatting
左側のサイドバーにあるチャット アイコンで左ペインにインターフェイスが開く。
- Using inline chat
Windows ではCtrl+iでアクセス
- Slash commands
Command paletteと比較し、コーディング中に簡単かつ即座に利用できる
- Agents
@terminal、@workspace、@vscodeなどのコンテキストを使用して質問
- Applied GitHub Copilot techniques 3 min
GitHub Copilotの応用テクニック
- 暗黙のプロンプト:inline chat+Slash commands
コマンドの後ろにプロンプトを入力しないコマンド(実際は、コードからプロンプトを推測
Exercise †
https://github.com/codespaces/new/MicrosoftDocs/mslearn-advanced-copilot
- Exercise - Set up GitHub Copilot to work with Visual Studio Code 5 min
演習 - Visual Studio Codeで動作するようにGitHub Copilotをセットアップする
- Exercise - Update a web API with GitHub Copilot 5 min
演習 - GitHub Copilot を使ってウェブ API を更新する
Knowledge check& summary †
- Knowledge check 5 min
- Summary 1 min
ユニット †
- Code completion with GitHub Copilot 6 min
GitHub Copilotによるコード補完
- サポート言語:Python、JavaScript、Java、TypeScript、Ruby、Go、C#、C++
- インテリセンス:自動提案、複数の提案パネル(Windows or Linux: Alt+] (next), Alt+[ (previous))
- 活用ポイント:メソッドの実装、命名規則、書式設定、コメント スタイル、デザイン パターン
- コメントを組み込んで提案を強化
- 自然言語で書かれたコメントからコンテキストを分析して理解
- 様々な種類のコメント:インライン、ブロック、TODOコメント、ドキュメンテーション文字列(API、Docstrings)
- コメント駆動型コード生成:関数実装、コード補完、変数命名、アルゴリズム選択
- 応答改善方法
- スコープ参照:ファイル参照(#file コマンド)、環境参照(@terminal、@workspace、@vscode)
- Slash commands:クエリの意図を素早く指定(生成:/generate、説明:/explain、文書化:/doc、修正:/fix、性能改善:/optimize、テスト生成:/tests)
- Slash commandsとスコープ参照と環境参照(Agents?)を組み合わせて使用できる。
- フィードバック共有
- 提案にマウス カーソルを合わせると、賛成ボタンと反対ボタンが表示される。
- 提案が役に立ったと評価、👍️、役に立たなかったと評価👎
- GitHub Copilot for the Command Line 5 min
コマンドラインのGitHub Copilot
- シェル用のGitHub Copilot(コマンド)
gh copilot xxx(ghcx)
- 設定オプション
- エイリアス設定: gh copilot explain → ghce、gh copilot suggest → ghcs
- フィードバック:提案を改善するためにユーザーからのフィードバックを奨励
- 組織設定:管理者は特定の機能へのアクセスを有効または無効に
- データ処理:使用状況データを保持して製品の改善に使用するかどうかを設定
Knowledge check& summary †
- Knowledge check 15 min
- Summary 5 min
ユニット †
- Explore GitHub Copilot plans and their associated management and customization features 5 min
GitHub Copilotのプランと、関連する管理およびカスタマイズ機能を紹介します。
- 管理ポリシー機能
- Free & Pro:パブリックコードフィルターのみ有り
- Business :GitHub Enterprise Cloud不要(カスタマイズ機能に関係)
- Enterprise:GitHub Enterprise Cloud必要(すべての機能をサポートする)
- カスタマイズ機能
- Free & Pro & Business:チャットで組織コード、組織KBをRAGる機能は無し
- Enterprise:すべての機能をサポート(GitHub Enterprise Cloudによる)
- 組織の料金プラン選択に重要な要素
- Business/Enterpriseは、より強力なプライバシー制御を提供
- Business/Enterpriseは、機密データを組織のプライバシー ポリシーに従って処理
- データの収集と保持:GitHub Copilotがプロンプトと提案を収集して保持するかどうかを選択
- IP補償とデータ プライバシーは、法的、セキュリティ、顧客の問題を回避するために重要
- Explore contractual protections in GitHub Copilot and disabling matching public code 5 min
GitHub Copilotにおける契約上の保護と、公開コードとのマッチングを無効にする方法を探る
- IP(知的財産)補償:Business/Enterprise プランでは提案が第三者のIP権利を侵害した場合、GitHub が法的責任を負う(一致する公開コード設定をブロックする設定が必要)
- 一致する公開コード設定をブロックする設定は、GitHubプロフィール[Your enterprises]/[Your organizations]→[settings]→[Copilot]→[提案]のアタリで設定できる。
- データ保護契約 (DPA):データ プライバシー規制への準拠を保証するために講じられる対策を概説した DPA を提供。
- GitHub Copilot トラスト センター:GitHub Copilot の仕組みに関する詳細な情報を提供。
- Manage content exclusions 7 min
コンテンツ除外の管理
- コンテンツ除外がコード提案に与える影響
- 当該ファイルではコード補完は利用できなくなる。
- 当該ファイルの内容は、他のファイルのコード補完の提案には反映されない。
- 当該影響を受けるファイルの内容は、GitHub Copilot Chat の応答には通知されない。
- コンテンツ除外の設定方法
- 組織のコンテンツ除外を設定する:一致する公開コード設定をブロックする設定と同じ場所
- リポジトリのコンテンツ除外を構成:リポジトリのsettings
- コンテンツ除外の制限
- IDEの制限:一部の統合開発環境 (IDE) ではコンテンツの除外が適用されない場合がある。
- セマンティック情報:除外されていないファイルから除外されたファイル情報を引き続き使用することがある。
- ポリシー範囲:コンテンツ除外設定は、コンテンツ除外を構成する組織のメンバーにのみ適用される。
- Troubleshoot common problems with GitHub Copilot 5 min
GitHub Copilotのよくある問題のトラブルシューティング
- コードの提案がありません
- インターネット接続を確認
- Copilot 拡張機能を更新
- IDEの互換性を確認
- コンテンツの除外を確認
- コンテンツの除外が期待どおりに機能しない
- 除外の遅延適用
- ポリシー範囲が不十分
- IDE固有の制限
- コードの提案が不十分
- 明確なコンテキストを提供
- Copilotコマンドの使用
- プロンプトの長さを調整
Knowledge check& summary †
- Knowledge check 5 min
- Summary 1 min
詳細 †
※ 以下、概要(GitHub Copilot の基礎 - AI ペア プログラマーの理解)との差分情報のみをポイント
ユニット †
- Examine AI tools from GitHub, OpenAI, and Microsoft 10 min
GitHub、OpenAI、マイクロソフトのAIツールを検証する
- Examine GitHub Copilot tools, benefits, and limitations 6 min
GitHub Copilotのツール、利点、制限を調べる
- 制限
- 限定された範囲:複雑なコード構造やあまり知られていない言語、設計、アーキテクチャは処理できない場合がある。
- 潜在的なバイアス:トレーニング データにバイアスが存在する場合、GitHub Copilot はバイアスを永続化する可能性がある。
- セキュリティリスク:慎重に使用しないと、機密情報や脆弱性が潜在的に公開される可能性がある。
- 公開コードと一致する:トレーニング セットのコードと一致するコードを生成する確率は低いが0ではない(ブロック機能あり)。
- 不正確なコード:意味的/構文的に正しくない無効なコードを生成する場合がある。
- コーディング以外のトピックに対する不正確な応答:コーディング以外の質問に答えるようには設計されていない。
- Examine the autocomplete features of the GitHub Copilot extension 10 min
GitHub Copilot 拡張機能のオートコンプリート機能を検証する
- オートコンプリート(コード補完)の提案候補を生成
- 「int addInt(」と書くと、後続のメソッドのシグネチャと実装が色付きの構文強調表示なしで表示されるのでTabキーで受入、Escキーで拒否
- もう少し複雑な「int addPrimeNumbersInNumericList?(」と書いて試してみる。すると、定義のないisPrimeメソッドが使用されたコードが提案される。
- Tab キーで受入後、addPrimeNumbersInNumericList?メソッドの下に空白行を入力すると、GitHub Copilot はisPrime使用できるメソッドを提案する。
- オートコンプリート(コード補完)の提案候補を管理
- [承認]を選択して、提案を(完全に)承認(ショートカットは「Tab」)
- 「単語を受け入れる」を選択して、提案を部分的に受入(ショートカットは「Ctrl + >」)
- 「単語を受け入れる」の右側にある省略記号 (...) から「行を受け入れる」「ツールバーを常に表示」「補完パネルを開く」オプションを選択可
「行を受け入れる」:候補の行全体を受入、「常にツールバーを表示」:常にツールバーを表示、「補完パネルを開く」:[提案]タブで複数の候補を表示。
- 「<」/「>」を選択して代替候補を表示(ショートカットは、「Alt + [」/「Alt + ]」)
- 提案タブを使用して複数の提案を表示
- 最初のオートコンプリートの提案に満足できない場合、タブを開き、より多くのオプションを表示し適切なものを選択できる。
- 「補完パネルを開く」:[補完パネルを開く]を選択(ショートカットは「Ctrl + Enter」)すると[提案]タブに最大10件の提案が表示される。
- 提案を受け入れるには例えば最初の「suggestion 1」の下の「Accept suggestion 1」ラベルを選択。提案を拒否するには、タブを閉じる。
- Examine the AI assistance features of the GitHub Copilot Chat extension 14 min
GitHub Copilot Chat拡張機能のAI支援機能を検証する
- GitHub Copilot Chat のユースケース
- コードの説明と文書化
- コーディングに関する質問への回答
- エラーや問題のコンテキストに基づいて解決策&スニペットを提案
- メソッドのシグネチャと本体に基づいて、ユニット テスト ケースの作成を支援
- 既存のコードベースの(品質、信頼性、性能、セキュリティについての)改善を提案
- Visual Studio Code での GitHub Copilot チャット
- チャット・ビュー(メニュー・バーにある[チャットを開く]から、もしくは「Ctrl + Alt + I」)
「in the selected code, what does sum represent?」などと選択中のコードに対して質問できる。
- インライン・チャット(コンテキスト・メニューの[Copilot]→[Editor Inline Chat]から、もしくは「Ctrl + I」)
・エディターにインラインのインターフェイスが表示され、そこで質問を Copilot に尋ねる。
・前述のnumbers生成コードを選択肢た状態で、インラインのインターフェイスを表示させ、
「Update this code to ensure that numbers doesn't include any duplicates」と問い合わせる。
・選択中のコードを更新する提案を「受入」「破棄」「再実行」から選択してコーディングを続行する。
- スマート・アクション(コンテキスト・メニューから選択)
・説明(Explain):選択したコードの自然言語による説明を生成。
・修正(Fix):選択したコードの修正を提案。
・レビューとコメント(Review and Comment):選択したコードのコード レビューを提供。
・ドキュメントの生成(Generate Docs):選択したコードのドキュメントを作成。
・テストの生成(Generate Tests):選択したコードの単体テストを作成。
・場合によって[レビューとコメント]→「修正」のようにスマート・アクションを繰り返して対応したりする。
- クイック・チャット(メニューからクイック・チャット、もしくは「Ctrl + Shift + Alt + L」)
- GitHub Copilot Chatでのプロンプト構築
・冒頭で使用する環境参照(@workspace、@vscode、@terminal)
・冒頭で使用するSlash commands(/clear、/new、/help、/doc、/explain、/tests、/fix、/newNotebook)
・環境参照とSlash commandsは組み合わせるときは「@workspace /explain: ...」のようにして使う
・プロンプト中でチャット変数(#editor、#selection、#file、#terminalSelection、#terminalLastCommand?)
Exercise †
- Exercise - Install GitHub Copilot extensions for Visual Studio Code 6 min
エクササイズ - Visual Studio Code用のGitHub Copilot拡張機能をインストールする
- GitHub Copilotサブスクリプションを設定
- 個人の GitHub アカウントを使用して、GitHub Copilot Pro のサブスクリプションを設定
(月間/年間/30日間の、2,000回のコード自動補完と50件のチャット/月の無料トライアル サブスクリプション)
- 教育者、学生、および選ばれたオープンソースのメンテナーは、Copilot Pro を無料で受け取ることができる。
- GitHub アカウントが組織を通じてライセンスされている場合は、組織の所有者によってサブスクリプションに割り当てられる。
- Visual Studio Code 用の GitHub Copilot 拡張機能を設定
- Visual Studio Codeと、GitHub Copilot、GitHub Copilot Chat 拡張機能をインストール
- Visual Studio Code から GitHub にサインイン(Visual Studio Codeの認証アカウントと異なる場合)
- Exercise - Configure GitHub Copilot extensions for Visual Studio Code 10 min
練習 - Visual Studio Code用のGitHub Copilot拡張機能を設定する
- GitHub Copilotを有効または無効にする
- Visual Studio Code で、拡張機能ビューを開く
- インストールされている拡張機能のリストで、GitHub Copilotを見つける。
- GitHub Copilot 拡張機能の歯車アイコンから有効化と無効化のオプションを表示して選択
- Visual Studio Code で GitHub Copilot と Copilot Chat を構成
- 拡張機能の設定にアクセスする方法
・Manageアイコンを使用して、Visual Studio Code の設定タブを開き、拡張機能を選択し、Copilotを選択。
・GitHub Copilot ステータス アイコンを使用して GitHub Copilot ステータス メニューにアクセスし、[設定の編集]を選択。
- GitHub Copilot拡張機能の設定を構成
・利用可能な設定のリストを確認し「拡張機能」ラベルの下で、最初の Copilot 拡張機能を選択。
・GitHub Copilot の設定には次のオプションが含まれる(自動補完を有効にする。指定した言語の Copilot 補完を有効または無効にする。)
・「拡張機能」ラベルの下で、2 番目の Copilot 拡張機能を選択。
・GitHub Copilot Chat の設定には、プレビューと実験的なオプションが含まれ必要に応じ、エクスペリエンスをカスタマイズする。
- GitHub.com で GitHub Copilot 設定を構成
・個人アカウント、組織アカウントを通じて管理できる。
・サブスクリプション管理、プロンプトと提案の保持の構成、パブリック コードに一致する提案の許可またはブロック
- GitHub Copilot のキーボードショートカット
・Visual Studio Code でデフォルトのキーボード ショートカットを使用できる。
・キーボード ショートカット エディターで特定のコマンド毎にショートカットを再バインドできる。
Knowledge check& summary †
- Knowledge check 10 min
- GitHub Copilot は開発者に提案を提供することでの生産性を向上させる AI ペア プログラマー。
- オートコンプリートには受入、破棄、代替の3つのオプションがあり、タブで他の複数の提案を表示できる。
- 環境参照(@workspace、@vscode、@terminal)でコンテキストを強化するコンテンツを見つけ易くする。チャット変数はコンテンツをポイント。
- テストコード生成:✗「ユーザーの個人的なコーディング スタイルに基づいて」◯「エディター内のコードまたは選択されたコードに基づいて」
- 言語サポートは既定で全て有効で、plaintext、markdownは無効:{ "": true, "plaintext": false, "markdown": false, "scminput": false }
ユニット †
- Examine the "document" and "explain" features of GitHub Copilot Chat 7 min
GitHub Copilot Chatの「ドキュメント」と「説明」機能を調べる
- Visual Studio Code で GitHub Copilot Chat にアクセスする
チャット・ビュー:、インライン・チャット、スマート アクション、クイック・チャット
- GitHub Copilot Chat を使用して説明を生成する
プロンプト作成には、環境参照、Slash commands、チャット変数などを組み合わせて使用できる。
- チャット・ビュー:@workspace /explain Explain this project
- チャット・ビュー:@workspace /explain Explain the dependencies of this project
- チャット・ビュー:@workspace /explain #file:program.cs Explain how this file is used in the project
- インライン・チャット:/explain #selection Explain how this method works
- インライン・チャット:/explain Explain this code block
- チャット・ビューよりインライン・チャットの方がスコープが狭い事が多いので、環境参照ではなく選択されたコードを使用している感じか。
- GitHub Copilot Chat を使用してドキュメントを生成する
- インラインド・キュメントを生成する
・GitHub Copilot Chat
・インライン・チャットに/docコマンドを入力
・Generate Docsスマート・アクションを使用して選択したコードを説明
- GitHub Copilot Chat の出力を確認して修正する。
・出力の正確性と完全性を確認
・プロンプト(コードや質問)と一致していることを確認
・エラーや不正確な部分を修正し、コードの動作と目的が正確に反映されるようにする。
・出力に追加情報またはコンテキストを追加して、より包括的なドキュメントを提供する。
Exercise †
- Visual Studio Code環境でサンプルアプリを準備する
- リンクからサンプル アプリを含むSampleApps?.zipファイルをダウンロードして解答する。
- Exercise - Generate code explanations using GitHub Copilot Chat 17 min
演習 - GitHub Copilot Chatを使ってコードの説明を生成する
- Visual Studio Code でSampleApps?フォルダのAPL2007M2Sample1フォルダーを開く。
- ワークスペースとプロジェクトファイルの説明
- Visual Studio Code の上部メニューバーで、[チャットを開く]を選択する。
- 次のコマンドを使用してプロジェクトの説明を依頼:@workspace Explain this project
- チャット ビューで応答を確認、下部でフォローアップの質問を提案している。
- MainWindow?.xaml.csを開き次のコマンドを使用してファイルの説明を依頼:@workspace /explain #file:MainWindow?.xaml.cs
- チャット ビューで応答を確認、下部でフォローアップの質問を提案している。
- 選択されたコードの説明
- MainWindow?.xaml.csファイルがエディターで開いていることを確認
- 下にスクロールしてSumPageSizesAsync?()メソッドを見つける。
- コード行を選択し、「説明」スマート アクションを使用して説明を生成。
- チャット ビューで応答を確認、説明に含まれる詳細レベルに注目。
- エラーの説明
- MainWindow?.xaml.csファイルがエディターで開いていることを確認
- 下にスクロールしてSumPageSizesAsync?()メソッドを見つける。
- マウスカーソルを上に移動するdownloadTasksとエラーメッセージが表示される。
- エラーを含むコード行を選択し「Ctrl + I」でインライン チャットを開き、次のプロンプトを入力:/explain why is the selection causing an error
- チャット ビューで応答を確認、エラーに関する情報と修正方法(キーワードawaitを追加)の提案が含まれている。
- GitHub Copilot Chat が提供する説明を使用して、コード内のエラーを修正、ファイルへの変更を保存する。
- Exercise - Generate project documentation by using GitHub Copilot Chat 8 min
演習 - GitHub Copilot Chat を使ってプロジェクト・ドキュメントを作成する
- Visual Studio Code でSampleApps?フォルダのAPL2007M2Sample1フォルダーを開く。
- [チャットを開く]を選択しGitHub Copilot チャット ビューを開く。
- チャット ビューで、ワークスペースのドキュメントを生成:@workspace document this project
- プロジェクト用に生成されたプロジェクト ドキュメントを少し時間をかけて確認
- 「プロジェクトの制約を文書化する」や「プロジェクトの依存関係を文書化する」などとするとより詳細な情報を取得できる。
- チャット ビューで、プロジェクトの依存関係を説明するドキュメントを生成:@workspace document the project dependencies
- プロジェクトの依存関係のドキュメントを確認
- 同様に、プロジェクト概要、要件、制約、アーキテクチャ、設計、テスト、展開などを生成
- チャット ビューでAPL2007M2Sample1プロジェクトの README を生成:@workspace generate a readme document that can be used as a repo description
マークダウン ファイルとしてフォーマットする場合:@workspace generate readme project documentation formatted using a raw markdown format
- APL2007M2Sample1プロジェクト用に生成された README を確認
- いくつかのセクションとともに、プロジェクトの概要を提供している。
- プロンプトを調整して、組織で推奨される README セクションを指定できる。
- Exercise - Generate inline code documentation by using GitHub Copilot Chat 9 min
演習 - GitHub Copilot Chat を使ってインライン・コード・ドキュメントを作成する
- Visual Studio Code でSampleApps?フォルダのAPL2007M2Sample1フォルダーを開く。
- チャット・ビューを使用してインライン・コード・ドキュメントを生成する
- MainWindow?.xaml.csファイルを開きファイルの先頭から最後までのすべてのコードを選択
- チャットビューを開き次のプロンプトを入力:@workspace #selection generate inline code documentation for the selected code
- 提案されたコードドキュメントを少し時間をかけて確認、推奨されるコード・コメントと関連コードの一部が含まれる。
- 簡潔でコードの一部が省略される場合がある。コード コメントを実際のコード ファイルに手動で移動する。
- インライン・チャットを使用してインライン・コード・ドキュメントを生成する
インライン チャットを使用すると、コードにコメントを追加するためのより直接的なアプローチが提供される。
- MainWindow?.xaml.csファイルの先頭までスクロールしOnStartButtonClick?メソッドを選択する。
- インライン・チャットを「Ctrl + I」で開き、次のプロンプトを入力:/doc
- OnStartButtonClick?メソッドの2つのパラメタの概要と説明が含まれていることに注意。
- 提案を確認し必要に応じて修正する。提案を破棄するには[破棄]を選択する。
- スマート・アクションを使用してインライン・コード・ドキュメントを生成する
- Visual Studio コード エディターで、MainWindow?クラス内のすべてのメソッドを選択。
- 選択したコードを右クリックし「Copilot」→「Generate Docs」を選択
- ドキュメントが生成され、提案された変更を確認、コメントが含まれていることに注意。
- 生成されたドキュメントに問題が見つかった場合は、続行する前に提案された変更を修正
- [承諾]を選択、MainWindow?クラス内の各メソッドに生成されたコメントが追加された。
- Exercise – Complete the "code documentation" challenge 15 min
演習 - "コード・ドキュメント" の課題を完了する
- Visual Studio Code でSampleApps?フォルダのAPL2007M2Sample2フォルダーを開く。
- ターミナルでdotnet buildコマンドを実行したときに、プロジェクトがエラーなしでビルドされることを確認。
- 注:このプロジェクトは、特殊なランタイム環境を使用するIoT デバイス上で実行するように設計されているため、正常に実行されない。
- Visual Studio Code で GitHub Copilot Chat を使用して、インライン・ドキュメントとプロジェクト・ドキュメントを生成します。
- 生成されたドキュメントをレビューして、要件を満たしていることを確認。ドキュメントが完成したら、プロジェクトへの変更を保存。
- 文書化されたコードを保存した後、ターミナルでdotnet buildコマンドを実行したときにプロジェクトがエラーなしでビルドされることを確認。
- Review the "code documentation" solution 8 min
コード・ドキュメント・ソリューションを見直す
- Visual Studio Code でSampleApps?フォルダのAPL2007M2Sample2フォルダーを開く。
- Program.cs ファイルのインライン ドキュメント
- Deviceクラスのプロパティとメソッドを含むコード ブロックを選択
- チャット・ビューを開き、次のプロンプトを入力:@workspace #selection generate inline documentation
- 提案された変更を確認、[エディターで適用]を選択
- コード ファイルの上部で提案された変更がすべて承認されるまで[変更を承認]を選択し続ける。
- チャットビューを開き次のプロンプトを入力:@workspace document this project. Include an overview and sections for dependencies, features, requirements, constraints, summary
- ドキュメントをマークダウンとしてフォーマットするには、次のプロンプトを入力:format the documentation as markdown and show the raw markdown file contents
- プロジェクト リポジトリの README ファイル
- チャットビューを開き次のプロンプトを入力:@workspace generate a readme document that can be used as a repo description. Include a project title and the following sections: Description, Setup instructions, Usage, Contributor guidelines, License
- ドキュメントをマークダウンとしてフォーマットするには、次のプロンプトを入力:format the readme document as markdown and show the raw markdown file contents
Knowledge check& summary †
- Knowledge check 8 min
- Summary 3 min
ユニット †
- Examine the code development features of GitHub Copilot 8 min
GitHub Copilot のコード開発機能を検証する
- Visual Studio Code の GitHub Copilot ツール
- コード行補完: コード行補完を使用し、より効率的にコードを記述
- チャット・ビュー:左側のサイドバーにあるチャット アイコンから開く。
- インライン・チャット:エディタから直接インライン・チャット会話を開始
- クイック・チャット:簡単な質問をして作業を再開
- スマート・アクション:プロンプトを入力しなくても特定タスクを実行
- GitHub Copilot のコード行補完を使用してコードを生成する
- メソッド シグネチャの入力を開始すると、GitHub Copilot はコード行を補完する候補を生成。
- 提案に満足したら、Tab キーを押すか、[承認]を選択する。
- また、メソッドの呼び出しステートメントを入力し始めると、様々なオーバーロードを提案する。
- また、コードコメントからメソッドのシグネチャと実装の提案を生成する。
- これにより時間を節約し、コードを正確に記述できる。
- GitHub Copilot Chatを使用してコードを生成する
- GitHub Copilot Chat は、チャット・インターフェースとスマート・アクションを使用してコードを作成するのに役立つ。
- 例えば、新しいメソッドを作成するように求めるプロンプトを入力すると、1 つ以上のメソッド シグネチャと実装の提案を提供する。
- 提案を確認してから承認または破棄することで、コードの初期バージョンをより迅速かつ正確に作成できる。
- GitHub Copilot Chat に、明確な範囲と意図を含むプロンプトや質問を提供すると、生成される応答が改善される。
- 会話形式+環境参照、Slash commands、チャット変数を使用してプロンプトのコンテキストを明確にできる。
- 例えばスキャフォールディングなどもできる
・C#:@workspace /new console application in C#
・JS:@workspace /new Node.js Express Pug TypeScript
- チャット・ビューを使用してGitHub Copilot Chatでコードを生成する
- Visual Studio Code コマンド・センターから[チャットを開く]を選択するか、もしくは「Ctrl + Alt + I」
- さらに画面スペースが必要な場合は、チャット・ビューのコンテキスト メニューから [新しいウィンドウでチャットを開く]を選択
- チャット・ビューで(生成された)コード・ブロックを管理(適用)
- 初期オプション:[エディターで適用]、[カーソル位置に挿入 (Ctrl + Enter)]、[コピー]
- [その他のアクション (...)]:[ターミナルに挿入] (Ctrl+Alt+Enter) / [新しいファイルに挿入]
- インラインチャットを使用して GitHub Copilot Chat でコードを生成
- エディタで作業しているときに「Ctrl + I」を押しインライン・チャットを開く。
- 次の方法で使用できる(既存のコードに関する質問、変更または置換、新しいコードの生成)
- インラインチャットを使用して新しい機能を作成
・エディターでコードを選択し「Ctrl + I」を押してインライン・チャット・インターフェイスを開く。
・作成する機能を説明するプロンプトを入力、提供される提案を確認し、必要に応じてプロンプトを調整。
・満足したら、提案を受け入れます。
- インラインチャットを使用して正規表現を作成
インライン・チャット・インターフェイスを使用すると、正規表現をすばやく正確に生成できる。
・エディターでコードを選択し「Ctrl + I」を押してインライン・チャット・インターフェイスを開く。
・検証する必要があるデータ・パターン(メアドなど)を説明するプロンプトを入力し提案を確認し、満足したら提案を承認。
・提案された正規表現を少し評価する
- Examine GitHub Copilot best practices 8 min
GitHub Copilot のベストプラクティスを検証する
- Visual Studio Code 用の GitHub Copilot 拡張機能を使用しベスト プラクティスに従うことでAI ペア プログラマーを最大限に活用できる。
- Copilotのインライン提案を最大限に活用
- GitHub Copilot にコンテキストを提供する
- コンテキストの定義に役立つファイルを開く。
- コード・ファイルのトップレベルのコメントでコンテキストを提供する。
- 適切な包含と参照(作業に必要なインクルードまたはモジュール参照を手動で設定するのが最善)
- 意味のある関数名、具体的かつ適切な関数コメント
- サンプルコード付きPrime Copilot(探しているものに近いサンプル コードをコピーして貼り付ける)
- (プロンプト、コンテキストの)一貫性を保ち、品質基準を高く保つ「ゴミを入れればゴミが出る」
- GitHub Copilot Chatのエクスペリエンスを最適化するために実行できる操作を最大限に活用する
- まずは一般的なことから始めて、具体的な内容に移る
- 数が素数かどうかを知らせる関数を書いてください。
- この関数は整数を受け取り、その整数が素数であれば true を返します。
- 入力が正の整数でない場合、関数はエラーをスローする必要があります。
- GitHub Copilot があなたの要求を理解できるように、例を使用(ICL)
- 複雑または大規模なタスクを完了させたい場合、より単純なタスクに分割する(CoT)
- 10 x 10 の文字グリッドを生成する関数を記述
- 有効な単語のリストが与えられた場合に、文字のグリッド内のすべての単語を検索する関数を記述
- 前の関数を使用して、少なくとも 10 個の単語を含む 10 x 10 の文字グリッドを生成する関数を記述
- 前の関数を更新して、文字のグリッドとグリッドからランダムに抽出した 10 個の単語を出力
- 曖昧さを避ける「これは何をしますか」→「createUser 関数は何をしますか?」
- コンテキストや指示を明確にする(ファイルを開く、コード選択、環境参照、Slash commands、チャット変数)
- その他
- 実験と反復:希望する結果が得られない場合は、プロンプトを繰り返して再試行する。
- 履歴を関連性のあるものにする:新しい会話を開始する。/clear Slash commands
- 適切なコーディング方法に従う(コンテキストとなる既存のコードがベスト プラクティスに従っており、読みやすいこと)
・一貫したコード スタイルとパターンを使用
・変数と関数にはわかりやすい名前を使用
・コードにコメントを付ける。
・コードを疎結合&機能的凝集度に保つ。
・ユニットテストを含める。
Exercise †
- Exercise - Create code by using code line completions 14 min
演習 - コード行補完を使用してコードを作成する
- Visual Studio Code環境でサンプルアプリを準備する
- Visual Studio Code の新しいインスタンスを開き、チャット ビューを開く
- [フォルダーの選択]ダイアログで[デスクトップ]を選択して[親フォルダーとして選択]を選択。
- 新しいプロジェクトを開くように求められたら[開く]を選択
- エクスプローラー ビューで、Program.csを選択し内容を次のコード(略)に置き換える。
- GitHub Copilot を使用してコメントからコード行の補完を生成する。
- Program.csファイルで、Mainメソッドの下に2つの空行を作成。
- テスト データを生成するために次のコード コメントを作成し、Enter キーを押す。
// public struct SalesData. Include the following fields: date sold, department name, product ID, quantity sold, unit price
- GitHub Copilot が提供するコード補完の提案を確認(データ型に注意)し、ニーズに最も適した提案を確認して受入(Tabキー)。
- 一部のデータ型が希望するものでなくても、提案された自動補完を受け入れた後で調整することはできる。
- また、提案タブを使用して複数の提案を表示したり、一度、破棄(Escキー)してコンテキストを調整するなどする。
- SalesData?構造体の下に 2 つの空のコード行を作成。
- 構造体を使用してテスト・データを生成するSalesData?メソッドを作成するには、次のコード コメントを記述して Enter キーを押す。
/* the GenerateSalesData method returns 1000 SalesData records. It assigns random values to each field of the data structure */
- GitHub Copilot が提供するコード補完の提案を確認(オブジェクトの配列を返すように設計されていることに注意)し、
- ニーズに最も適した提案を確認して受入(Tabキー)て、必要に応じて調整を加える。
- たった 2 つのコメントで構造体とテスト・データを生成するメソッドを生成できた。
- GitHub Copilotを使用してコード行補完を生成する。
- QuarterlySalesReport?の操作について検討(売上データに基づいて四半期ごとの売上を計算しレポート)
・コレクションを反復処理しますsalesData
・salesDataコレクションを反復処理
・販売数量と単価に基づいて、各販売の価値を計算
・売上日を使用して、売上がどの四半期に属するかを判断
・四半期ごとの売上を合計し、売上レポートを作成
- QuarterlySalesReport?の先頭でforeachを入力、コード行補完の提案を待ち、提案を確認。
- 提案が不適切だったので、コンテキストとなるコードを調整
- QuarterlySalesReport?内の空白行にカーソルを置き、Enterキー。
- コード行補完の提案を待ち、提案で意図した処理が実行されることを確認し受入(Tabキー)
- 販売月に基づいて四半期を決定するために使用されるGetQuarter?メソッドの定義がないことを確認。
- QuarterlySalesReport?の下に2つの空白行を作成するとGetQuarter?のコード補完が提案される。
- (QuarterlySalesReport?のコンテキストからGetQuarter?のコード補完を簡単に生成できる)
- 提案で意図した処理が実行されることを確認し受入(Tabキー)
- Mainメソッドでは、上記の(略)でQuarterlyIncomeReport?クラスの初期化を行うコードが既に実装されている状態
- Mainメソッドのコードコメント「// call the GenerateSalesData? method」の末尾にカーソルを置きEnterキーを押下。
- GitHub Copilot によって提案されたコード補完を確認して承認。
- 同様に、Mainメソッドのコードコメント「// call the QuarterlySalesReport? method」の末尾にカーソルを置きEnterキーを押下。
- GitHub Copilot によって提案されたコード補完を確認して承認。
- アプリを実行してレポート出力を確認(ターミナル ウィンドウからdotnet run
- ターミナル・ウィンドウで出力を確認(四半期の結果はランダムな数値)
- Exercise - Create code by using GitHub Copilot Inline Chat 18 min
演習 - GitHub Copilot インライン・チャットを使用してコードを作成する
- Visual Studio Code環境でサンプルアプリを準備(SampleApps?.zipのAPL2007M3SalesReport?-InlineChat?)
- コーディングタスクとプロジェクト目標を確認する
- SalesData?構造体とGenerateSalesData?メソッドを更新して「実際の」データに似たデータ サンプルを作成
- QuarterlySalesReport?メソッドを更新
・四半期は Q1 から Q4 の順序でリスト
・地域設定を使用して通貨の値を表示
・四半期利益と利益率の計算を含める
・四半期ごとの売上、利益、部門別の利益率を計算
- プロンプトを開発するためのアプローチを検討する
プロンプトを開発するときは、次のベスト プラクティスに留意
- インライン・チャットを使用してデータ構造を生成する
- インライン・チャットを使用してGenerateSalesData?メソッドを更新する
- 「string sizeCode = "";」コード行を選択し、インライン・チャットを開いて、次のプロンプトを入力。
From the list {XS, S, M, L, XL}, randomly select a product size and assign it to sizeCode.
- 提案を確認して受入(Tabキー)
- 「string colorCode = "";」コード行を選択し、インライン・チャットを開いて、次のプロンプトを入力。
From the list {BK, BL, GR, RD, YL, OR, WT, GY}, randomly select a product color and assign it to colorCode.
- 提案を確認して受入(Tabキー)
- 「salesData[i].productID = random.Next(1, 101);」コード行を選択し、インライン・チャットを開いて、次のプロンプトを入力。
Add a "-" to deptAbb, nextTwoDigits, sizeCode, and colorCode. Combine deptAbb, firstDigit, nextTwoDigits, sizeCode, colorCode, and manufacturingSite to create the productID.
- 提案を確認して受入(Tabキー)
- インライン・チャットを使用してQuarterlySalesReport?メソッドを更新する
- Program.cs ファイルでQuarterlySalesReport?メソッドを見つける。
- Exercise - Complete the create new code challenge 16 min
- コーディング環境はVSCodeでSampleApps?のAPL2007M3SalesReport?-NewCodeChallenge?フォルダを開く。
- GitHub Copilot Chat を使用して、部門の販売情報をテーブルとしてフォーマットするコード更新を行う。
「部門別」売上情報をテーブルとしてフォーマットし、テーブルにヘッダー行を含める。
- アプリケーションを実行し、更新されたアプリケーションが次の「後」の形式を生成することを確認
- GitHub Copilot Chat を使用して、四半期ごとの上位 3 つの販売注文を報告するために必要なコード更新を行う。
・四半期の上位 3 件の販売注文は、総販売額 (販売個数 * 単価) が最も大きい 3 件の注文
・四半期売上レポートには、上位 3 つの注文ごとに、製品 ID、販売数量、単価、総売上額、利益、利益率を記載
・上位 3 つの販売注文のリストの順序は、利益の降順 (最高から最低) に基づく
・四半期売上レポートでは、上位の販売注文の情報を表形式でフォーマットする。
- アプリケーションを実行し、更新されたアプリケーションが次の「後」の出力を生成することを確認
- Review the create new code solution 8 min
新しいコードを作成するソリューションをレビューする
- 「部門販売情報のフォーマット」ソリューションを確認する
- Visual Studio Code で Program.cs ファイルを開き
- Program.cs ファイルへの変更を保存しアプリケーションを実行、四半期売上レポートの出力に部門売上結果の表が含まれていることを確認。
- 必要に応じて、列幅を手動で調整して、データ行の垂直線をヘッダー行に揃える。
Console.WriteLine("│ {0,-20} │ {1,18} │ {2,18} │ {3,18} │", "Department", "Sales", "Profit", "Profit Percentage");
Console.WriteLine("│ {0,-20} │ {1,18} │ {2,18} │ {3,17}% │", department.Key, formattedDepartmentSalesAmount, formattedDepartmentProfitAmount, formattedDepartmentProfitPercentage);
- 「四半期ごとに上位 3 つの販売注文を表示する」ソリューションを確認する
- Visual Studio Code で Program.cs ファイルを開き
- QuarterlySalesReport?メソッド全体を選択し、インライン・チャット(Ctrl + I)で、次のプロンプトを入力。
Update the QuarterlySalesReport method to include calculations that identify the top 3 sales orders during each quarter. Select the top 3 orders based on the total sales amount for the order (quantitySold * unitPrice). Include the top 3 orders in the report output. For the top three orders, display the product ID, the quantity sold, the unit price, the total sales amount, the profit, and profit percentage.
- 提案を確認して受入(Tabキー)
- Program.cs ファイルへの変更を保存しアプリケーションを実行、四半期ごとに上位 3 つの販売注文が含まれていることを確認。
- Exercise - Complete the code logic challenge 16 min
演習 - コードロジックの課題を完了する
- Review the code logic solution 8 min
コードロジックのソリューションをレビューする
- Exercise - Convert code from one programming language to another 8 min
演習 - あるプログラミング言語から別のプログラミング言語へコードを変換する
- チャット・ビューを使用してプログラミング言語間でコードを変換する
- Visual Studio Code の 1 番目のインスタンスでPythonのフォルダを開く
- main.pyの内容を選択、チャット ビューを開き、次のプロンプトを入力
Convert #selection to C#
- インライン・チャットを使用してプログラミング言語間でコードを変換する
- Visual Studio Code の 1 番目のインスタンスでPythonのフォルダを開く
- main.pyの内容を選択、インライン・チャットを開き、次のプロンプトを入力
Convert #selection to C#
Knowledge check& summary †
- Knowledge check 8 min
- 行補完:コメントとコード行
- 補完:プロンプトとエディタ内のコードのコンテキスト
ユニット †
Exercise †
- Examine the unit testing tools and environment 8 min
単体テストツールと環境を調べる
- VSCodeでC#でテストフレームワーク(xUnit/NUnit/MSTest)のテスト、被テスト・プロジェクトを生成
- テスト・プロジェクトは被テスト・プロジェクトのプロジェクト参照を追加する。
- GitHub Copilot Chat を使用してユニットテストケースを生成
- Exercise - Create unit tests by using GitHub Copilot Chat 12 min
演習 - GitHub Copilot Chatを使ってユニットテストを作成する
- Visual Studio Code環境でサンプルアプリを準備する
- SampleApps?.zipのAPL2007M4PrimeService?フォルダーをVisual Studio Code で開く
- Numbersフォルダーを展開し、PrimeService?.csファイル内のコードを確認
- ユニットテスト用のxUnitテストプロジェクトを作成する
- Visual Studio Code でソリューション エクスプローラー ビューを開き
- ソリューション エクスプローラー ビューで、APL2007M4PrimeService?を右クリックし、新しいプロジェクトを選択
- プロジェクト タイプのリストが表示されたら、xUnit テスト プロジェクトを選択
- プロジェクト名として「PrimeService?.UnitTests? 」と入力し、Enterキー押下
- PrimeService?.UnitTests?フォルダを展開しUnitTest1.cs ファイルを削除
- PrimeService?.UnitTests?を右クリックし、[プロジェクト参照の追加]を選択して、[Numbers]を選択
- PrimeService?.UnitTests?を右クリックし、新規ファイル、クラスを選択、(単体テスト用クラス)PrimeServiceTests?と入力し、Enterキー押下
- 名前空間を変更する:PrimeService?.UnitTests? → System.Numbers.UnitTests?(System.Numbers 名前空間のコードをテスト)
- ソリューションをビルドするには、Ctrl + Shift + B → dotnet: build
- チャット・ビューを使用してユニットテストを作成する
- ソリューション エクスプローラー ビューの Numbers で PrimeService?.cs ファイルを開く
- IsPrime?メソッドを選択しチャット・ビューを開き「コンテキストをアタッチ」ボタンを選択
- [添付ファイルの検索]DDLの最近開いたセクションでPrimeServiceTests?.csを選択
- [添付ファイルの検索]テキスト ボックスに「PrimeService?.Unit」と入力し「PrimeService?.UnitTests?.csproj」を選択
- チャット・ビューで、/tests add unit tests for my code を選択(IsPrime?メソッドが選択されている)
- GitHub Copilot の提案を確認、「計画」と「単体テストを含むコード サンプル」の2セクションが含まれている。
- [編集を適用]ボタンをクリックすると、ユニット テスト コードがエディターの新しいタブに配置される。
- このコードを使用して、PrimeService?.UnitTests? プロジェクト内の PrimeServiceTests?.cs ファイルを更新
- [ファイル]メニューで[名前を付けて保存]を選択し、PrimeService?.UnitTests?フォルダに移動
- PrimeServiceTests?.csを選択し、[保存]を選択、上書きするかどうかを尋ねられたら[はい]を選択。
- 更新された PrimeServiceTests?.cs ファイルを確認
- ビルドが成功すると各ユニット テストの横に緑色の「テスト矢印」が表示される。
- インライン・チャットを使用してユニットテストを作成する
- Exercise - Create unit tests for specific conditions by using GitHub Copilot 8 min
演習 - GitHub Copilotを使って特定の条件に対するユニットテストを作成する
- Exercise - Complete the "create unit tests" challenge 12 min
演習 - 「ユニットテストの作成」に挑戦する
- Review the "create unit tests" solution 7 min
「ユニットテストを作成する」ソリューションを見直す
Knowledge check& summary †
- Knowledge check 7 min
- Summary 3 min
Exercise †
ユニット †
- Introduction 3 min
- Examine GitHub Copilot support for code improvements 6 min
Exercise †
- Exercise - Improve code quality by using GitHub Copilot Chat 16 min
- Exercise - Improve code reliability and performance by using GitHub Copilot Chat 16 min
- Exercise - Improve code security by using GitHub Copilot Chat 15 min
- Exercise - Complete the "app improvement" challenge 20 min
- Review the "app improvement" solution 8 min
Knowledge check& summary †
- Knowledge check 8 min
- Summary 3 min
Exercise †
ユニット †
Exercise †
- Prepare the development environment 6 min
開発環境の準備
- Exercise - Analyze and document code using GitHub Copilot tools 20 min
演習 - GitHub Copilot ツールを使用してコードを分析し、文書化する
- Exercise - Develop code features using GitHub Copilot tools 20 min
演習 - GitHub Copilot ツールを使用してコードの機能を開発する
- Exercise - Develop unit tests using GitHub Copilot tools 20 min
演習 - GitHub Copilot ツールを使用してユニットテストを開発する
- Exercise - Refactor and improve code sections using GitHub Copilot tools 15 min
演習 - GitHub Copilot ツールを使用してコードセクションをリファクタリングし、改善
Knowledge check& summary †
- Knowledge check 5 min
- Summary 2 min
Exercise †