The Go Blog

Go Developer Survey 2021 の結果

アリス・メリック
2022 年 4 月 19 日

コミュニティからの素晴らしい回答に心から感謝いたします!

2021 年に実施された Go 開発者向けアンケートは、10 月 26 日から 11 月 16 日まで行われ、11,840 件の回答をいただきました。これは、過去 6 年間のアンケートで最も多くの回答数です!Go を使用した経験に関する貴重な洞察をコミュニティに提供するために時間を割いていただき、ありがとうございました。

ハイライト

  • ほとんどの回答は例年通りでした。例えば、Go への満足度は依然として 92% と非常に高く、回答者の 75% が職場で Go を使用しています。
  • 今年は、Go VS Code プラグインを使用している参加者の一部をランダムに抽出したため、アンケート回答者の構成に若干の変化が見られました。
  • 最も一般的な Go 使用への障壁は、重要なライブラリ、言語機能、インフラストラクチャの欠如でした。(注: このアンケートは、ジェネリクスを搭載した Go 1.18 がリリースされる前に実施されました。ジェネリクスは、最も多く報告された不足機能の第 1 位でした)
  • 回答者は、デバッグと依存関係管理の改善を優先したいと考えています。
  • モジュール使用時の最大の課題は、バージョン管理、プライベートリポジトリの使用、マルチモジュールワークフローに関するものでした。(注: このアンケートは、これらの懸念の多くに対処するワークスペースを導入した Go 1.18 がリリースされる前に実施されました)。
  • 回答者の 81% がGo プロジェクトの長期的な方向性について自信を持っています。

誰から意見を聞いたか?

私たちのデモグラフィックは、毎年かなり安定しています(2020 年の結果を参照)。例年通り、Go は主にテクノロジー業界で使用されています。回答者の 70% がソフトウェア開発者で、IT または DevOps の分野にも数名おり、回答者の 76% が職場で Go を使用していると回答しました。回答者が働く業界の棒グラフ 仕事以外よりも仕事で Go が多く使用されていることを示す棒グラフ API/RPC サービスと CLI アプリが最も一般的な Go の用途の棒グラフ

2021 年の新しいデモグラフィック

  • ほとんどの回答者は、自分の組織をエンタープライズまたは中小企業と説明しており、約 4 分の 1 がスタートアップと説明しています。コンサルティング会社や公的機関ははるかに少なくなりました。
  • 回答者の大多数は、10 人未満のチームで働いています。
  • 半数以上(55%)の回答者が、職場で毎日 Go を使用しています。仕事以外での Go の使用頻度は低くなっています。
Bar chart of organization type where enterprise is the most common response Bar chart of team size where 2 to 5 is the most common size Frequency of using Go at work versus outside of work where using Go at work is most often on a daily basis and outside of work is less common and most often on a weekly basis

ジェンダー・アイデンティティ

私たちはアンケートでジェンダー・アイデンティティについて尋ねます。それは、結果に誰が代表されているかを知り、コミュニティの包括性を測るためのもう 1 つの側面を追加するためです。Go チームは多様性と包括性を重視しています。それは正しいことであるだけでなく、多様な意見がより良い意思決定に役立つからです。今年は、他のジェンダー・アイデンティティをより包括的にするため、ジェンダー・アイデンティティの質問の表現を変更しました。女性と回答した割合は例年とほぼ同じ(2%)でした。これはランダムに抽出されたグループでも同様であり、これがサンプリングのみによるものではないことを示唆しています。回答者のジェンダー・アイデンティティを示す棒グラフ。92% の回答者が男性と認識

補助テクノロジー

今年も、回答者の約 8% が何らかの補助テクノロジーを使用していることがわかりました。ほとんどの課題は、Go 関連のウェブサイトやコードエディタで、より高いコントラストのテーマとフォントサイズの増加を必要とすることでした。今年の後半には、ウェブサイトのフィードバックに基づいて行動する予定です。これらのアクセシビリティのニーズは、Go エコシステムに貢献する際に私たち全員が心に留めておくべきことです。

Go 採用への課題をさらに詳しく

