Go

共有:

これらの質問は 3 つの主要プログラミング言語の 1 つに Go を選択した開発者にのみ提示されました。

Go の使用目的は何ですか?

64%
65%

仕事

28%
28%

個人用途 / サイドプロジェクト

7%
5%

趣味

2%
2%

その他

その効率と速度、並行性機能、強力な標準ライブラリ、単純さ、および可読性で知られる Go は間違いなく本番運用可能な言語であるため、作業に Go を使用する開発者のシェアが増加しているのは驚くことではありません。Google、Dropbox、Microsoft、PayPal、Netflix といった多数の大企業が Go を本番環境で使用しています。

Go 開発には主にどの OS を使用していますか?

58%

MacOS

45%

Linux

30%

Windows

11%

WSL

このデータは Go チームが実施したアンケートで見た数字とある程度一致しています。Go はクラウドネイティブのアプリケーションと DevOps ツールの構築に広く使用されているため、「クラウド言語」とよく呼ばれています。Go 開発者が Linux と macOS を使用するのが一般的であるのはそのためです。

複数バージョンの Go を同時に使用していますか? 

Go 開発者のわずか約 3 分の 1 が 1 つのプロジェクトにのみ取り組んでいるのに対し、残りは同時に複数のプロジェクトに取り組んでいます。

どのバージョンの Go を使用していますか?

47%

1.20

46%

1.19

27%

1.18

11%

1.17

6%

1.16

3%

1.15

7%

その他

Go は下位互換性に優れていますが、一部のユーザーは依然として複数のバージョンを同時に実行しています。そのようなユースケースの 1 つとして、開発者が 2~3 個の異なるバージョンの Go を実行してリグレッションを捕捉し、その他の問題を検出するように CI をセットアップしている場合が挙げられます。

Go 開発にはどのテンプレートエンジンを使用していますか?

27%

html/template

16%

text/template

5%

Pongo2

2%

Plush

1%

その他

61%

該当なし

html/template が上位に上がるのは当然です。このパッケージはユーザー生成データなどの潜在的に危険なコンテンツを自動的にエスケープ処理し、コードインジェクション攻撃の防止に役立ちます。

同じプロジェクトでどの言語を Go と共に使用していますか?

32%

JavaScript

28%

Python

26%

TypeScript

10%

C

6%

Rust

5%

C++

21%

その他

最近の Go アンケートによると、Go 開発者の 37% が Go を使用してウェブサイトとウェブサービスを構築しています。このデータから、多数の開発者が同じプロジェクトで JavaScript、TypeScript、Go を併用している理由がわかります。

Python が上位にランクインしているのは、多数の Python プロジェクトが Go に移行している傾向にあることが原因だと思われます。開発者が Python で書かれたプロジェクトに新しいサービスを追加する場合、効率、並行性のサポート、ネットワーキングとウェブサービスでの強力なパフォーマンスで知られる Go を使用して追加する傾向があります。このアプローチには欠点があるものの、開発者がコードベースを書き換える必要はありません。

GoLand は JavaScript と TypeScript を初期状態でサポートしています。また、Python Community Edition プラグインをインストールして、その Python サポートを利用することもできます。

Go でどのようなソフトウェアを開発していますか?

41%

ユーティリティ

37%

ウェブサイト

32%

IT インフラ

27%

ライブラリ / フレームワーク

24%

システムソフトウェア

19%

プログラミングツール

16%

データベース / データストレージ

ワークスペース(go.work)を使用していますか?

ワークスペースモードは Go 1.18 で導入されたもので、開発者がモジュールごとに go.mod ファイルを編集せず、同時に複数のモジュールで作業することを可能にします。Go ワークスペースを使用することで、1 つの go.work ファイルを使ってすべての依存関係を管理することができます。

どの Go ウェブフレームワークを定期的に使用していますか?

46%

51%

Gin

44%

43%

net / http

11%

13%

Echo

6%

6%

Beego

2%

2%

