WebSurfer's Home

Filter by APML

Visual Studio 2026 AI 駆動開発 - コード補完

by WebSurfer 15. January 2026 17:54

Visual Studio 2026 の AI 駆動開発は、統合された GitHub Copilot にペアプログラマーとしての役割を担ってもらい、ユーザーは GitHub Copilot が提供する「チャット」と「コード補完」を利用して開発を加速するという形になるそうです。

「チャット」については、先の記事「Visual Studio 2026 AI 駆動開発 - チャット」に調べたことを書きました。

この記事では、その続きとして、「コード補完」について調べたことを書きます。対象となるサンプルは .NET Framework 4.8.1 の C# のコンソールアプリです。コードは先の記事の最後に載せましたので見てください。

「コード補完」は、Microsoft のドキュメント「Visual Studio の GitHub Copilot Completions とは」によると "コードを入力すると、AI はコンテキストを分析し、関連する提案をリアルタイムで提供します。 また、コードで実行する内容を説明するコメントを自然言語で記述することで、提案を受け取ることもできます" ということだそうです。以下に「コードを入力」と「コメントを自然言語」のそれぞれについて分けて書きます。


(1) コードを入力

まず、ユーザーがコードを入力している際に AI からリアルタイムで提案を受ける例を書きます。

先の記事「Visual Studio 2026 AI 駆動開発 - チャット」でチャットにより AI から Program.cs のコードの説明を受けた際、説明に加えて Potential issues and suggestions としていろいろ指摘を受けてます (詳しくは先の記事を見てください)。

それらの指摘の内、以下の指摘のみを受け入れ、ユーザーが自力でコードを書いて修正するとします。

CSV robustness:

  • Validate fields.Length >= 2 before indexing to avoid IndexOutOfRangeException.
  • Skip or detect a header row if present.

前者の、"Validate fields.Length >= 2 before indexing to avoid IndexOutOfRangeException." に対しては、以下のようにコードの適切な場所に if とタイプすると AI が自動的に修正案を提案してくれます。

if とタイプした結果

if の後のグレー表示の部分が AI の提案です。確認して OK なら Tab キーを押してコードを確定します。提案を拒否する場合は Esc キーを押します。

後者の "Skip or detect a header row if present." に対しては、以下のように tfp とタイプすると AI が自動的に修正案(グレーの文字の部分)を提案してくれます。

tfp とタイプした結果

提案を確認して OK なら Tab キーを押してコードを確定します。提案を拒否する場合は Esc キーを押します。


(2) コメントを自然言語で記述

次に、コメントを自然言語で記述することで AI からそのコメントに相当するコードの提案を受ける例を書きます。

上と同様に Potential issues and suggestions 中の 2 件の指摘を修正することとします。

まず、"Validate fields.Length >= 2 before indexing to avoid IndexOutOfRangeException." への対応ですが、コードを直接をタイプする代わりに、以下のように // をタイプすると AI からコメント文が提案がされます。グレーの文字の文が AI の提案です。

AI によるコメント文提案

しかし、上記の AI 提案は、ユーザーが欲しい修正コードの提案を受けるためのコメントにはなっていません。(AI はそこまで賢くユーザーの意図を汲んではくれないようです)

ここで必要な処理は「fields.Length が 2 以上であることを確認」して必要な処理を行うコードを追加することです。なので AI のコメント提案は受けないで(Esc キーを押して AI の提案を消して)ユーザーが自分でコメントを書きます。以下のように、コメントを書いてから改行するとコメントの下に AI からグレーの文字でコードが提案されます。

コメント文からコード生成

提案を確認して OK なら Tab キーを押してコードを確定します。提案を拒否する場合は Esc キーを押します。

次の "Skip or detect a header row if present." への対応ですが、こちらはユーザーが何をしたいのかを AI が予想できるようで、// をタイプするだけで適切なコメント文を AI が作ってくれます。

コメント文からコード生成

Tab キーを押してコメントを確定させた後、改行すると AI からコメント文に対応するコードがグレーの文字で提案されます。

コメント文からコード生成

提案を確認して OK なら Tab キーを押してコードを確定します。提案を拒否する場合は Esc キーを押します。

以上、チャットでの Potential issues and suggestions での指摘の一部を「コード補完」を利用してユーザーが自力でコードを書いて修正する例を書きました。

Potential issues and suggestions とは関係なくコメントからコードを AI に生成させることもできます。

例えば何らかのメソッドを追加したい場合、追加する場所に // Method とタイプします。すると以下のようにグレーの文字で AI がユーザーのやりたいことをコードの前後から想像して提案してきます。

// Method とタイプした結果

AI の提案したコメントで良ければ Tab キーを押してコメントを確定させた後、改行すると AI がそのコメントに相当するコードを提案してくれます。下の画像のグレーの文字の部分がそれです。

