「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- 以下、模擬試験をやって、説明できるようにしておくべきトピックを列挙。
詳細 †
紹介 †
- GitHub Copilot = AI ペア プログラマー
- GitHub Copilot によってコーディングが速くなったと答えた開発者の割合は90%
環境 †
- 各IDEのエクステンションから利用するのが最も一般的で簡単
- IDE:VS、VSC、Aze Data Studio、JetBrains? IDEs、Vim/Neovim、Xcode、Eclipse
- CLIのインストール:gh extension install github/gh-copilot
- GitHub Copilot Editor 構成ファイル:.github/copilot-instructions.md(Markdown ファイル)
- コンテンツ除外:GitHubのリポジトリ・組織の設定から除外パスを設定
- プライバシーを考慮したさまざまなプラン(リポジトリ・組織の除外パスの事?)を提供。
- 除外ファイルは「コードの補完/提案」「コードレビュー」に利用されない。
- IDEによっては除外ファイルからのセマンティック情報も使用されてしまう(完全に無視できない)
- コンテンツの除外は即座に適用されない(30分ぐらいの遅延がある)
プロンプティング †
アクセス †
LLMで一般的なチャット・インターフェイスだけでなく、
インタラクティブにコーディングを行うことを支援する機能が多い。
- コード行補完:記述中の周辺コンテキストに基づいてプロンプトなしで提案(ゴーストテキスト)を提供
- チャット・ビュー:メニュー・バーにある[チャットを開く]から、もしくは「Ctrl + Alt + I」
- インライン・チャット:コンテキスト・メニューの[Copilot]→[Editor Inline Chat]から、もしくは「Ctrl + I」
- クイック・チャット:VSCのコマンド パレットでChat: Open Quick Chat、もしくは「Ctrl + Shift + Alt + L」?
- スラッシュ・コマンド:/testsなど、プロンプトで要求するアクションを手短に明確にできる。
- スマート・アクション:クリックするだけでワークフローに強力なショートカットを提供
- CLI:シェル用
- gh copilot explain:コマンドの説明を取得
- gh copilot suggest:コマンドの提案を取得
コンテキスト †
GitHub Copilot が調査する範囲と達成する目標を指定
- ユーザ入力
- コード行補完の場合はユーザ入力なしで記述中の周囲のコード行・コメントを使用
- 現在ファイルと関連ファイル、チャット履歴のコンテキストを分析
- 関連ファイル:エディタで開いているファイル、隣接ファイル、リポジトリ、URL、ファイル パス
- チャット履歴:一時的にメモリに保持され、使用後に破棄され、ディスクには書き込まれない。
- 参照やコマンド
- 環境参照(@workspace、@vscode、@terminal)
- スラッシュ・コマンド(/generate、/help、/doc、/explain、/fix、/optimize、/tests、/new、/newNotebook、/clear)
- 環境参照とスラッシュ・コマンドは組み合わせるときは「@workspace /explain: ...」のようにして使う
- プロンプト中でチャット変数(#editor、#selection、#file、#terminalSelection、#terminalLastCommand??)
受入操作 †
- Command paletteから
- 選択中のコードを更新する提案は「受入」「破棄」「再実行」から選択してコーディングを続行。
- 複数のコード補完が提案された場合、左矢印または右矢印を選択して各提案を確認。
ユースケース †
コード生成 †
- 複雑なコード生成:非手続き型処理(正規表現、SQL、LINQ)
- コード変換:プログラミング言語 → 別のプログラミング言語
- テストコード生成
- VSCのテスト エクスプローラーの目的:ユニット テストの実行とデバッグ、テスト実行の結果の表示、ワークスペースでのテスト ケースの管理。
- ユニット テストの Arrange、Act、Assertセクション:ユニット テストをセットアップ 、実行、検証のフェーズに構造化するために使用される。
- ユニット テストの アサーション:引数・戻り値のチェックに分解でき、無効なデータが処理の防止は引数のアサーション、関数の成否は戻り値のアサーション
- 改善の修正
品質、信頼性、性能、セキュリティ、または、スケーラビリティ、ユーザビリティ、ポータビリティ
- リファクタリングのコード生成
リファクタリングは、読み易さを向上させ、複雑さを簡素化し、モジュール性を高め、再利用性を向上させ、管理しやすく保守しやすいコードベースを作成する。
- 考慮事項:読み易さ、複雑さの軽減、モジュール性と再利用性、拡張性など。
- 複雑さの軽減(内部構造、モジュール性と再利用性、拡張性を改善し、理解、保守、拡張を容易にする)
- 読み易さの向上(複雑さの軽減、モジュール性の向上、再利用性の向上)
コードの説明 †
- コードの説明
- レビューとコメント
- ドキュメント生成
- デバッグ支援
- 例外処理改善:例外で機密情報を公開しないようにし、可能な限り最も具体的な例外をキャッチし、例外を飲み込まないようにする・
機能 †
インバウンドフロー †
- 安全な迅速な伝送とコンテキスト収集
エディタで開いているタブの周囲のコード、ファイル、コンテンツを考慮。
- プロキシフィルター
- プロンプト・インジェクションなどのブロック
- 有害な言葉のテスト、関連性のチェック、迅速なハッキングの試みの検出
- 毒性フィルタリング
- 生成内容に問題が入らないようにフィルタリング
- 個人データのフィルタリング機能:個人データを積極的にフィルタリング。
アウトバウンドフロー †
- コード品質、一致する公開コード (オプション) のチェック
パブリック・コード・マッチング機能は、数か月ごとに更新される
公開GitHubリポジトリのインデックスとコードの提案を比較して一致を検索。
- パフォーマンス・ベンチマークとメモリ使用量の最適化、有害な言語、関連性、
- コードの品質(セキュリティの脆弱性を含む)、一意の識別子、およびオプションの公開コードマッチング
- 提案の伝達とフィードバックループの開始
ユーザーのアクションに基づいて学習/改善
企業向け †
- Copilot Business サブスクリプションのアクセス許可
プロファイル ドロップダウン メニューの組織で設定
- 組織内の現在および将来のすべてのユーザーにアクセスを許可
- 組織内の特定のユーザーにアクセスを許可
- GitHub の REST APIを使用してアクセスを許可
- GitHub Copilot Enterprise
- 組織が独自のコードベースを使用してトレーニングする、パーソナライゼーションのレイヤー
- ドキュメント セットで内部コードとドキュメントのカスタム コレクションを作成し、提案を特定プロジェクトとドメインに合わせて調整
- LoRA:事前トレーニング済みモデルの各レイヤーに、完全なオーバーホールなしでトレーニング可能な要素を追加する方法
- プル リクエスト サマリー:コード変更に基づいてプル リクエストの簡潔な概要を自動的に生成
- Copilot メトリック API:組織メンバーから使用状況の指標を収集する
- 過去28日間のデータ
- アクティブユーザー数とエンゲージメントユーザー数
- 言語とIDE別の内訳
- 企業、組織、チームの指標を表示するオプション
- シート使用率:使用シート数 × (経過日数 / 請求サイクルの合計日数)
その他 †
- 有料/無料:今は制限付きの無料版が提供されている。
- Microsoft の責任ある AI に関する 6 つの主要原則:公平性、信頼性と安全性、プライバシーとセキュリティ、包括性、透明性、説明責任
参考 †