今年は、Go が採用されなかった実際のケースとその理由に焦点を当てるように質問を修正しました。まず、回答者が過去 1 年間に Go と比較して別の言語の使用を評価したかどうかを尋ねました。回答者の 43% が、Go への切り替え、Go からの切り替え、または以前に確立された言語がなかった場合に Go を採用することを評価したと答えました。これらの評価の 80% は主にビジネス上の理由でした。

Chart showing proportion of respondents who evaluated Go against another language in the last year

Go の最も一般的なユースケースは、Go を評価する人にとって最も一般的な意図されたユースケースであると予想していました。API/RPC サービスが最も一般的な使用でしたが、驚くべきことに、データ処理が 2 番目に一般的な意図されたユースケースでした。

Chart showing the kind application they considered using Go

Go を評価した回答者のうち、75% が Go を使用することになりました。(もちろん、ほとんどすべてのアンケート回答者が Go を使用していると報告しているため、Go を評価して使用しないことを決定した開発者からの意見は聞いていない可能性があります。)

Chart showing proportion who used Go compared to those who stayed with the current language or chose another language

Go を評価したが使用しなかった人には、何が Go の使用を妨げたのか、そしてその中で何が主な障壁であったのかを尋ねました。Go の使用を妨げる障壁を示すグラフ

これらの結果から得られた図は、機能の欠如とエコシステム/ライブラリサポートの不足が Go 採用に対する最も重要な技術的障壁であるという以前の調査結果を裏付けています。

回答者が不足している機能やライブラリについてさらに詳しく尋ねたところ、ジェネリクスが最も一般的な重要な不足機能であることがわかりました。Go 1.18 でのジェネリクスの導入後、これはそれほど大きな障壁ではなくなると予想しています。次に一般的な不足機能は Go の型システムに関するものでした。Go の型システムに関する根底にあるニーズにジェネリクスの導入がどのように影響し、解決するかを見てから、追加の変更を行うことを検討したいと思います。今のところ、これらのニーズのコンテキストに関する情報をさらに収集し、将来的にはツール、ライブラリ、または型システムの変更などを通じてこれらのニーズを満たすさまざまな方法を検討する可能性があります。

不足しているライブラリについては、Go を採用したいと考えている人々の最大の部分の障壁を取り除くために、どのような追加が必要かについて明確なコンセンサスはありませんでした。これには追加の調査が必要です。

では、Go を選択しなかった場合、回答者は代わりに何を使用しましたか?

Chart of which languages respondents used instead of Go

Rust、Python、Java が最も一般的な選択肢です。Rust と Go には補完的な機能セットがあるため、Go がプロジェクトの機能要件を満たさない場合、Rust は良い選択肢となる可能性があります。Python を使用する主な理由は、不足しているライブラリと既存のインフラストラクチャサポートであったため、Python の大規模なパッケージエコシステムが Go への切り替えを困難にしている可能性があります。同様に、Java を代わりに使用する最も一般的な理由は Go の機能不足によるものであり、これは 1.18 リリースでのジェネリクスの導入によって緩和される可能性があります。

Go の満足度と優先順位付け

Go がうまくいっている点と改善できる点を見てみましょう。

昨年と同様に、回答者の 92% が過去 1 年間の Go の使用に非常に満足している、またはある程度満足していると回答しました。

Overall satisfaction on a 5 points scale from very dissatisfied to very satisfied

コミュニティの意見の年間傾向は、わずかな変動が見られました。Go を 3 か月未満使用している人は、これらの記述に同意する可能性が低い傾向にあります。回答者は、Go が自社の成功にとって不可欠であるとますます感じています。

Attitudes around using Go at work Community attitudes around welcomeness and confidence in direction of the Go project

優先順位付け

過去数年間、特定の分野について、満足度と重要度を評価するよう回答者に依頼しました。この情報を使用して、回答者にとって重要であるにもかかわらず、満足していない分野を特定します。しかし、これらの分野のほとんどは、重要度と満足度の両方でわずかな違いしか示していませんでした。

Scatter plot of importance compared to satisfaction showing most areas have high satisfaction and where binary size is less important than other areas

今年は、特定の分野での作業の優先順位付けの代替方法を検討するための新しい質問を導入しました。「Go での作業を改善するために 10 GopherCoin を費やすとします。コインをどのように分配しますか?」という質問です。依存関係管理(モジュールの使用)とバグの診断の 2 つの分野で、大幅に多くの GopherCoin が割り当てられており、これらは 2022 年にリソースを投入する予定の分野です。

