rksoftware

Visual Studio とか C# とかが好きです

GitHub Copilot Memory を設定した

前回、何もしてないのに Copilot Memory が設定有効にできるようになった話をしました。
rksoftware.hatenablog.com

今回は、この設定を有効にして、GitHub のサイト上の設定の中での変化を見ていきます。

■ 公式情報

github.blog

Repository Settings > Copilot > Memory.

にたまっている Memory が表示されてレビューしたり? 消したりできるようです。

見てみましょう。

■ 設定

まずは設定を有効化。
個人の settings の中の Copilot の設置上に項目があるので有効化します。
メニューのここから。

設定項目

設定した!

■ 個人のリポジトリ設定

Memory という項目が設定のメニューに湧いて出ていますね。選択すると、Memory がリスト表示されそうな領域が。
ただ、まだ何も Memory されていないようですね。

■ 組織

組織の設定はどうでしょう?
組織には何も湧いていないですね。公式情報では、レポジトリに湧くので予想定通りです。

■ 組織のリポジトリ

個人と同じですね。まだ何もないのも同じ。

■ 次回予告

これから、どうにかして Memory していきたいと思います。

何もしてないのに GitHub Copilot memory が使えるようになった

先日、GitHub Copilot Memory を有効化する設定がなぜか出てこないという記事を書きました。 rksoftware.hatenablog.com

本日見てみると何もしていないのに、設定が出てきていました。
LA じゃ日常茶飯事です。

■ 何もしていない

何もしていないは嘘です。ページをホームに移動して設定を開きなおしました。

■ このあたりかな?

ちょうどほぼ同日にこのアップデートが来ていました。
これとの兼ね合いで一時的に設定が消えていたタイミングを上手に踏んだのかもしれないですね。
github.blog

■ 何が変わった?

数日前までは、 Pro、Pro+ ユーザーへの開放でした。個人の有償プランですね。
これが、会社向けプランにも開放されたようです。

■ 何が始まるんです?

皆が検証し始めるので、個人の我々も早く動作確認してブログ書かないと、先越されてしまいます。
急がなきゃ

Copilot memory が気になる

気になります。

github.blog

Copilot のメモリは、エージェントがコードベースから学習することを可能にします。Copilot は、時間の経過とともにコードベースに関する重要な洞察を収集し、リポジトリ固有のメモリを構築します。これらの情報を基に、エージェントによるサポート方法を改善します。この共有コンテキストにより、Copilot はコーディングとコードレビューのワークフロー全体でパフォーマンスを向上させます。

■ 設定方法

設定方法は Settings > Copilot > Copilot MemoryEnabled にする......らしいです。

■ そんなもの ないよ

ここの Copilot coding agentMCP servers in Copilot の間にあるはずのようですが。
ないですね。

■ 対象者

ProPro+ のユーザーが対象です。

■ なぜ

なぜに WHY!?

■ VSCode に

こんな設定あるけど、関係あるのでしょうか?

【登壇者募集中】.NET Conf 2025 後! C# Tokyo カンファレンス 開催予告 CM!

C# Tokyo コミュニティが「 【登壇者募集中】.NET Conf 2025 後! C# Tokyo カンファレンス 」を開催します。

今回は予告 CM があります!

今回は予告 CM があります。かっこいいので、いいと思った方は、グッドボタン & チャンネル登録をお願いします。

■ イベント概要

.NET Conf 2025

www.dotnetconf.net

2025年の10~12月には、多くのMicrosoft年次イベントが開催されました。.NET 10 のリリースに合わせた表題の .NET Confはもちろん、Microsoft Ignite、GitHub Universe等も開催され、興味深い情報が盛りだくさん。日本の IT エンジニアも乗るしかない、この大きな波に! .NET で盛り上がるお祭りが日本でも欲しい! そうですねよ、わかります。

.NET のお祭りだ!

C# Tokyo が日本の IT エンジニアによる登壇型のイベントを開催します。

イベント概要

通常の登壇型のイベントです。.NET のことであれば .NET Conf の発表内容に触れなくても構いません。他のイベントの内容でも、イベントの内容でなくとも (該当技術のお話なら) OKです。

■ イベントページ

イベントページはこちらです。
csharp-tokyo.connpass.com

今すぐ登録!

登壇枠もまだ空いています。

【メタバース】メタバースでLT会&もくもく会! Vket技術・学術系ウィーク で登壇してきました。

【メタバース】メタバースでLT会&もくもく会! Vket技術・学術系ウィーク で登壇してきました。
【メタバース】メタバースでLT会&もくもく会! Vket技術・学術系ウィーク - connpass

■ C# で Dataverse API を使う

登壇タイトルは「C# で Dataverse API を使う」でした。

