3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

G# とは — Go・Kotlin・Swift の書き味を .NET に持ち込むモダン言語

3
Last updated at Posted at 2026-08-05

G# — Go・Kotlin・Swift の書き味を、.NET のまま

「モダンで簡潔な構文が欲しい。でも .NET のランタイムや資産は手放したくない」——その両方を狙う新しい言語 G#(ジー・シャープ) が登場しました。作者は David Obando 氏で、2026 年 7 月に 0.3 リリースを発表。Microsoft の David Fowler 氏も「新しい .NET 言語 G#」として紹介し、注目を集めています。

この記事では G# の要点を、構文とコードで整理します。

G# とは何か

G# は、.NET のマネージドアセンブリへ直接コンパイルするプログラミング言語です。Go のパッケージ設計、Kotlin・Swift の null 安全といったモダンな言語設計を取り入れつつ、CLR ランタイム・BCL・NuGet・MSBuild・Portable PDB・C# 相互運用といった .NET の資産をそのまま使えます。作者いわく「C# は優秀だが大きい。G# は言語表面を小さく予測可能に保つ、という別の制約から始める」。

G# の立ち位置 — モダンな書き味と .NET の資産の両取り

モダンで簡潔な構文

package / import / func${...} の文字列補間。Go や Kotlin を触ったことがあれば、ほぼ説明なしで読めます。

package Hello
import System

func greet(name string) string {
    return "Hello, ${name}!"
}

Console.WriteLine(greet("world"))

data class は、構造的等価・with によるコピー・分解代入を自動生成します。C# のレコードに近い発想を、より短い記述で。

data class Person(Name string, Age int32)

let alice = Person("Alice", 30)
let older = alice with { Age = 31 }
let (n, a) = older

Console.WriteLine(alice == Person("Alice", 30))  // True

null は型システムに組み込まれていますnull ではなく nil を使い、素の T は nil を持てず、T? だけが nil を許容。取り出しは if let で安全に行えます。

func Greet(name string?) {
    if let n = name {
        Console.WriteLine("hi ${n}")
    } else {
        Console.WriteLine("hi stranger")
    }
}

非同期は async/awaitTaskTask[T] の上で動きます(ジェネリクスは角括弧 [])。特徴的なのが scope { ... } ブロックで、内部で開始した子タスクの完了(join)を自動で待ち合わせる構造化並行を強制します。数値型は int32 / uint64 / float64 のように幅が名前に現れ、値のサイズが明示されます。

.NET との相互運用

G# の実用性を支えるのが相互運用です。あらゆる .NET 型をそのまま呼べ、LINQ・プロパティ・IEnumerable[T] への for-in、P/Invoke まで対応します。xUnit のような既存のテスト資産も @Fact / @Theory / @InlineData でそのまま使えます。「新しい言語だが、.NET のエコシステムの中にいる」わけです。

3 コマンドで動かす

必要なのは .NET SDK だけ。テンプレートから作って走らせます。

dotnet new install Gsharp.Templates
dotnet new gsharp-console -n HelloG
cd HelloG && dotnet build && dotnet run

REPL の gsi、C#→G# 変換の cs2gs、VS Code 拡張も揃っています。なお G# は**プレ 1.0(v0.3)**で、相互運用の一部は emit のみ・移行ツールも拡大中です。まずは検証・学習から触れるのが安全でしょう。

もっと詳しく

本家ブログでは、サーバーで C# サービスを直接呼ぶ相互運用のデモダーク図解つきの言語機能まとめ3 ステップのチュートリアル(実コード+出力)David Fowler 氏の反応、FAQ まで掘り下げています。

👉 G# とは — Go・Kotlin・Swift の書き味を .NET に持ち込むモダン言語 | WithNext.NET

参照元: G# 公式 / GitHub


.NET / C# のモダナイゼーション、パフォーマンス最適化、AI 活用などの実践記事を WithNext.NET で発信しています。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?