The Go Blog
Go Developer Survey 2020 結果
素晴らしいご回答をありがとうございました!
2020年には、9,648件の回答という、2019年とほぼ同等の素晴らしい参加をいただきました。Goを使用された経験に関する洞察をコミュニティに提供するために時間を割いてくださった皆様に感謝いたします!
新しいモジュール式調査デザイン
一部の質問では、他の質問よりもサンプルサイズ(「n=」)が小さいことに気づくかもしれません。これは、すべての質問がすべての人に表示されたわけではなく、一部の質問は回答者のランダムなサブセットにのみ表示されたためです。
ハイライト
- Goの使用は職場や企業で拡大しており、回答者の76%が職場でGoを使用し、66%がGoが会社の成功に不可欠であると述べています。
- 全体的な満足度は高く、回答者の92%がGoの使用に満足しています。
- 回答者の大部分(81%がGoで非常にまたは極めて生産的であると感じている)は、3ヶ月未満でGoで生産性を感じ始めました。
- 回答者は最新のGoバージョンに迅速にアップグレードしていると報告しており、76%が最初の5ヶ月以内にアップグレードしています。
- pkg.go.devを使用している回答者は、非ユーザー(82%)よりもGoパッケージを見つけるのが成功しています(91%)。
- Goモジュールの採用はほぼ普遍的で、77%の満足度ですが、回答者はドキュメントの改善の必要性も指摘しています。
- Goは引き続きAPI、CLI、Web、DevOps、データ処理に多用されています。
- 過小評価されているグループは、コミュニティで歓迎されていないと感じる傾向があります。
誰から意見を聞いたか?
人口統計に関する質問は、前年比の差異が、調査に回答した人々の変化によるものか、感情や行動の変化によるものかを区別するのに役立ちます。今年の人口統計は昨年と同様であるため、他の前年比の変化が主に人口統計の変化によるものではないと合理的に自信を持つことができます。
例えば、組織の規模、開発経験、業界の分布は2019年から2020年までほぼ同じでした。
回答者のほぼ半数(48%)がGoを2年未満使用しています。2020年には、Goを1年未満使用している方からの回答が減少しました。
大多数が、職場でGoを使用している(76%)と、職場の外でGoを使用している(62%)と答えました。職場でGoを使用している回答者の割合は毎年増加傾向にあります。
今年は、主要な職務責任に関する新しい質問を導入しました。回答者の70%が主要な責任をソフトウェアおよびアプリケーションの開発であると回答しましたが、かなりの少数派(10%)はITシステムおよびアーキテクチャの設計を担当していました。
例年と同様に、ほとんどの回答者はGoのオープンソースプロジェクトに頻繁に貢献しておらず、75%が「めったにない」または「一度もない」と回答しました。
開発ツールとプラクティス
例年と同様に、調査回答者の圧倒的多数がLinux(63%)とmacOS(55%)システムでGoを扱っていると報告しました。主にLinuxで開発している回答者の割合は、時間とともにわずかに減少しているようです。
初めて、エディタの好みは安定したようです。VS Codeが最も好まれるエディタ(41%)であり続け、GoLandが強力な2番手(35%)です。これらのエディタを合わせると回答の76%を占め、他の好みが以前の年のように減少し続けることはありませんでした。
今年は、架空の通貨である100「GopherCoins」を持っていると仮定した場合に、エディタの改善にどれくらいの費用をかけるかによって、その優先順位付けを回答者に求めました。コード補完は、回答者あたりのGopherCoinsの平均数が最も高くなりました。回答者の半数が、上位4つの機能(コード補完、コードナビゲーション、エディタのパフォーマンス、リファクタリング)に10コイン以上を与えました。
回答者の過半数(63%)が、時間の10~30%をリファクタリングに費やしており、これは一般的なタスクであることを示唆しており、これを改善する方法を調査したいと考えています。これは、リファクタリングのサポートが最も資金提供されたエディタの改善の1つであった理由も説明しています。
昨年、特定の開発者テクニックについて質問したところ、回答者のほぼ90%がデバッグにテキストロギングを使用していることがわかりました。そこで今年は、その理由を尋ねる追跡調査の質問を追加しました。結果によると、43%が異なる言語で同じデバッグ戦略を使用できるため、そして42%が他のデバッグテクニックよりもテキストロギングを使用することを好むため、それを使用しています。しかし、27%がGoのデバッグツールの使い方を知らず、24%がGoのデバッグツールを試したことがないため、発見可能性、使いやすさ、ドキュメントの面でデバッガーツールを改善する機会があります。さらに、回答者の4分の1がデバッグツールを試したことがないため、問題点が過小報告されている可能性があります。
Goに対する感情
今年初めて、全体的な満足度について質問しました。回答者の92%が、過去1年間Goを使用することに非常にまたはある程度満足していると回答しました。
「お勧めしますか…」というネットプロモータースコア(NPS)の質問は、今年で3年目です。今年のNPSの結果は61(「プロモーター」68%から「デトラクター」6%を引いた値)で、2019年および2018年から統計的に変化はありませんでした。
前年と同様に、回答者の91%が次の新しいプロジェクトにGoを使用したいと回答しました。89%がGoがチームにとってうまく機能していると回答しました。今年は、Goが会社の成功に不可欠であると同意する回答者が2019年の59%から2020年には66%に増加しました。従業員5,000人以上の組織で働いている回答者は同意する可能性が低く(63%)、小規模な組織の回答者は同意する可能性が高い(73%)傾向が見られました。
昨年と同様に、Go開発の特定の領域について、満足度と重要度に応じて回答者に評価を求めました。クラウドサービスの利用、デバッグ、モジュールの利用(昨年、改善の機会として強調された領域)の満足度が向上する一方で、ほとんどの重要度スコアはほぼ同じままでした。また、APIとWebフレームワークという新しいトピックをいくつか導入しました。Webフレームワークの満足度が他の領域よりも低いこと(64%)がわかります。現在のほとんどのユーザーにとってはそれほど重要ではありませんでしたが(回答者の28%のみが非常にまたは極めて重要であると回答)、将来のGo開発者にとっては不足している重要な機能である可能性があります。
回答者の81%が、Goを使用することに非常にまたは極めて生産的であると感じていると回答しました。大規模な組織の回答者は、小規模な組織の回答者よりも極めて生産的であると感じる可能性が高い傾向がありました。
Goではすぐに生産的になれるという話をよく聞きます。少なくとも少し生産的であると感じている回答者に、生産的になるまでにどれくらいの時間がかかったかを尋ねました。93%が1年未満と回答し、大多数は3ヶ月以内に生産的になったと感じていました。
昨年とほぼ同じですが、「Goコミュニティで歓迎されていると感じる」という発言に同意する回答者の割合は、時間とともに減少傾向にあるか、少なくとも他の分野と同じような上昇傾向を維持していないようです。
Goプロジェクトのリーダーシップが自分たちのニーズを理解していると感じる回答者の割合も、前年比で大幅に増加しています(63%)。
これらの結果はすべて、Goの経験が増えるにつれて、約2年目から同意の度合いが高まるパターンを示しています。つまり、Goを長く使用している回答者ほど、これらの各記述に同意する可能性が高かったということです。
Goコミュニティをより歓迎的なものにするために何ができるかという自由記述形式の質問をしたところ、最も一般的な推奨事項(21%)は、学習リソースとドキュメントの異なる形式または改善/追加に関するものでした。
Goを使う
API/RPCサービスの構築(74%)とCLIの構築(65%)は、Goの最も一般的な用途であり続けています。昨年、オプションの順序にランダム化を導入したことで(2019年以前はリストの先頭にあるオプションが不均衡に選択されていました)、昨年から大きな変化は見られません。また、組織の規模別にもこれを分類したところ、大規模な企業でも小規模な組織でもGoの使い方は同様ですが、大規模な組織ではHTMLを返すWebサービスにGoを使用する可能性がわずかに低いことがわかりました。
今年は、回答者が自宅と職場でGoでどのような種類のソフトウェアを作成しているかについて、より良く理解できるようになりました。HTMLを返すWebサービスが4番目に一般的なユースケースですが、これは仕事以外の使用によるものです。HTMLを返すWebサービスよりも、自動化/スクリプト、エージェントとデーモン、およびデータ処理のためにGoを使用している回答者が多くいました。最も一般的でない用途(デスクトップ/GUIアプリ、ゲーム、モバイルアプリ)のより大きな割合が、仕事以外で書かれています。
もう一つの新しい質問は、各ユースケースについて回答者がどれくらい満足しているか尋ねるものでした。CLIは最高の満足度を誇り、回答者の85%がCLIにGoを使用することに非常に、中程度に、またはわずかに満足していると回答しました。Goの一般的な用途は、より高い満足度スコアを持つ傾向がありましたが、満足度と人気は完全に一致しません。たとえば、エージェントとデーモンは2番目に高い満足度の割合を示しましたが、使用状況では6番目でした。
追加の追跡調査の質問では、さまざまなユースケース、たとえば回答者がCLIでどのプラットフォームをターゲットにしているかを探りました。Linux(93%)とmacOS(59%)が高い割合を占めているのは、開発者によるLinuxとmacOSの利用率が高く、Linuxクラウドの利用率が高いことを考えると驚くべきことではありませんが、Windowsでさえ、CLI開発者のほぼ3分の1にターゲットにされています。
データ処理におけるGoを詳しく見ると、Kafkaが唯一広く採用されているエンジンですが、回答者の大多数はGoをカスタムデータ処理エンジンと一緒に使用していると回答しました。
また、回答者がGoで作業するより大きな分野についても質問しました。最も一般的な分野は圧倒的にウェブ開発(68%)でしたが、その他の一般的な分野にはデータベース(46%)、DevOps(42%)、ネットワークプログラミング(41%)、システムプログラミング(40%)が含まれていました。
昨年と同様に、回答者の76%が現在のGoリリースを本番環境での使用のために評価していることがわかりましたが、今年は時間スケールを洗練し、60%がリリース前またはリリース後2ヶ月以内に新しいバージョンの評価を開始していることがわかりました。これは、サービスとしてのプラットフォームプロバイダーがGoの新しい安定版リリースを迅速にサポートすることの重要性を浮き彫りにしています。
モジュール
今年は、Goモジュールのほぼ普遍的な採用と、パッケージ管理にモジュールのみを使用している回答者の割合の著しい増加が見られました。回答者の96%がパッケージ管理にモジュールを使用していると回答し、昨年の89%から増加しました。回答者の87%がパッケージ管理にモジュールを「のみ」使用していると回答し、昨年の71%から増加しました。一方、他のパッケージ管理ツールの使用は減少しました。
モジュールの満足度も昨年から向上しました。回答者の77%がモジュールに非常に、中程度に、またはわずかに満足していると回答し、2019年の68%と比較して増加しました。
公式ドキュメント
ほとんどの回答者が、公式ドキュメントに苦労していると答えました。回答者の62%がアプリケーションの機能を完全に実装するのに十分な情報を見つけるのに苦労しており、3分の1以上がこれまでやったことのないことを始めるのに苦労しています。
公式ドキュメントの最も問題のある分野はモジュールの使用とCLI開発で、回答者の20%がモジュールのドキュメントを少しも役立たない、またはまったく役立たないと感じ、CLI開発に関するドキュメントでは16%でした。
クラウドでのGo
Goは最新の分散コンピューティングを念頭に置いて設計されており、Goでクラウドサービスを構築する開発者エクスペリエンスを引き続き改善したいと考えています。
- 世界三大クラウドプロバイダー(Amazon Web Services、Google Cloud Platform、Microsoft Azure)は、調査回答者間での利用が増加し続けており、他のほとんどのプロバイダーは毎年利用する回答者の割合が減少しています。特にAzureは、7%から12%へと大幅に増加しました。
- 自社所有または会社所有のサーバーへのオンプレミス展開は、最も一般的な展開ターゲットとして減少し続けています。
AWSおよびAzureにデプロイする回答者は、マネージドKubernetesプラットフォームへのデプロイが増加し、それぞれ40%および54%になりました。Azureは、GoプログラムをVMにデプロイするユーザーの割合が大幅に減少し、コンテナ使用が18%から25%に増加しました。一方、GCP(すでにマネージドKubernetesの使用を報告している回答者の割合が高かった)は、サーバーレスCloud Runへのデプロイが10%から17%に増加しました。
全体的に、回答者の過半数が3大クラウドプロバイダーすべてでGoを使用することに満足しており、その数値は昨年から統計的に変化していません。回答者はAWS(82%満足)とGCP(80%満足)でのGo開発に同様の満足度を報告しました。Azureは満足度スコアが低く(58%満足)、自由記述回答ではAzureのGo SDKとAzure FunctionsのGoサポートの改善の必要性がしばしば挙げられました。
問題点
回答者がGoをもっと使えないと答える主な理由は、別の言語でのプロジェクトでの作業(54%)、別の言語を好むチームでの作業(34%)、Go自体に重要な機能がないこと(26%)でした。
今年は、「すでに望む場所すべてでGoを使っている」という新しい選択肢を導入しました。これにより、回答者はGoの使用を妨げない選択を避けることができるようになりました。これにより、他のすべての選択肢の選択率が大幅に低下しましたが、相対的な順序は変わりませんでした。また、「Goには重要なフレームワークがない」という選択肢も導入しました。
Goを使用しない理由を選択した回答者のみを見ると、前年比の傾向がよりよくわかります。別の言語で既存のプロジェクトに取り組むことや、プロジェクト/チーム/リーダーが別の言語を好むことは、時間の経過とともに減少しています。
Goに必要な言語機能が不足していると回答した26%の回答者のうち、88%がジェネリクスを重要な不足機能として挙げました。その他の重要な不足機能は、より優れたエラーハンドリング(58%)、ヌル安全性(44%)、関数型プログラミング機能(42%)、より強力な/拡張された型システム(41%)でした。
明確にするために、これらの数値は、必要な重要な機能が1つ以上欠けていなければGoをもっと使えると回答した回答者のサブセットからのものであり、調査回答者全体のものではありません。これを考慮すると、回答者の18%がジェネリクスの不足のためにGoを使用できないでいます。
Goを使用する上で回答者が報告した最大の課題は、またしてもGoのジェネリクスの不足(18%)でした。モジュール/パッケージ管理と学習曲線/ベストプラクティス/ドキュメントの問題はともに13%でした。
Goコミュニティ
今年は、Go関連の質問に答えるための上位5つのリソースを回答者に尋ねました。昨年は上位3つしか尋ねなかったため、結果を直接比較することはできませんが、StackOverflowは引き続き最も人気のあるリソースで65%を占めています。ソースコードを読むこと(57%)も人気のあるリソースであり続けていますが、godoc.orgへの依存度(39%)は大幅に減少しました。パッケージ探索サイトpkg.go.devは今年リストに新しく加わり、回答者の32%にとって上位のリソースでした。pkg.go.devを使用している回答者は、必要なGoパッケージ/ライブラリを迅速に見つけることができると同意する可能性が高いです(pkg.go.devユーザーは91%、他のユーザーは82%)。
長年にわたり、Go関連のイベントに参加しない回答者の割合は増加傾向にあります。Covid-19の影響で、今年はGoイベントに関する質問を修正し、回答者の4分の1以上が例年よりもオンラインのGoチャネルで多くの時間を過ごしていること、そして14%がバーチャルGoミートアップに参加していることがわかりました(昨年の2倍)。バーチャルイベントに参加した人の64%は、それが初めてのバーチャルイベントだったと答えました。
回答者の12%が伝統的に過小評価されているグループ(民族、性自認など)に属していると回答しており、これは2019年と同じです。女性と認識しているのは2%で、2019年(3%)より少なくなっています。過小評価されているグループに属すると認識している回答者は、「Goコミュニティで歓迎されていると感じる」という発言に同意しない割合が、そうでない回答者よりも高い(10%対4%)ことが示されました。これらの質問により、コミュニティの多様性を測定し、アウトリーチと成長の機会を浮き彫りにすることができます。
今年は補助技術の使用に関する追加の質問を追加し、回答者の8%が何らかの補助技術を使用していることがわかりました。最も一般的に使用されている補助技術はコントラストまたは色の設定(2%)でした。これは、アクセシビリティのニーズを持つユーザーがいることを改めて認識させ、Goチームが管理するウェブサイトの設計決定の一部を推進するのに役立ちます。
Goチームは、多様性と包摂性を、単に正しいことであるだけでなく、多様な声が私たちの盲点に光を当て、最終的にすべてのユーザーに利益をもたらすためにも重視しています。性別や伝統的に過小評価されているグループを含む機密情報の尋ね方は、データプライバシー規制に従って変更されており、特にジェンダーの多様性に関するこれらの質問を、将来より包括的なものにしたいと考えています。
まとめ
2020年開発者調査の結果をご覧いただきありがとうございました!開発者の経験と課題を理解することは、私たちの進捗状況を測定し、Goの将来の方向性を定めるのに役立ちます。この調査にご協力いただいた皆様、改めてありがとうございました。皆様なしでは成し遂げられませんでした。来年もお会いできることを願っています!
次の記事:ファジングのベータ版が準備完了
前の記事:Contextと構造体
ブログインデックス