Buffalo

昨年と同様に Gin フレームワークがウェブ開発で最も一般的なソリューションとなっていますが、標準ライブラリの net/http パッケージはその地位を維持し続けています。Gin と net/heep の違いをより良く理解するには、Go REST ガイドをご覧ください。

どのような Go Modules プロキシを使用していますか?

41%

プロキシは使用していない

27%

公開 goproxy.io / goproxy.cn

21%

公開 proxy.golang.org

12%

非公開 goproxy

3%

非公開 JFrog Artifactory

2%

非公開 Athens

1%

その他

8%

分からない

プロジェクトでベンダリングを使用していますか?

Go におけるベンダリングとは、特定のプロジェクトに必要な依存関係のコピーをローカルに作成し、それをファイル構造に含めることです。そうすればアプリケーションの構築に必要なすべてのコードを確実にプロジェクトに含めることができるため、外部ソースから依存関係をダウンロードする必要がありません。

ほとんどのアプローチと同様に、ベンダリングにもいくつかの欠点があります。開発者の中にはコードリポジトリの透明性が低下し、変更のレビューが困難になると考える人もいます。Go モジュールを使うことで、開発者は依存関係をキャッシュして常に適切なパッケージバージョンを入手可能にする Go プロキシなどの機能によってベンダリングを避けることができます。

どの Go ルーターを定期的に使用していますか?

37%

標準ライブラリ

27%

gorilla / mux

13%

go-chi / chi

4%

julienschmidt / httproute

4%

gocraft / web

1%

go-zoo / bone

10%

その他

27%

該当なし

標準ライブラリが依然として gorilla/mux と go-chi/chi という 2 つの人気ルーターを上回っています。gorilla/mux と標準ライブラリの違いをより良く理解するには、Go REST ガイドをご覧ください。

どのテストフレームワークを定期的に使用していますか?

34%

ユニットテストは書いているがフレームワークは使用していない

27%

testify

21%

gomock

5%

go-sqlmock

5%

ginkgo

3%

goconvey

2%

gomega

1%

godog

2%

その他

23%

Go のユニットテストは書いていない

プロジェクトには外部依存関係がいくつありますか?

IDE / エディター内で作業しているコードベースの規模はどれくらいですか?

27%

24%

50 ファイル以下

25%

24%

51~100 ファイル

16%

19%

101~300 ファイル

13%

15%

301~1,000 ファイル

7%

7%

1,001~5,000 ファイル

ジェネリクスを使用していますか?

22%

はい(定期的)

34%

はい(時々)

26%

いいえ。ただし、試したことはある

19%

いいえ。まだ試したことはない

ジェネリクスのサポートは以前から Go 開発者から要望がありましたが、2022 年 3 月の Go 1.18 でようやく追加されました。それから 1 年ほど経ち、Go 開発者の 80% 以上がジェネリクスを使用しているか、使用したことがあると答えています。

次のうちどれに TinyGo を使用したことがありますか?

75%

使用したことはない

11%

CLI のビルド

9%

WebAssembly を使うプロジェクト

9%

マイクロコントローラー

TinyGo は組み込みシステムまたは WebAssembly 向けに小規模の効率的なプログラムを作成する必要がある場合に優れた結果を出します。この結果が示すように、TinyGo は CLI の作成にも使用されています。Go には優れた標準ライブラリが備わっていますが、基本的なタスクを実行する CLI を作成している場合はその性能をすべて引き出す必要はないでしょう。このような場合には TinyGo がより適したツールとなります。CLI を小規模かつ正確に維持できるためです。

どのビルドシステムを定期的に使用していますか?

87%

Go build

44%

Makefile

6%

Gradle

3%

Bazel

1%

上記のどれでもない

3%

その他

最後までご覧いただきありがとうございました!

レポートはお役に立ちましたか?
ぜひこのレポートを友人や同僚と共有してください。

ご質問やご提案がございましたら、surveys@jetbrains.comまでお問合わせください。