GitHub Copilot の GitHub Models で OpenAI o3-mini が Preview で使えるようになりました。
github.blog
コーディング ベンチマークで o1 を上回り、応答時間は o1-mini と同等とのことです。まあ正直、サンデープログラマの我々には応答速度の検証するほどの余裕はないので、出てくる返答の雰囲気だけ見ていきます。
■ GitHub Models、AI モデルを変更する
Copilot の AI モデルの変更は以前に記事を書きました。
rksoftware.hatenablog.com
記事は書きましたが、簡単なのでまたこの記事でも操作方法は掲載しておきましょう。
次の画像のようにチャット欄の隅で選択するだけです。

簡単ですね。
■ プログラム言語マニア度を測る
以前に試したコードをまた使って、どのくらいマニア垂涎の回答を得られるか見ていきましょう。信じられるのは、マニアだけです。マニアといえるほどの知識と熱い推しがなければ、Bing ってコピペでいいですからね。
rksoftware.hatenablog.com
試すコードはまたこちら。
このコードを今の C# コードにしてもらいましょう。
int[] array = new int[] { 1,2,3 }; List<int> list = new List<int>(); for(int i = 0; i < array.Length; i++) { list.Add(array[i]); }
参考回答
参考に Visual Studio が改善してくれたコードがこちらです。
using System.Linq; var list = (new int[] { 1,2,3 }).ToList();
■ GPT 4o
違和感がすごいですね。動くのでいいですけど。「AI の出したコードの中身がわかっていなくても、テストが通ればマージ OK」 という世界観を考えたとき、1,200% のマージ OK 度です。出てくるコードの違和感がこの程度であれば、どんどんマージして生産性上げていきましょう!

int[] array = new int[] { 1, 2, 3 }; List<int> list = new List<int>(array);
■ Claude 3.5 Sonnet (Preview)
実際かなりいいですね。このコードの中では不要な numbers 変数を作っているところは気になるかもしれませんが、こういうのは好みです。細かく変数にとるほうが素人が混じる場合は間違いが起こりにくいですし、玄人でもデバッグのステップ実行もしやすい場合もあります。いいと思います。

// Using modern C# features var numbers = new[] { 1, 2, 3 }; var list = numbers.ToList();
■ o1 (Preview)
これもイイ。実質というか同じですね。ただ、// ...existing code... が気になります。いや Copilot Chat はコードジェネレーターではないのでいいんですが、サンデーブロガー的にはこたつ記事的に Copilot の回答を貼るだけで記事にしたい夢があるので、// ...existing code... は少ないに越したことはないです。が皆さんはプロフェッショナル プログラマなので気にするところではないですよね。となればいいコードです。

// ...existing code... var array = new[] { 1, 2, 3 }; var list = array.ToList(); // ...existing code...
■ o3-mini (Preview)
ちょっとマテ。これはちょっと個性的ですね。ロジック部分は他よりむしろ良いコードですが、なんだその class Program と static void Main() そんな C# コード。もう何年も見ないですよ。

using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { int[] array = { 1, 2, 3 }; List<int> list = array.ToList(); } }
■ オープンな質問を投げるパワハラを試み
オープンな質問を投げるパワハラを試みてみましょう。
最新の C# のいいところ
コンテキストとしては冒頭のコードをエディタに開いています。
GPT 4o と Claude 3.5 Sonnet (Preview) はコンテキストのコードを話題に C# の機能の解説と推しをしますが、 o1 (Preview) と 01-mini (Preview) はコンテキストを無視して C# の新しめの機能を推しますね。どちらがいいのか、好みですね。サンデープログラマである我々としては o1 達の回答が刺さりますが、プロフェッショナルな現場のアマグラマには断然 4o や Claude でしょう。
■ GPT 4o

■ Claude 3.5 Sonnet (Preview)

■ o1 (Preview)

■ o3-mini (Preview)

■ 余談
Claude 3.5 Sonnet (Preview) だけ回答が英語になる再現性がありました。こういう時はカスタム インストラクション (別名? GitHub Copilot のカスタム指示) が有効と聞いています。
やってみましょう。
docs.github.com
こんなインストラクションを与えます。

実行結果

計画通り! 日本語になりました。問題は別に回答は英語であっても特に問題ない、というところですね。これもプロフェッショナルな現場であれば使えるかもしれません。
■ まとめ
自分自身が詳しいプログラミング言語では、別のモデルのほうがいいかもしれません。自分自身が詳しくないプログラミング言語または、プログラミングそのものが詳しくない人の場合は、 o1-mini よさそうな気がします。
私の中で「要は適材適所、使い分けだよ」おじさんが登場して終わりました。
いかがでしかた?
いかがでしたか?