The Go Blog(Go ブログ)

Go 開発者調査 2020 結果

Alice Merrick
2021年3月9日

素晴らしい回答をありがとうございました!

2020 年には、9,648 件の回答があり、2019 年とほぼ同数の素晴らしい結果が得られました。Go を使用した経験に関する貴重な洞察をコミュニティに提供していただき、ありがとうございました!

新しいモジュール式調査設計

一部の質問のサンプルサイズ(「n=」)が他の質問よりも小さいことに気付くかもしれません。これは、一部の質問は全員に表示されたのに対し、他の質問は回答者のランダムなサブセットにのみ表示されたためです。

ハイライト

誰が回答してくれたのでしょうか?

人口統計に関する質問は、前年比の差異が、調査に回答した人の変化によるものなのか、それとも感情や行動の変化によるものなのかを区別するのに役立ちます。人口統計が昨年と同様であるため、他の前年比の変化が主に人口動態の変化によるものではないと合理的に確信できます。

たとえば、組織の規模、開発者の経験、業界の分布は、2019 年から 2020 年にかけてほぼ同じままでした。

Bar chart of organization size for 2019 to 2020 where the majority have fewer than 1000 employees Bar chart of years of professional experience for 2019 to 2020 with the majority having 3 to 10 years of experience Bar chart of organization industries for 2019 to 2020 with the majority in Technology

回答者のほぼ半分(48%)が Go を 2 年未満使用しています。2020 年には、Go を 1 年未満使用している人からの回答が少なくなりました。

Bar chart of years of experience using Go

大多数は、仕事中(76%)と仕事以外(62%)で Go を使用していると回答しました。職場で Go を使用している回答者の割合は、年々増加傾向にあります。

Bar chart where Go is being used at work or outside of work

今年は、主な職務に関する新しい質問を導入しました。回答者の 70% の主な職務はソフトウェアとアプリケーションの開発ですが、かなりの少数派(10%)が IT システムとアーキテクチャの設計を行っています。

Primary job responsibilities

例年と同様に、ほとんどの回答者は Go のオープンソースプロジェクトに頻繁に貢献していないことがわかりました。75% が「めったにない」または「まったくない」と回答しています。

How often respondents contribute to open source projects written in Go from 2017 to 2020 where results remain about the same each year and only 7% contribute daily

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

例年と同様に、調査回答者の大多数は、Linux(63%)と macOS(55%)システムで Go を使用していると報告しています。主に Linux で開発を行っている回答者の割合は、時間の経過とともにわずかに減少傾向にあるようです。

Primary operating system from 2017 to 2020

初めて、エディターの選好が安定したようです。VS Code が最も好まれるエディター(41%)であり、GoLand が 2 位(35%)となっています。これら 2 つのエディターで回答の 76% を占め、他のエディターの選好は例年とは異なり減少を続けませんでした。

Editor preferences from 2017 to 2020

今年、回答者には、100「GopherCoins」(架空の通貨)を持っていた場合にどれくらい費やすかによって、エディターの改善の優先順位を付けてもらいました。コード補完は、回答者 1 人あたりの平均 GopherCoins 数が最も多くなりました。回答者の半分が、上位 4 つの機能(コード補完、コードナビゲーション、エディターのパフォーマンス、リファクタリング)に 10 コイン以上を割り当てました。

Bar char of average number of GopherCoins spent per respondent

回答者の大多数(63%)は、時間の 10~30% をリファクタリングに費やしています。これは、リファクタリングが一般的なタスクであることを示唆しており、改善方法を調査したいと考えています。また、リファクタリングのサポートが、最も資金が投入されたエディターの改善の 1 つであった理由も説明しています。

Bar chart of time spent refactoring