AI が提案したコード

AI の提案したコメントが期待するものと違う場合は、Esc キーを押して AI の提案を削除し、Method の後のコメント文をユーザーが作成します。例えば CSV ファイルから DataTable を取得したい場合は以下の緑文字のようにタイプします。グレーの文字は AI の提案です。

コメントの修正

上のコメントで良ければ Tab キーを押してコメントを確定した後、改行すると AI がコメントに相当するコードを提案してくれます。下の画像のグレーの文字のコードがそれです。

AI が提案したコード

AI が提案したコードで OK であれば Tab キーを押してコードを確定させます。

AI が提案したコードを確定


以上、自分が調べた「コード補完」の操作方法についた書きました。他にも、Microsoft のドキュメント「Visual Studio の GitHub Copilot Completions とは」によると「ドキュメント コメントの生成」他いろいろ機能があるようです。

また、デフォルトでは有効になっていませんが、設定で Next Edit Suggestions (NES) 機能を有効にして使うことができるそうです。そのあたりは勉強不足で分かっていませんので、別途調べてみたいと思っています。

Tags: , ,

DevelopmentTools

Visual Studio 2026 AI 駆動開発 - チャット

by WebSurfer 13. January 2026 18:48

先の記事「Visual Studio 2026 AI 駆動開発」に書きましたように、自分の環境の Visual Studio 2026 で GitHub Copilot Free (無償版) を利用できるように設定しました。それをどのように使うかということを少しだけですが調べたので、以下に調べたことを書きます。

チャットウィンドウ

Visual Studio 2026 の AI 駆動開発を簡単に書くと、ユーザーが主体となって開発を行うのは従来通りだが、統合された GitHub Copilot にペアプログラマーとしての役割を担ってもらい、力を合わせて開発を加速するということになります。

GitHub Copilot に丸投げして全部任せるという訳ではありません。Microsoft のドキュメント「Visual Studio の Copilot Free」の「01 ベスト プラクティス」の動画でも以下のように言ってます。

  • DON'T LET THE COPILOT FLY THE PLANE
  • DON'T LET COPILOT WRITE ALL YOUR CODE
  • CHECK THE CODE COPILOT PRODUCES

上記を基本として、どのようにしたら効果的に GitHub Copilot に支援させられるかということをユーザーが考えながら、「指示」⇒「応答」⇒「検証」⇒「改良」のループを回して開発を行い、成果物を完成させるということになるようです。

GitHub Copilot による支援には「チャット」と「コード補完」があります。それらについて自分が使ってみた例を以下に書きます。ドキュメントを読んで詳しく使い方を調べたわけではありませんので、最適な使い方ではないかもしれませんが、詳しい使い方は知らなくてもこの程度のことは容易にできるということで。

ベースとしたのは .NET Framework 4.8.1 の C# のコンソールアプリで、この記事の最後に載せたコードがアプリのプロジェクトの Program.cs です。このままで期待通り動きますが、少々問題を含んでいます。スペルミスとかもあります。後述しますが、GitHub Copilot からそれらの問題の指摘を受けることもできます。

まずこの記事では「チャット」について書きます。「コード補完」も書くと長くなりすぎるので別の記事に書くことにしました。

「チャット」には「チャットウィンドウ」を使う方法と「インラインチャット」という方法がありますので、以下にそれぞれについて分けて書きます。


(1) チャットウィンドウ

この記事の一番上の画像がチャットウィンドウです。Ask mode と Agent mode のいずれかを選べますが、デフォルトが Ask mode なので、この記事では Ask Mode で試した結果を書きます

チャットウィンドウ上で、GitHub Copilot に、この記事の下の方に載せた Program.cs のコードの説明をさせます。