■ 概要

Microsoft Power Plarform の Dataverse を使う動機と、Dataverse クライアントを C# で作る動機を話しています。
開発のための情報のソース、使用するライブラリ、
そこから、開発の注意点と話を進めています。

皆さんもぜひ、Dataverse Web API で遊んでみてください。

■ C# Tokyo コミュニティ

C# Tokyo コミュニティでは C# をテーマにイベントを継続的に開催しています。
ぜひ、connpass をチェックしてイベントに参加してみてください。きっと楽しいと思います!

C# Tokyo - connpass

C# 14 を改めて確認しよう! 最新動画での発見 演算子オーバーロード

C# 14 を使いたい! そう思っていますね? わかります。私もです。

.NET 10 ももうリリースになります。となれば当然に皆さんお待ちかねの C# 14 を皆が使い始めます。私も使います。

■ 前回までの C# 14

C# 14 の新機能ですが、前回までの記事で機能リスト的には Preview 版の時に追いかけていた内容とほぼ同じ、コードもほぼそのまま、ほぼ何もしなくてもビルドできるとわかりました。

■ C# 14 の動画

こちらで C# 14 が語られています。

www.youtube.com

その中で気になることを知りました。

■ 知った機能を使ったコード

Console.WriteLine((new A { MyProperty = 10 } - new A { MyProperty = 3 }).MyProperty); // 出力は 「7」

class A
{
    public int? MyProperty { get; set; }
}

static class Ex2
{
    extension(A)
    {
        public static A operator -(A a, A b) => new A { MyProperty = a?.MyProperty - b?.MyProperty };
    }
}

新しい拡張メンバーの書き方で演算子を定義できます。

■ 演算子オーバーロード

演算子オーバーロードの公式ドキュメントはこちらです。

learn.microsoft.com

観てお分かりの通り、演算子オーバーロードは左辺のクラスに 左辺・右辺の値を引数にとる static メソッドを定義ています(二項演算子の場合)。
こんな感じです。

class A
{
    public int? MyProperty { get; set; }
    public static A operator -(A a, A b) => new A { MyProperty = a?.MyProperty - b?.MyProperty };
}

■ これまでの拡張メソッド

今回演算子オーバーロードは拡張メンバーで書けるとのことですので、昔からの拡張メソッドでも書けたのか? と思い試しに書いてみました。すると驚きの結果に。
なんと! ダメでした。

static class Ex1
{
    // これはエラー 「'Ex1.operator -(A, A)': 静的クラスにユーザー定義の演算子を含めることはできません」
    public static A operator -(A a, A b) => new A { MyProperty = a?.MyProperty - b?.MyProperty };
    // これはエラー 「キーワード 'this' は現在のコンテキストでは使用できません」
    public static A operator *(this A a, A b) => new A { MyProperty = a?.MyProperty * b?.MyProperty };
}

■ あたらしい拡張メンバー

ちなみに拡張メンバーにも複数の機能があります。型にスタティックメソッドを追加する機能と、インスタンスメンバーを追加する機能です。
結論として、インスタンスメンバーのパターンはダメでした。

static class Ex2
{
    // これはエラー 「オーバーロード可能な単項演算子が必要です」
    extension(A a)
    {
        // これはエラー 「User-defined operator 'Ex2.extension(A).operator *(A)' must be declared static and public」
        public A operator *(A b) { return new A { MyProperty = a.MyProperty - b?.MyProperty }; }
    }
}

■ これは使えるが

この拡張メンバーでオペレーターオーバーロードする機能・書き方、クラスがごちゃごちゃせずよさそうです。使っていきたい。
問題は、オペレーターオーバーロードをする機会が私には皆無だという点ですが。

C# 14 を改めて確認しよう! 最新記事での発見

C# 14 を使いたい! そう思っていますね? わかります。私もです。

.NET 10 ももうリリースになります。となれば当然に皆さんお待ちかねの C# 14 を皆が使い始めます。私も使います。

■ 前回までの C# 14

C# 14 の新機能ですが、前回までの記事で機能リスト的には Preview 版の時に追いかけていた内容とほぼ同じ、コードもほぼそのまま、ほぼ何もしなくてもビルドできるとわかりました。

■ .NET Blog の記事

こちらで C# 14 が語られています。

devblogs.microsoft.com

その中で気になることを知りました。

■ 知った機能を使ったコード

// ??=
c = null;
Console.WriteLine((c ??= new() { P = "saitama 2025" })?.P);  // saitama 2025

こんなコードです Null 合体演算子 ( ?? ) を ??= と使えること。知らなかったです。発見!

■ 次回

次回は、もう一つ発見したことがあるので、書いてみたいと思います。