昨年、特定の開発手法について質問したところ、回答者のほぼ 90% がデバッグにテキストロギングを使用していることがわかりました。そのため、今年はフォローアップの質問を追加し、その理由を尋ねました。その結果、43% が異なる言語で同じデバッグ戦略を使用できるため、42% が他のデバッグ手法よりもテキストロギングを好むことがわかりました。ただし、27% は Go のデバッグツールの使い方がわからず、24% は Go のデバッグツールを使ったことがないため、発見可能性、使いやすさ、ドキュメントの面でデバッガツールを改善する余地があります。さらに、回答者の 4 分の 1 がデバッグツールを使ったことがないため、問題点が過小報告されている可能性があります。

Go に対する感情

今年初めて、全体的な満足度について質問しました。回答者の 92% が、過去 1 年間に Go を使用して非常に満足またはある程度満足していると回答しました。

Bar chart of overall satisfaction on a 5 points scale from very dissatisfied to very satisfied

これは、「推奨しますか…」という ネットプロモータースコア (NPS) の質問をした 3 年目です。今年の NPS の結果は 61(「推奨者」68% から「批判者」6% を引いた値)で、2019 年と 2018 年から統計的に変化していません。

Stacked bar chart of promoters, passives, and detractors

前年と同様に、回答者の 91% が次の新しいプロジェクトに Go を使用したいと回答しました。89% は、Go がチームにとってうまく機能していると回答しました。今年は、Go が自社の成功に不可欠であることに同意した回答者が、2019 年の 59% から 2020 年の 66% に増加しました。従業員数 5,000 人以上の大規模な組織で働いている回答者は同意する可能性が低い(63%)のに対し、小規模な組織で働いている回答者は同意する可能性が高い(73%)でした。

Bar chart of agreement with statements I would prefer to use Go for my next project, Go is working well for me team, 89%, and Go is critical to my company's success

昨年と同様に、回答者には、Go 開発の特定の分野を満足度と重要度に従って評価してもらいました。クラウドサービスの使用、デバッグ、モジュールの使用(昨年は改善の余地があると指摘された分野)に対する満足度は向上しましたが、ほとんどの重要度スコアはほぼ同じままでした。また、API と Web フレームワークという 2 つの新しいトピックも導入しました。Web フレームワークの満足度は他の分野よりも低い(64%)ことがわかります。現在のほとんどのユーザーにとってそれほど重要ではありませんでしたが(回答者の 28% のみが必要不可欠または非常に重要と回答)、Go 開発者志望者にとっては欠けている重要な機能かもしれません。

Bar chart of satisfaction with aspects of Go from 2019 to 2020, showing highest satisfaction with build speed, reliability and using concurrency and lowest with web frameworks

回答者の 81% が、Go を使用して非常に、または極めて生産性が高いと感じていると回答しました。大規模な組織の回答者は、小規模な組織の回答者よりも極めて生産性が高いと感じている可能性が高かったです。

Stacked bar chart of perceived productivity on 5 point scale from not all to extremely productive

Go を使えばすぐに生産性を上げられるという話をよく耳にします。少なくとも少しは生産性を感じている回答者に、生産性を上げるまでにどれくらいの時間がかかったかを尋ねました。93% が 1 年未満と回答し、大多数は 3 か月以内に生産性を発揮できると感じています。

Bar chart of length of time before feeling productive

昨年とほぼ同じですが、「Go コミュニティで歓迎されていると感じている」という声明に同意した回答者の割合は、時間の経過とともに減少傾向にあるか、少なくとも他の分野と同じ上昇傾向を維持していないようです。

また、Go のプロジェクトリーダーシップが自分のニーズを理解していると感じる回答者の割合が、前年比で大幅に増加しています(63%)。

これらの結果はすべて、Go の経験が増えるほど同意度が高くなるというパターンを示しており、約 2 年目から始まります。言い換えれば、回答者が Go を使用している期間が長いほど、これらのそれぞれのステートメントに同意する可能性が高くなります。

Bar chart showing agreement with statements I feel welcome in the Go community, I am confident in the Go leadership, I feel welcome to contribute, The Go project leadership understands my needs, and The process of contributing to the Go project is clear to me