Overall sum of coins spent on each area for improvement

モジュール使用時の課題

モジュール関連で最も一般的な課題は、複数のモジュールにわたる作業でした(回答者の 19%)。次に多かったのはバージョン管理に関するコメント(安定した v1 API へのコミットに関する不安を含む)でした。バージョン管理に関連して、回答の 9% がバージョン管理や依存関係の更新について議論しました。トップ 5 を締めくくったのは、プライベートリポジトリに関する課題(特に GitLab での認証を含む)と、さまざまな `go mod` コマンドを覚えたり、そのエラーメッセージを理解したりすることでした。

Go の学習

今年は、Go の経験レベルが異なる開発者間の相対的な生産性を探るために、新しい構成を採用しました。回答者の圧倒的多数(88%)が定期的に高いレベルの生産性に達していることに同意し、85% が Go でコードを書く際にしばしばフロー状態を達成できることに同意しています。Go の経験が増えるにつれて、同意の割合も増加します。

Charts showing proportion of respondents who agree they feel productive using Go and can achieve a state of flow while writing in Go

どの分野でベストプラクティス文書に投資すべきですか?

回答者の半数は、パフォーマンス最適化とプロジェクトディレクトリ構造に関するベストプラクティスについて、より多くのガイダンスを求めていました。当然のことながら、経験の浅い Gopher(Go を 1 年未満使用している人)は、経験豊富な Gopher よりも多くのガイダンスを必要としていましたが、上位の分野は両グループで一貫していました。特に、経験の浅い Gopher は、経験豊富な Gopher よりも並行処理に関するガイダンスを多く求めていました。

Chart showing which areas respondents want more guidance on best practices

開発者はどのように新しい言語を学習しますか?

回答者の約半数が職場で新しい言語を学びましたが、ほぼ同数(45%)が学校や仕事以外で学習しました。回答者は最も頻繁に(90%)一人で学習したと報告しています。職場で学習したと答えた人の中には、グループで学習する機会があったかもしれませんが、84% はグループではなく一人で学習しました。

Chart showing half of respondents learned a new language at work while 45% learned a new language outside of school or work Chart showing 90% of respondents learned their last new language alone

上位の多くのリソースは、優れたドキュメントの重要性を強調していますが、ライブでの指導も言語学習にとって特に有用なリソースとして際立っています。

Chart showing which resources are most helpful for learning a new programming language where reading reference docs and written tutorials are most useful

開発ツールとプラクティス

例年と同様に、アンケート回答者の圧倒的多数が Linux(63%)および macOS(55%)システムで Go を使用していると報告しました。主に Linux で開発する回答者の割合は、時間の経過とともにわずかに減少傾向にあるようです。

Primary operating system from 2019 to 2021

対象プラットフォーム

回答者の 90% 以上が Linux をターゲットにしています!macOS で開発する回答者の方が Windows よりも多いにもかかわらず、macOS よりも Windows にデプロイする頻度が高くなっています。

Chart showing which platforms respondents deploy their Go code on

ファジング

ほとんどの回答者はファジングに馴染みがなく、あるいはまだファジング初心者だと考えています。この調査結果に基づき、私たちは 1) Go のファジングに関するドキュメントが、Go でのファジングの具体的な内容に加えて、ファジングの概念も説明するようにすること、そして 2) 出力とエラーメッセージを実行可能なものに設計し、ファジングの初心者である開発者がそれをうまく適用できるように支援する予定です。

Chart showing proportion of respondents who have used fuzzing

クラウドコンピューティング

Go は現代の分散コンピューティングを念頭に置いて設計されており、Go を使ったクラウドサービスの開発体験を引き続き改善したいと考えています。Go プログラムを世界の 3 大クラウドプロバイダー(Amazon Web Services、Google Cloud Platform、Microsoft Azure)にデプロイする回答者の割合は今年もほぼ同じで、自社所有または会社所有のサーバーへのオンプレミスデプロイは減少傾向が続いています。

Bar chart of cloud providers used to deploy Go programs where AWS is the most common at 44%

