#77273 "A change of view."
2026-01-22、Robert Griesemer が提案 #77273 "spec: generic methods for Go" を出した。本文の1行目は "A change of view." というそっけない一文だ。2026-02-25 に accepted (提出から34日)、2026-05-26 に実装・ドキュメント完了で close されている。コメントは250件を超えた。
提案本文は Go FAQ が却下した4案 を名指しで引用している。
The Go FAQ even states that "we do not anticipate that Go will ever add generic methods". Perhaps a change of view is in order
タイトルどおり、この提案が変えたのは実装方法ではなく見方である。FAQ が却下した4案のうち、実装上の難しさをどれか1つでも解決したわけではない。「ジェネリクスメソッドはインターフェース経由で呼べない」という制約は、そのまま諦めている。その上で「それでもメソッドには価値がある」と再定義したのが今回の変化だ。核心はこの引用に尽きる。
concrete methods are a language feature that is useful in itself, irrespective of interfaces. If a concrete method is a function with a receiver, a generic concrete method can be a generic function with a receiver.
面白いのは、この選択肢自体は2020年の元の Type Parameters Proposal にもすでに書かれていて、そのときは否定されていたことだ。「Or, we could decide that parameterized methods do not, in fact, implement interfaces, but then it's much less clear why we need methods at all.」当時は「メソッドがインターフェースを満たさないなら、そもそもメソッドである意味が薄い」と考えられていた。それに対する griesemer の2026年の答えが次の一文になる。「We may have reached some clarity on this point: generic concrete methods are useful by themselves, even if they don't implement interface methods.」つまり6年越しで、メソッドの存在意義をインターフェースから切り離して説明できるようになった、というのがこの提案の実質だ。
前身にあたる提案は2つある。2021年の #49085 (362コメント、ポジティブ絵文字900超) と、2022年の #50981。どちらも実現に至らず、#77273 で3度目にしてようやく通った。
closed になった後の2026-06-09に、「Go にジェネリクスは要らない」系の蒸し返しが起きているのも記録として興味深い。thepudds が #49085 → #50981 → #77273 という経緯と development freeze に入っていることを示して収束させたが、dominikh の返しが端的だった。
Go has had generics for four years now. This change merely extends where generics can be used.
言語仕様が決着した後も、波及は長く続いた。aclements のコメントにあるとおり「言語変更で長いのはコンパイラではなく、エコシステム全体への波及」である。実際、静的解析ツール群は generic methods への対応に苦しんだ (linter が Go 1.27 に追いついていない)。エクスポートデータ形式も UIR V4 へのバンプが必要になった (エクスポートデータ形式と UIR V4)。
言語側では、GOEXPERIMENT=genericmethods フラグが #79750 により2026-06-15に削除されている。rc1 (2026-06-18) 以降および正式版には存在せず、opt-out はできない。無条件で有効な言語機能として入った、ということになる。
出典
#77273
#49085
#50981
#79750
Go Release Party 1.27 の発表資料リポジトリ slide/deck.md (why-yes / change-of-view スライドとスピーカーノート)、issues.md §1・§9。