Go コミュニティをより歓迎できるようにするためにできることについて自由回答形式の質問をしました。最も一般的な推奨事項(21%)は、学習リソースとドキュメントのさまざまな形式、または改善/追加に関連するものでした。

Bar chart of recommendations for improving the welcomeness of the Go community

Go を使った作業

API/RPC サービス(74%)と CLI(65%)の構築は、依然として Go の最も一般的な用途です。オプションの順序にランダム化を導入した昨年から、大きな変化は見られません。(2019 年以前は、リストの先頭にあるオプションが不均衡に選択されていました。)また、これを組織規模別に分類したところ、大企業でも小規模な組織でも Go の使用方法は似ていますが、大規模な組織では HTML を返す Web サービスに Go を使用する可能性がやや低いことがわかりました。

Bar chart of Go use cases from 2019 to 2020 including API or RPC services, CLIs, frameworks, web services, automation, agents and daemons, data processing, GUIs, games and mobile apps

今年、回答者が自宅と職場で Go でどのような種類のソフトウェアを書いているかをより深く理解できるようになりました。HTML を返す Web サービスは 4 番目に多いユースケースですが、これは仕事以外の用途によるものです。HTML を返す Web サービスよりも、自動化/スクリプト、エージェントとデーモン、データ処理に Go を使用している回答者のほうが多くいます。最も一般的でない用途(デスクトップ/GUI アプリ、ゲーム、モバイルアプリ)の大部分は、仕事以外で作成されています。

Stacked bar charts of proportion of use case is at work, outside of work, or both

もう 1 つの新しい質問では、各ユースケースに対する回答者の満足度を尋ねました。CLI の満足度が最も高く、回答者の 85% が CLI に Go を使用して非常に、ある程度、または少し満足していると回答しました。Go の一般的な用途は満足度が高くなる傾向にありますが、満足度と人気度は完全に一致するわけではありません。たとえば、エージェントとデーモンは満足度の割合が 2 番目に高いですが、使用率は 6 番目に位置しています。

Bar chart of satisfaction with each use case

さらにフォローアップの質問で、さまざまなユースケースについて調査しました。たとえば、回答者が CLI でどのプラットフォームをターゲットにしているかなどです。Linux と macOS の開発者の使用率が高く、Linux クラウドの使用率が高いことを考えると、Linux(93%)と macOS(59%)の割合が高いことは驚くことではありませんが、Windows でさえ CLI 開発者のほぼ 3 分の 1 がターゲットにしています。

Bar chart of platforms being targeted for CLIs

データ処理のための Go を詳しく見ると、Kafka が広く採用されている唯一のエンジンですが、回答者の大多数はカスタムデータ処理エンジンで Go を使用していると回答しました。

Bar chart of data processing engines used by those who use Go for data processing

回答者に、Go を使用しているより広範な領域についても質問しました。最も一般的な領域はWeb開発(68%)でしたが、データベース(46%)、DevOps(42%)、ネットワークプログラミング(41%)、システムプログラミング(40%)も一般的な領域でした。

Bar chart of the kind of work where Go is being used

昨年と同様に、回答者の76%が本番環境での使用のために現在のGoリリースを評価していることがわかりましたが、今年はタイムスケールを絞り込み、60%がリリース前またはリリース後2か月以内に新しいバージョンの評価を開始していることがわかりました。これは、サービスとしてのプラットフォームプロバイダーがGoの新しい安定版リリースを迅速にサポートすることの重要性を強調しています。

Bar chart of how soon respondents begin evaluating a new Go release

モジュール

今年は、Goモジュールのほぼ普遍的な採用が見られ、パッケージ管理にモジュールのみを使用する回答者の割合が大幅に増加しました。回答者の96%がパッケージ管理にモジュールを使用していると回答しており、昨年の89%から増加しています。回答者の87%がパッケージ管理にモジュール*のみ*を使用していると回答しており、昨年の71%から増加しています。一方、他のパッケージ管理ツールの使用は減少しています。

Bar chart of methods used for Go package management