AWS にデプロイする回答者は、マネージド Kubernetes プラットフォームへのデプロイが増加し、現在、3 大クラウドプロバイダーのいずれかにデプロイする回答者の 35% を占めています。これらすべてのクラウドプロバイダーで、Go プログラムを VM にデプロイするユーザーの割合が減少しました。

Bar charts of proportion of services being used with each provider

今年の変更点

昨年、アンケートを長くすることなく、より多くの質問ができるようにモジュラー型のアンケート設計を導入しました。今年もモジュラー型の設計を継続しましたが、一部の質問は廃止され、追加または修正された質問もありました。すべての回答者がアンケートのすべての質問を見たわけではありません。また、一部の質問は、前の質問に基づいて選択的に尋ねられたため、サンプルサイズがはるかに小さい場合があります。

今年のアンケートで最も重要な変更は、参加者の募集方法でした。これまでは、Go Blog でアンケートを発表し、Twitter、Reddit、Hacker News などのさまざまなソーシャルチャンネルで取り上げられていました。今年は、従来のチャンネルに加えて、VS Code Go プラグインを使用して、ランダムにユーザーを選択し、アンケートへの参加を促すプロンプトを表示しました。これにより、従来のチャンネルから自己選択した回答者と比較するためのランダムサンプルが作成され、自己選択バイアスの潜在的な影響を特定するのに役立ちました。

Proportion of respondents from each source

回答者のほぼ 3 分の 1 がこの方法で集められたため、今年の回答に大きな影響を与える可能性がありました。これら 2 つのグループに見られる主な違いは次のとおりです。

より多くの新しい Gopher

ランダムに選択されたサンプルには、新しい Gopher(Go を 1 年未満使用している人)の割合が高く含まれていました。新しい Gopher は Go エコシステムやソーシャルチャネルにあまり詳しくないため、他の方法でアンケートを見つけるよりも IDE で宣伝されているアンケートを見る可能性が高かったのかもしれません。理由はどうあれ、Go コミュニティのより幅広い層から意見を聞くことができたのは素晴らしいことです。

Comparison of proportion of respondents with each level of experience for randomly sampled versus self-selected groups

より多くの VS Code ユーザー

VS Code プラグインからアンケートに回答した人の 91% が Go を使用する際に VS Code を好むというのは、驚くことではありません。その結果、今年は VS Code のエディタの好みが大幅に高くなりました。ランダムサンプルを除外すると、結果は昨年と統計的に異ならないため、これはサンプルの変更によるものであり、全体的な好みによるものではないことがわかります。同様に、VS Code ユーザーは他の回答者よりも Windows で開発する可能性が高いため、今年は Windows の好みがわずかに増加しています。また、VS Code エディタの使用で一般的な特定の開発手法の使用にもわずかな変化が見られました。

Grouped bar chart of which editor respondents prefer from each sample group Grouped bar chart of primary operating system respondents use to develop go on Grouped bar chart showing which techniques respondents use when writing in Go

異なるリソース

ランダムに選択されたサンプルは、Go Blog などのソーシャルチャネルを Go 関連の質問に答えるための上位リソースとして評価する可能性が低く、したがって、これらのチャネルで宣伝されているアンケートを見る可能性が低かったのかもしれません。

Grouped bar chart showing the top resources respondents use when writing in Go

まとめ

2021 年の開発者アンケートの結果をレビューしていただき、ありがとうございます!繰り返しますが、いくつかの重要なポイントがあります。

  • 私たちの年間指標のほとんどは安定しており、ほとんどの変更はサンプルの変更によるものです。
  • Go への満足度は高いままです!
  • 回答者の 4 分の 3 が職場で Go を使用し、多くが毎日 Go を使用しているため、皆様の仕事の効率化は最優先事項です。
  • デバッグと依存関係管理のワークフローの改善を優先します。
  • あらゆる種類の Gopher にとって Go が包括的なコミュニティとなるよう、引き続き取り組んでいきます。

開発者の経験と課題を理解することは、私たちの進捗状況を測り、Go の将来の方向性を示すのに役立ちます。このアンケートに貢献してくださった皆様に改めて感謝いたします。皆様なしでは実現できませんでした。また来年お会いできることを楽しみにしています!

次の記事: Go での開発に関するフィードバックを共有してください
前の記事: ジェネリクスを使用する時期
ブログインデックス