diff --git a/summary/20260422_000856_golang_trend.md b/summary/20260422_000856_golang_trend.md new file mode 100644 index 0000000..3006383 --- /dev/null +++ b/summary/20260422_000856_golang_trend.md @@ -0,0 +1,145 @@ +# Go言語トレンドサマリー (2026年4月) + +## 1. 最新バージョンと主要機能 + +### Go 1.26 (2026年2月リリース) — 最新安定版 + +- **Green Tea GC がデフォルト化**: Go 1.25で実験的に導入された新ガベージコレクタがデフォルトに昇格 +- **自己参照ジェネリクス型**: ジェネリクス型が自身の型パラメータリスト内で自己参照可能に +- **`new()` に初期値指定**: 組み込み `new` 関数で初期値を指定可能に +- **`go fix` リライト**: Go analysis frameworkを活用した数十の "modernizer" アナライザで既存コードを最新言語機能にアップグレード +- **cgo オーバーヘッド 30% 削減**: cgo呼び出しのベースラインオーバーヘッドを約30%削減 +- **ヒープアドレスランダム化**: 64bitプラットフォームでランタイムが起動時にヒープベースアドレスをランダム化(セキュリティ強化) +- **新パッケージ**: `crypto/hpke`, `crypto/mlkem/mlkemtest`, `testing/cryptotest` +- **ゴルーチンリークプロファイリング(実験的)**: `runtime/pprof` に新プロファイルタイプ追加 +- **スタック割り当てスライス**: コンパイラがより多くの状況でスライスバッキングストアをスタック上に割り当て可能に + +### Go 1.25 (2025年8月リリース) + +- **実験的 JSON v2**: `GOEXPERIMENT=jsonv2` で新JSON実装が利用可能 +- **core types 概念の削除**: Go 1.18で導入されたジェネリクスの "core types" を仕様から削除し、大幅に簡素化 +- **DWARF 5 デバッグ情報**: バイナリサイズ削減とリンク高速化 +- **`-asan` によるリーク検出**: C割り当てメモリのプログラム終了時メモリリーク検出 + +### Go 1.24 (2025年2月リリース) + +- **ジェネリクス型エイリアス**: 型エイリアスがパラメータ化可能に +- **ツール依存関係追跡**: `go.mod` に `tool` ディレクティブ追加(`tools.go` ワークアラウンド不要に) +- **Swiss Tables マップ実装**: 高パフォーマンスな新ビルトインマップ実装 +- **ポスト量子暗号**: TLSでECHおよびX25519MLKEM768鍵交換をデフォルト有効化 +- **WebAssembly**: `go:wasmexport` ディレクティブ、WASIリアクタ/ライブラリモジュールのビルドサポート +- **`os.Root` 型**: 特定ディレクトリにスコープされたファイルシステム操作 +- **`testing/synctest`(実験的)**: フェイクロックと分離ゴルーチン "バブル" による並行コードテスト + +--- + +## 2. ジェネリクスの進化 + +| バージョン | 変更内容 | +|-----------|---------| +| Go 1.18 (2022年3月) | ジェネリクス初導入、"core types" 概念 | +| Go 1.24 (2025年2月) | ジェネリクス型エイリアス追加 | +| Go 1.25 (2025年8月) | "core types" 概念を仕様から完全削除・簡素化 | +| Go 1.26 (2026年2月) | 自己参照ジェネリクス型サポート | +| Go 1.27 (2026年8月予定) | **ジェネリクスメソッド承認**(提案 #77273、2026年3月承認) | + +Go 1.27でのジェネリクスメソッド導入は、2022年のジェネリクス導入以来最大の進化であり、具体的なメソッド宣言に型パラメータを含めることが初めて可能になる。 + +--- + +## 3. コミュニティと採用状況 + +### TIOBE Index・市場動向 + +- **TIOBE Index 7位**(2025年4月時点、過去最高順位) +- 世界の開発者の **13.5%** がGoを利用(Stack Overflow Developer Survey) +- Python、TypeScriptに次ぐ **成長速度第3位** の言語 +- Go開発者の中央値年収は **$75,361**、米国シニアロールで最大 **$500,000** +- **11%** のソフトウェア開発者が今後12ヶ月以内にGoの採用を予定 + +### Go Developer Survey 2025 (2026年1月公開、回答者5,379名) + +- **満足度91%**(約2/3が「非常に満足」) +- **主要プロジェクト種別**: CLIツール (74%)、API/RPCサービス (73%)、ライブラリ/フレームワーク (49%) +- **AI開発ツール利用**: 多数が利用するも満足度は中程度(「非常に満足」13%、「やや満足」42%)。不満点: 非機能コード生成 (53%)、低品質コード (30%) +- **主な不満**: Goベストプラクティス/イディオムの遵守 (33%)、他言語の機能不足 (28%)、信頼できるモジュール発見 (26%) +- **開発環境**: macOS (60%)、Linux (58%)。デプロイ先: Linux (96%) +- **エディタ**: VS Code (37%)、GoLand/IntelliJ (28%)、Vim/NeoVim (19%) + +--- + +## 4. 人気フレームワーク・ライブラリ + +### Web フレームワーク + +| ランク | フレームワーク | 特徴 | +|-------|-------------|------| +| 1 | **Gin** | 最も人気の高いGoウェブフレームワーク、Martiniの最大40倍の性能 | +| 2 | **Beego** | 28,000+ GitHub Stars、エンタープライズ向け | +| 3 | **Echo** | ミニマリスト設計、RESTful API向け | +| 4 | **Chi** | `net/http` と `context` 上に構築、標準ライブラリとの高い親和性 | +| 5 | **Hertz** | CloudWeGoによる高性能HTTPフレームワーク、クラウドネイティブ最適化 | + +> **注目**: `net/http` 標準パッケージは引き続きGo開発者の最も一般的なルーティング選択肢。 + +### その他の注目ツール・ライブラリ + +- **log/slog** (stdlib): 標準構造化ロギングライブラリ(Go 1.21以降) +- **golangci-lint**: CI/CD・ローカル開発のデファクトリンターランナー + +--- + +## 5. AI / 機械学習エコシステム + +2026年、GoはAI/ML分野で大きな成長を遂げている。特に**プロダクション環境でのデプロイ、AIツーリング、エージェントフレームワーク**の領域で急成長。 + +### 主要AIエージェントフレームワーク + +| フレームワーク | 開発元 | 特徴 | +|-------------|--------|------| +| **Eino** | ByteDance / CloudWeGo | GoネイティブLLMアプリフレームワーク。ChatModel, Tool, Retriever, Embedding等のコンポーネント抽象化。OpenAI, Claude, Gemini, Ollama等対応。マルチエージェントオーケストレーション | +| **LangChain Go** | コミュニティ | LangChainのGo移植版。モジュラーチェーン、ローダー、リトリーバー | +| **Google ADK** | Google | エンタープライズ向けエージェント開発キット | +| **Firebase Genkit** | Google | AIアプリケーションの高速プロトタイピング | + +### 機械学習ライブラリ + +- **GoMLX**: Jan Pfeifer開発の高速MLフレームワーク、OpenXLAバインディング(CPU, GPU(NVIDIA), TPU対応) +- **Gorgonia**: ニューラルネットワーク / ディープラーニングライブラリ(GoのTensorFlow相当) +- **Gonum**: 数値計算ライブラリ +- **Golearn**: 汎用機械学習ライブラリ + +--- + +## 6. WebAssembly / WASI + +### 現状 (Go 1.24+) + +- `go:wasmexport` ディレクティブでGoの関数をWasmホストにエクスポート可能 +- WASIリアクタ/ライブラリとしてのビルドサポート(初期化後もプログラムが存続) + +### WASIp3 / WASI 0.3 (2026年初頭予定) + +- `wasip3/wasm` としてGoポートの提案が提出済(`GOOS=wasip3 GOARCH=wasm`) +- WASIp3は**イディオマティックなゴルーチン**をサポートする初のWASIマイルストーン + - 個々のゴルーチンがI/Oやスリープでブロックしても他のゴルーチンをブロックしない + - 異なる言語間のコンポーザブル並行性 + - ゼロコピーデータ処理による高性能ストリーミング + +### WASI 1.0 + +- 2026年後半〜2027年初頭をターゲット + +--- + +## 7. 今後の注目ポイント + +1. **Go 1.27 (2026年8月予定)**: ジェネリクスメソッドの導入が最大の目玉。複雑なデータ構造やインターフェース設計のパターンが大きく変わる可能性 +2. **AI エージェント開発**: GoでのLLMアプリケーション構築が本格化。Eino, LangChain Goを中心としたエコシステムの成熟 +3. **WASI 1.0**: WebAssemblyのポータブルランタイムとしてGoの適用範囲がさらに拡大 +4. **Green Tea GC の成熟**: 新GCによるレイテンシ・スループットの改善がプロダクション環境で実証されていく +5. **ポスト量子暗号**: Go標準ライブラリでのポスト量子暗号サポートが業界をリード + +--- + +*調査日: 2026年4月22日*