モジュールに対する満足度も昨年から向上しました。回答者の77%がモジュールに非常に満足、中程度に満足、または少し満足していると回答しており、2019年の68%と比較して増加しています。

Stacked bar chart of satisfaction with using modules on a 7 point scale from very dissatisfied to very satisfied

公式ドキュメント

ほとんどの回答者は、公式ドキュメントに苦労していると述べています。回答者の62%は、アプリケーションの機能を完全に実装するのに十分な情報を見つけるのに苦労しており、3分の1以上が、これまでに行ったことのない作業を開始するのに苦労しています。

Bar chart of struggles using official Go documentation

公式ドキュメントで最も問題のある領域は、モジュールとCLI開発の使用に関するものでした。回答者の20%がモジュールのドキュメントが少し役に立たない、またはまったく役に立たないと感じており、CLI開発に関するドキュメントでは16%でした。

Stacked bar charts on helpfulness of specific areas of documentation including using modules, CLI tool development, error handling, web service development, data access, concurrency and file input/output, rated on a 5 point scale from not at all to very helpful

クラウドにおけるGo

Goは、最新の分散コンピューティングを念頭に置いて設計されており、Goを使用したクラウドサービスの構築における開発者エクスペリエンスを向上させ続けたいと考えています。

  • 3大グローバルクラウドプロバイダー(Amazon Web Services、Google Cloud Platform、Microsoft Azure)は、調査回答者における使用率が引き続き増加していますが、他のほとんどのプロバイダーは、毎年回答者のより少ない割合で使用されています。特にAzureは、7%から12%へと大幅に増加しました。
  • 自社所有または会社所有のサーバーへのオンプレミスデプロイメントは、最も一般的なデプロイメントターゲットとして減少を続けています。
Bar chart of cloud providers used to deploy Go programs where AWS is the most common at 44%

AWSとAzureにデプロイしている回答者は、マネージドKubernetesプラットフォームへのデプロイの増加が見られ、現在はそれぞれ40%と54%になっています。Azureでは、GoプログラムをVMにデプロイするユーザーの割合が大幅に減少し、コンテナの使用が18%から25%に増加しました。一方、GCP(すでにマネージドKubernetesの使用を報告している回答者の割合が高かった)では、サーバーレスCloud Runへのデプロイが10%から17%に増加しました。

Bar charts of proportion of services being used with each provider

全体として、回答者の大多数は、3つの主要なクラウドプロバイダーすべてでGoを使用することに満足しており、その数値は昨年から統計的に変化していません。回答者は、AWS(82%が満足)とGCP(80%が満足)のGo開発に同様の満足度を報告しました。Azureは低い満足度スコア(58%が満足)を受け取り、自由回答では、AzureのGo SDKとAzure FunctionsのGoサポートの改善の必要性がしばしば挙げられました。

Stacked bar chart of satisfaction with using Go with AWS, GCP and Azure

ペインポイント

回答者がGoをもっと使用できないと言う主な理由は、別の言語でプロジェクトに取り組んでいること(54%)、別の言語を使用することを好むチームで働いていること(34%)、Go自体に重要な機能が欠けていること(26%)です。

今年は、回答者がGoの使用を妨げない選択肢を選択できるように、「すでにGoを必要な場所で使用しています」という新しい選択肢を導入しました。これにより、他のすべてのオプションの選択率が大幅に低下しましたが、相対的な順序は変わりませんでした。「Goには重要なフレームワークが欠けている」というオプションも導入しました。

Goを使用しない理由を選択した回答者のみを見ると、前年比の傾向をよりよく理解できます。別の言語での既存のプロジェクトへの取り組みと、別の言語に対するプロジェクト/チーム/リーダーの好みは、時間の経過とともに減少しています。

Bar charts of reasons preventing respondents from using Go more

必要な言語機能がGoに欠けていると回答した回答者の26%のうち、88%がジェネリクスを重要な欠落機能として選択しました。その他の重要な欠落機能は、より良いエラー処理(58%)、null安全性(44%)、関数型プログラミング機能(42%)、およびより強力な/拡張された型システム(41%)でした。