チャットウィンドウに表示されているメニューの [Explain how the code in #class works] をクリックし、ドロップダウンから Program.cs を選んだ後、赤丸印の Send ボタンをクリックします。

プロンプト

上のプロンプトが GitHub Copilot に送信されます。

GitHub Copilot からプロンプトに対する応答として Summary, Step‑by‑step walkthrough, Potential issues and suggestions, Compatibility, If you want, I can: (改善提案) が返ってきます。

GitHub Copilot からの応答

自分が書いたコードではなく、どこからか入手したサンプルコードを使う場合など、何をしてるのか不明なコードの場合は、Step‑by‑step walkthrough の説明が役に立つと思います。Step‑by‑step walkthrough の説明は不要な場合でも Potential issues and suggestions の指摘は有用だと思います。

上にも書きましたがこの記事のサンプルの Program.cs のコードは少々問題を含んでいます。スペルミスもあります。それらに対して Potential issues and suggestions で以下の指摘を受けてます。

  • Typos: variable and file names have typos (Counrty.csv, counrtyList, filteredContryList). Rename to Country.csv, countryList, filteredCountryList for clarity.
  • Path handling: use Path.Combine(csvDir, csvFileName) instead of string concatenation and check File.Exists.
  • CSV robustness:
    • Validate fields.Length >= 2 before indexing to avoid IndexOutOfRangeException.
    • Skip or detect a header row if present.
  • String comparison: StartsWith(filter) is culture‑sensitive and case‑sensitive by default. For a case‑insensitive match use c.Name.StartsWith(filter, StringComparison.OrdinalIgnoreCase).
  • Memory/performance: currently the whole file is loaded into memory as List<Country>. For very large CSVs consider streaming and processing with LINQ on the fly (avoid .ToArray() if not needed).
  • Types: if Id is numeric, parse it to an int or a typed property instead of storing as string.
  • Encoding: explicit Encoding.UTF8 is good but ensure the file actually uses UTF‑8.
  • Exception handling: consider try/catch around file IO to give user-friendly errors.

If you want, I can: では以下を GitHub Copilot でやりましょうか? という提案を受けています。それを GitHub Copilot にやらせるなら、それを指示するプロンプトを書いて Send するということになります。

  • produce a small improved version demonstrating the suggested fixes (path handling, field validation, case‑insensitive filter), or
  • show how to skip a header row and handle malformed lines. Which would you prefer?

応答の下の方に以下の画像の赤枠に示したプロンプトのサンプルが表示されていますので、それを利用することもできます。

チャットウィンドウ

上の画像の赤枠部分をクリックすると、下の画像の通りそれがそのままプロンプトとして書き込まれます。その後 Send ボタン(赤丸印)をクリックすれば GitHub Copilot から応答が返ってきます。

チャットウィンドウ

応答は以下のように、チャットウィンドウ上の前回の応答(この例では上で聞いた Program.cs のコードの説明)の下に追加された形で表示されます。エディタ上のコードには自動的には反映されませんので、別途手動で修正することになります。

チャットウィンドウ

GitHub Copilot の修正案をエディタ上のコードに反映するには、上の画像の修正案のコードが表示されているウィンドウの左上にある [Apply] ボタンをクリックします。そうすると下の画像のようにエディタ上のコードに修正案を適用するための行の追加・削除が表示されます。

修正案をエディタ上のコードに反映

上の画像に「Tab to accept (1/4) Alt+Del to discrad F8 go to next」と表示されているように、修正案を受け入れる場合は Tab キーを、拒否する場合は Alt+Del キーを押します。(1/4) と表示されているのは、この例では 4 つのブロックに分けて修正案が表示されており、このブロックが 1 つ目という意味です。

以上 Ask mode で行った結果です。Microsoft のドキュメント「GitHub Copilot エージェント モードを始めよう」などの説明を読むと、Ask Mode と Agent Mode は役割もできることも全く別物だそうで、概略以下の違いがあるようです。

  • Ask Mode: 一問一答の形式で質問に答えるシンプルなモード。安全で軽量
  • Agent Mode: プロンプトの目標に達するまで実行と調整の手順を続けるモード。強力だが影響範囲が大きい

Agent Mode を使った場合の話は別の記事「GitHub Copilot Agent Mode」に書きました。


(2) インラインチャット

例えば下に載せたサンプルコードの中の Linq to Objects のコードを最適化するとします。マウスを使って該当部分を選択し、右クリックで出てくるメニューで [Chat] を選択します。

インラインチャット

(上の画像の [Chat] の下に [Copilot Actions] という項目があってその中に [Optimize Selection] というメニューがありますが、それは Chat ではなさそうです。結果も異なります。違いは未調査で分かりません)

表示されるウィンドウに / を入力するとドロップダウンにメニューが表示されるので optimize を選択します。それにより以下の通りプロンプトが生成されるので、Send ボタンをクリックして GitHub Copilot に送信します。(Send ボタンは画像では隠れて見えませんが右の方にあります)

インラインチャット

GitHub Copilot からの応答は以下の通り修正後のコードとその説明になります。エディタ上のコードには反映されませんので、必要に応じて手動で修正することになるようです (自分が知らないだけで自動的に反映する方法があるかもしれません)。

インラインチャット

上の画像の [View in chat window] をクリックすると、結果はすべてチャットウィンドウに移動されて表示されます。なので、エディタ上のコードに GitHub Copilot 修正提案を反映する場合は、そうしてからの方が良さそうです。

以上「チャット」について書きました。GitHub Copilot には「コード補完」という機能もありますがそれも書くと長くなりすぎるので別の記事に書きます。


Program.cs のコード

using Microsoft.VisualBasic.FileIO;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var csvDir = @"C:\Users\...省略...\ConsoleApp1\";
            var csvFileName = "Counrty.csv";
            var counrtyList = new List<Country>();

            using (var tfp = new TextFieldParser(csvDir + csvFileName, 
                                                 Encoding.UTF8))
            {
                tfp.TextFieldType = FieldType.Delimited;
                tfp.Delimiters = new string[] { "," };
                tfp.HasFieldsEnclosedInQuotes = true;
                tfp.TrimWhiteSpace = true;

                while (!tfp.EndOfData)
                {
                    string[] fields = tfp.ReadFields();

                    var country = new Country()
                    {
                        Id = fields[0],
                        Name = fields[1]
                    };
                    
                    counrtyList.Add(country);
                }
            }

            var filter = "Ca";
            var count = 20;
            var filteredContryList = counrtyList
                                     .Where(c => c.Name.StartsWith(filter))
                                     .Select(c => c.Name)
                                     .Take(count)
                                     .ToArray();

            foreach (var country in filteredContryList)
            {
                Console.WriteLine(country);
            }            
        }
    }

    public class Country
    {
        public string Id { get; set; } 
        public string Name { get; set; }

    }
}

