Goブログ

Go開発者調査 2021 結果

Alice Merrick
2022年4月19日

素晴らしい回答をくださったコミュニティに感謝します!

2021年、10月26日から11月16日にかけてGo開発者調査を実施し、11,840件の回答をいただきました。これは、6年間の調査の中で過去最多の回答数です。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が採用されなかった実際のケースとその理由をターゲットにするために、質問を修正しました。まず、回答者が昨年、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を使うとしましょう。どのようにコインを配分しますか?」GopherCoinを大幅に多く受け取った2つの分野は、依存関係管理(モジュールの使用)とバグの診断であり、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

どの分野にベストプラクティスのドキュメントに投資すべきか?

回答者の半数は、パフォーマンスの最適化とプロジェクトディレクトリ構造に関するベストプラクティスについて、より多くのガイダンスを求めていました。当然のことながら、Goの使用期間が1年未満の新しいGopherは、経験豊富な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 を使用したクラウドサービスの開発エクスペリエンスを向上させ続けたいと考えています。3 大グローバルクラウドプロバイダー (Amazon Web Services、Google Cloud Platform、Microsoft Azure) に Go プログラムをデプロイしている回答者の割合は、今年もほぼ横ばいで、自社または会社所有のサーバーへのオンプレミスデプロイは減少を続けています。

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

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

Bar charts of proportion of services being used with each provider

今年の変更点

昨年、私たちはモジュール式調査設計を導入し、調査を長くすることなく、より多くの質問をすることができるようにしました。今年もモジュール式設計を継続しましたが、一部の質問は廃止され、他の質問は追加または変更されました。すべての質問が表示された回答者はいませんでした。さらに、前の質問に基づいて選択的に質問されたため、サンプルサイズがはるかに小さい質問もあります。

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

Proportion of respondents from each source

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

Go 経験の浅いユーザーの増加

ランダムに選択されたサンプルには、Go 経験の浅いユーザー (Go を 1 年未満使用しているユーザー) の割合が高くなっていました。Go 経験の浅いユーザーは、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 ブログなどのソーシャルチャネルを Go 関連の質問に答えるためのトップリソースとして評価する可能性が低かったため、これらのチャネルに掲載された調査広告を見る可能性が低かった可能性があります。

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

結論

2021 年開発者調査の結果をご確認ください。改めて、主なポイントをいくつかご紹介します。

  • 前年比の指標のほとんどは安定しており、ほとんどの変更はサンプルの変更によるものです。
  • Go への満足度は依然として高いです!
  • 回答者の 4 分の 3 が職場で Go を使用しており、多くの人が毎日 Go を使用しているため、皆さんの仕事がスムーズに進むようにお手伝いすることが最優先事項です。
  • デバッグと依存関係管理ワークフローの改善を優先します。
  • 私たちは、あらゆる種類の Go ユーザーにとってインクルーシブなコミュニティとなるよう、Go を発展させ続けていきます。

開発者の経験と課題を理解することは、私たちの進捗状況を測定し、Go の未来を方向付けるのに役立ちます。この調査にご協力いただいた皆様に改めて感謝申し上げます。皆様のご協力なしには、この調査は実現しませんでした。来年も皆様にお会いできるのを楽しみにしています!

次の記事: Go での開発に関するフィードバックを共有する
前の記事: ジェネリクスを使用する場合
ブログインデックス