明確にするために、これらの数値は、必要な重要な機能が1つ以上欠けているためにGoをもっと使用できるようになると回答した回答者のサブセットからのものであり、調査回答者全体からのものではありません。それを別の視点で見ると、回答者の18%はジェネリクスの欠如のためにGoを使用することができません。

Bar chart of missing critical features

回答者がGoを使用する際に報告した最大の課題は、再びGoのジェネリクスの欠如(18%)であり、モジュール/パッケージ管理と学習曲線/ベストプラクティス/ドキュメントの問題はどちらも13%でした。

Bar chart of biggest challenges respondents face when using Go

Goコミュニティ

今年は、回答者にGo関連の質問に答えるためのトップ5のリソースを尋ねました。昨年はトップ3のみを尋ねたため、結果は直接比較できませんが、Stack Overflowは65%で最も人気のあるリソースのままです。ソースコードの読み取り(57%)は依然として人気のあるリソースですが、godoc.org(39%)への依存は大幅に減少しています。パッケージ検索サイトpkg.go.devは今年リストに新たに加わり、回答者の32%にとって重要なリソースでした。 pkg.go.devを使用する回答者は、必要なGoパッケージ/ライブラリをすぐに見つけることができると同意する可能性が高くなります。pkg.go.devユーザーの場合は91%、他のユーザーの場合は82%です。

Bar chart of top 5 resources respondents use to answer Go-related questions

長年にわたり、Go関連のイベントに参加しない回答者の割合は増加傾向にあります。 Covid-19のため、今年はGoイベントに関する質問を変更し、回答者の4分の1以上が以前よりもオンラインのGoチャネルで多くの時間を費やしており、14%がバーチャルGoミートアップに参加していることがわかりました。これは昨年の2倍です。バーチャルイベントに参加した人の64%は、これが初めてのバーチャルイベントだったと述べています。

Bar chart of respondents participation in online channels and events

回答者の12%が、伝統的に過小評価されているグループ(民族性、性同一性など)に属していると回答しており、これは2019年と同じで、2%が女性と回答しており、2019年(3%)よりも少なくなっています。過小評価されているグループに属していると回答した回答者は、「Goコミュニティで歓迎されていると感じる」というステートメントに反対する割合が高かった(10%対4%)ことがわかりました。これらの質問により、コミュニティの多様性を測定し、アウトリーチと成長の機会を強調することができます。

Bar chart of underrepresented groups Bar chart of those who identify as women Bar chart of welcomeness of underrepresented groups

今年は支援技術の使用に関する質問を追加し、回答者の8%が何らかの形の支援技術を使用していることがわかりました。最も一般的に使用されている支援技術は、コントラストまたは色の設定(2%)でした。これは、アクセシビリティのニーズを持つユーザーがいることを思い出させてくれるものであり、Goチームが管理するWebサイトでの設計上の決定を促進するのに役立ちます。

Bar chart of assistive technology usage

Goチームは、単に正しいこととしてだけでなく、多様な声が私たちの盲点を明らかにし、最終的にすべてのユーザーに利益をもたらすことができるため、多様性と包括性を重視しています。性別や伝統的に過小評価されているグループを含む、機密情報について質問する方法は、データプライバシー規制に従って変更されており、将来的にはこれらの質問、特にジェンダーの多様性に関する質問をより包括的にしたいと考えています。

結論

2020年開発者調査の結果のレビューにご参加いただきありがとうございます。開発者の経験と課題を理解することは、進捗状況を測定し、Goの将来を導くのに役立ちます。この調査にご協力いただいた皆様に改めて感謝申し上げます。皆様のご協力なしには、この調査は実現できませんでした。来年もお会いできるのを楽しみにしています!

次の記事:ファジングはベータ版の準備ができました
前の記事:コンテキストと構造体
ブログインデックス