Tags: , , ,

DevelopmentTools

Visual Studio 2026 AI 駆動開発

by WebSurfer 9. January 2026 14:28

先の記事「Visual Studio 2026 をインストールしました」で Visual Studio 2026 の特徴の一つに「AI 駆動開発の進化」があると書きました。そのあたりについて少し勉強しましたので以下に調べたことを書いておきます。

Visual Studio 2026 と GitHub Copilot

「AI 駆動開発の進化」というのは何かですが、簡単に書くと、バイブコーディング (Vibe Coding) のサポートを強化したということのようです。

自分は、バイブコーディングというのは生成 AI に 100% 依存してコードを書いてもらうということだと思っていましたが、ググって調べてみると必ずしもそうではなく、AI を利用したツールの助けを借りて、自らの責任で行う開発・成果物の作成を加速するという方法が実務では一般的なようです。(将来 AI が飛躍的に進化したら形態が変わるかもしれませんが少なくとも今のところは)

そのあたりは Google Cloud の記事「What is vibe coding?」(日本語版もあります) に分かりやすい説明がありました。

その記事に書いてある "Pure" vibe coding が生成 AI に 100% 依存してコードを書いてもらうこと、Responsible AI-assisted development が AI を利用したツールの助けを借りて開発を加速するということのようです。記事の Responsible AI-assisted development の説明を抜粋すると以下の通りです。

"Responsible AI-assisted development: This is the practical and professional application of the concept. In this model, AI tools act as a powerful collaborator or "pair programmer." The user guides the AI but then reviews, tests, and understands the code it generates, taking full ownership of the final product."

注: Responsible なのはユーザーです (AI ではありません)。また、本文中の ownership という言葉は「主体的な責任・当事者意識」を意味します (所有権ではありません)。なので、"taking full ownership of the final product" は「最終成果物に対して、ユーザーが当事者意識を持った主体的な責任を持つ」という意味になります。

では、Visual Studio 2026 での「AI 駆動開発」というのは何かですが、上の Google Cloud の記事で言う Responsible AI-assisted development という方法で、AI ツールに GitHub Copilot を利用し、それに「ペア プログラマー」としての役割を担ってもらうという形になります。

具体的には GitHub Copilot の記事に書いてあるように "エディターを最強のアクセラレーターに変換: エディター内の GitHub Copilot が、コンセプトの説明、コードの保管、編集の提案、エージェント モードでのファイルの検証といったあらゆる作業を実行します。" ということだそうです。

Visual Studio で GitHub Copilot を使う際の説明が Visual Studio の Copilot Free に書かれています。

それに書かれているように、Visual Studio で GitHub Copilot を使えるようにするには、自分の GitHub アカウントが Visual Studio に追加されている必要があります。詳しくは Microsoft のドキュメント GitHub アカウントを Visual Studio キーチェーンに追加するを見てください。

GitHub アカウントの Visual Studio への追加で、Free (無償版) の GitHub Copilot を Visual Studio の Chat Window と IDE 全体で使えるようになります。上の画像の右側のウィンドウが Chat Window です。

なお、Visual Studio 2026 にはインストールした時点で GitHub Copilot は統合されているようで、拡張機能の追加などは必要ありませんでした。

少し使って見ましたが、使い方によっては生産性はかなり向上するように思えました。そのあたりは別の記事に書くことにします。

Tags: , ,

DevelopmentTools

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。ブログ2はそれ以外の日々の出来事などのトピックスになっています。

Calendar

<<  February 2026  >>
MoTuWeThFrSaSu
2627282930311
2345678
9101112131415
16171819202122
2324252627281
2345678

View posts in large calendar