The Go Blog

Go 2018年調査結果

Todd Kulesza、Steve Francia
2019年3月28日

ありがとうございます

この投稿は、2018年のユーザー調査の結果をまとめ、2016年2017年の過去の調査結果との比較を示しています。

今年は、103か国から5,883人の回答がありました。Goの将来を形作るために、この調査を通じてフィードバックを提供してくれたすべての人に感謝します。ありがとうございました!

調査結果の概要

  • 初めて、回答者の半数がGoを日常的に使用しています。また、今年度は、仕事でGoを開発し、業務外の責任でGoを使用する回答者の数が大幅に増加しました。
  • Goの最も一般的な用途は、API/RPCサービスとCLIツールです。自動化タスクは、CLIツールやAPIサービスほど一般的ではありませんが、Goの急速に成長している分野です。
  • Web開発は、回答者が働く最も一般的な分野ですが、DevOpsは前年比で最も高い成長率を示し、現在2番目に一般的な分野となっています。
  • 回答者の大多数は、少なくとも1つの他の言語よりも習熟度が低いと感じているにもかかわらず、Goが最も好ましいプログラミング言語であると述べています。
  • VS CodeとGoLandの人気が急上昇しており、現在、回答者の間で最も人気のあるコードエディターとなっています。
  • Goの移植性の高さを示すように、多くのGo開発者は、開発に複数の主要OSを使用しています。LinuxとmacOSは特に人気があり、回答者の大多数がこれらのオペレーティングシステムのいずれか、または両方を使用してGoコードを書いています。
  • 回答者は、オンプレミスのGoデプロイメントから離れ、コンテナとサーバーレスクラウドデプロイメントに移行しているようです。
  • 回答者の大多数は、Goコミュニティで歓迎されていると感じており、Goコミュニティを改善するためのアイデアのほとんどは、新規参入者のエクスペリエンスの向上に焦点を当てています。

詳細については、以下をお読みください。

プログラミングの背景

今年の結果は、仕事の一環としてGoを書くために報酬を受けている回答者の数が大幅に増加していることを示しています(68%→72%)。これは、2016年の最初の調査以来、年々増加傾向にあります。また、業務外でGoをプログラムする回答者の数も増加しています(64%→70%)。Goを日常的に書いている回答者の数は、初めて50%に達しました(2016年の44%から増加)。これらの調査結果は、企業がプロのソフトウェア開発のためにGoを採用し続けていること、そして開発者にとってGoの一般的な人気が依然として高いことを示唆しています。

開発者がどこでGoを使用しているかをよりよく理解するために、回答を3つのグループに分けました。

  1. 仕事の中でも外でもGoを使っている人、
  2. 仕事ではGoを使うが、仕事以外では使わない人、そして3)仕事の責任以外ではGoだけを書いている人。回答者のほぼ半数(46%)が仕事でもプライベートでもGoコードを書いており(2017年から10ポイント増加)、残りの回答者は仕事でGoを書くか、仕事以外でGoを書くかのどちらかに分かれています。仕事でGoを使用し、仕事以外でもGoを使用することを選択した回答者の割合が高いことは、ソフトウェアエンジニアリングを日々の仕事と見なしていない開発者にとって、この言語が魅力的であることを示唆しています。彼らは仕事の責任以外でもコードをハックすることを選択し(回答者の85%が次のプロジェクトにGoを希望していることからわかるように、以下の*Goに対する態度*のセクションを参照)、Goは彼らがこれらの仕事以外のプロジェクトに使用したいと考えているトップ言語です。

Goをどれくらい使っているか尋ねたところ、参加者の回答は年々増加傾向にあり、2〜4年と4年以上使用している人の割合が毎年高くなっています。これは比較的新しいプログラミング言語では予想されることであり、Goを使い始めたばかりの回答者の割合が、Goを2年以上使用している回答者の割合の増加よりもゆっくりと減少していることは喜ばしいことです。これは、開発者が最初に言語を学んだ後にエコシステムから脱落していないことを示唆しているからです。

例年と同様に、Goは回答者の好む言語と専門とする言語のトップにランクインしています。回答者の大多数(69%)が5つの異なる言語に精通していると主張しており、Goに対する彼らの態度は他のプログラミングスタックでの経験に影響を受けていることを示しています。以下のチャートは、各言語を最も好ましい/理解している(最も濃い青色のバー)とランク付けした回答者の数でソートされており、3つの興味深い点を示しています。

  • 回答者の約3分の1がGoを最も得意とする言語と考えていますが、その2倍の回答者がGoを最も好ましいプログラミング言語と考えています。そのため、多くの回答者は他の言語ほどGoに習熟していないと感じていますが、それでもGoでの開発を好むことがよくあります。
  • Rustを専門とする言語としてランク付けした回答者はごくわずかですが(6.8%)、19%がRustを最も好ましい言語としてランク付けしており、このオーディエンスの間でRustへの関心が高いことを示しています。
  • 専門知識を持っていると言うよりも、言語を好むと言う回答者が多い言語は3つだけです。Rust(好ましい:専門知識の比率2.41:1)、Kotlin(1.95:1)、そしてGo(1.02:1)です。専門知識よりも好みが高いということは、言語への関心は高いが、直接的な経験は少ないことを意味し、専門知識よりも好みが低いということは、熟練した使用への障壁があることを示唆しています。1.0に近い比率は、ほとんどの開発者が特定の言語で効果的*かつ*楽しく作業できることを示唆しています。このデータは、Stack Overflowの2018年開発者調査によっても裏付けられており、Rust、Kotlin、Goが最も好ましいプログラミング言語に挙げられています。

データの読み方:参加者は上位5つの言語をランク付けできました。色のコーディングは、トップランクの場合は濃い青色で始まり、順位が下がるごとに色が薄くなります。これらのチャートは、各言語を一番の選択肢としてランク付けした参加者の割合でソートされています。

開発分野

回答者は中央値で3つの異なる分野で働いていると報告しており、大多数(72%)が2〜5の異なる分野で働いています。Web開発が65%と最も多く、回答者が働く主要分野としての地位を高めています(昨年は61%)。Web開発は2016年以来、Go開発で最も一般的な分野です。今年はDevOpsが36%から41%に増加し、システムプログラミングから2位の座を奪いました。2018年に2017年よりも使用率が低い分野は見つかりませんでした。これは、回答者が1つの分野から別の分野に用途をシフトするのではなく、より幅広いプロジェクトにGoを採用していることを示唆しています。

2016年以来、Goの主な用途上位2つは、API / RPCサービスの作成とCLIアプリケーションの開発です。 CLIの使用率は3年間63%で安定していますが、API / RPCの使用率は2016年の60%から2017年の65%、そして今日の73%に増加しています。これらのドメインはGoの中核となる強みに合致し、どちらもクラウドネイティブソフトウェア開発の中心であるため、将来的にもGo開発者にとって主要なシナリオの2つであり続けると予想されます。 HTMLを直接返すWebサービスを作成する回答者の割合は着実に減少している一方で、API / RPCの使用率は増加しており、WebサービスのAPI / RPCモデルへの移行が示唆されています。前年比のもう1つの傾向は、自動化もGoの成長分野であることを示唆しており、現在、回答者の38%がスクリプトと自動化タスクにGoを使用しています(2016年は31%)。

開発者がどのような状況でGoを使用しているかをよりよく理解するために、さまざまな業界でのGoの採用に関する質問を追加しました。比較的新しい言語であるため、おそらく驚くことではありませんが、回答者の半数以上が*インターネット/ Webサービス*および*ソフトウェア*カテゴリの企業(つまり、テクノロジー企業)で働いています。3%を超える回答があった他の業界は、*金融、銀行、または保険*と*メディア、広告、出版、またはエンターテインメント*だけでした。(以下のチャートでは、回答率が3%未満のすべてのカテゴリを「その他」カテゴリにまとめています。)テクノロジー企業以外の開発者のニーズをよりよく理解するために、業界全体でのGoの採用状況を引き続き追跡します。

Goに対する態度

今年、私たちは「Goを友人や同僚に推薦する可能性はどのくらいありますか?」という質問を追加し、ネットプロモータースコアを算出しました。このスコアは、製品の「推奨者」が「批判者」よりもどれだけ多いかを測定しようとするもので、-100から100までの範囲です。正の値は、ほとんどの人が製品の使用を推奨する可能性が高いことを示唆し、負の値は、ほとんどの人が製品の使用を推奨しない可能性が高いことを示唆します。 2018年のスコアは61(推奨者68% - 批判者7%)であり、これはGoエコシステムに対するコミュニティの感情を長期的に測るためのベースラインとして役立ちます。

NPSに加えて、Goに対する開発者の満足度についていくつかの質問をしました。全体的に、調査回答者はGoに対する高い満足度を示しており、これは前年と一致しています。大多数の人がGoに満足しており(89%)、次のプロジェクトにGoを使用したい(85%)、チームにとってGoがうまく機能していると感じている(66%)と回答しています。また、Goが自社の成功に少なくともある程度重要であると感じている人が多数派を占めています(44%)。これらの指標はすべて2017年に増加しましたが、今年はほぼ横ばいでした。(最初の質問の表現は2018年に「*Goを他の人に勧めますか*」から「*全体的にGoに満足していますか*」に変更されたため、これらの結果は直接比較できません。)

将来の開発にGoを好むという強い意見があることを考えると、開発者がGoを使用できない理由を理解したいと考えています。これらの理由は昨年からほとんど変わっていません。調査回答者の約半数は、他の言語で書かれた既存のプロジェクトに取り組んでおり、3分の1は、別の言語を使用することを好むチームまたはプロジェクトに取り組んでいます。Goをもっと使用しない最も一般的な理由としては、言語機能やライブラリの不足が挙げられます。また、開発者がGoを使用する際に直面する最大の課題についても質問しました。他のほとんどの調査質問とは異なり、回答者はこの質問に自由に回答することができました。私たちは機械学習を用いて結果を分析し、共通のテーマを特定し、各テーマを支持する回答の数を数えました。私たちが特定した上位3つの主要な課題は次のとおりです。

  • パッケージ管理(例:「vendoringへの対応」、「依存関係/パケット[原文ママ]管理/vendoringの統一がされていない」)
  • より馴染みのあるプログラミング言語との違い(例:「C言語に近い構文だが、セマンティクスがわずかに異なるため、必要以上にリファレンスを調べる必要がある」、「Go以外のバックグラウンドを持つ同僚が、Goを以前の言語のチャネルとゴルーチン付きバージョンとして使用しようとしている」)
  • ジェネリクスの欠如(例:「ジェネリクスの欠如により、Goを試したことのない人に、Goが効率的であることを納得させるのが難しい」、「より高度な抽象化を構築するのが難しい(ジェネリクスが欲しい)」)

今年、Goのさまざまな側面に対する開発者の満足度について、いくつかの質問を追加しました。調査回答者は、GoアプリケーションのCPUパフォーマンス(46:1、つまり、満足していないと回答した1人に対して、満足していると回答した人が46人)、ビルド速度(37:1)、およびアプリケーションのメモリ使用率(32:1)に非常に満足していました。しかし、アプリケーションのデバッグ容易性(3.2:1)とバイナリサイズ(6.4:1)に対する回答は、改善の余地があることを示唆しています。

バイナリサイズに対する不満は、主にCLIを構築している開発者から来ており、Goで生成されたバイナリのサイズに満足しているのはわずか30%です。しかし、他のすべてのタイプのアプリケーションでは、開発者の満足度は50%を超えており、バイナリサイズは常に重要な要素のリストの下位にランク付けされていました。

逆に、デバッグ容易性は、回答者が各側面の重要性をどのようにランク付けしたかを見ると際立っています。回答者の44%がデバッグ容易性を最も重要または2番目に重要な側面としてランク付けしましたが、Goのデバッグの現状に満足しているのはわずか36%でした。デバッグ容易性は、メモリ使用量とビルド速度とほぼ同じくらい重要であると常に評価されていましたが、満足度はかなり低く、このパターンは、回答者が構築しているソフトウェアの種類に関係なく当てはまりました。最新の2つのGoリリース、Go 1.11と1.12は、どちらもデバッグ容易性の大幅な改善を含んでいます。私たちは今年、Go開発者の全体的なデバッグエクスペリエンスを向上させることを目標に、開発者がGoアプリケーションをどのようにデバッグしているかをより深く調査する予定です。

開発環境

回答者に、Goコードを記述する際に主にどのオペレーティングシステムを使用しているかを尋ねました。回答者の過半数(65%)がLinuxを使用し、50%がmacOSを使用し、18%がWindowsを使用していると回答しており、これは昨年と一致しています。今年は、複数のOSで開発している回答者と単一のOSで開発している回答者の数も調べました。LinuxとmacOSは依然として明確なリーダーであり、回答者の81%がこれら2つのシステムの組み合わせで開発を行っています。3つのOSすべてで均等に時間を分割している回答者はわずか3%です。全体として、回答者の41%がGo開発に複数のオペレーティングシステムを使用しており、Goのクロスプラットフォーム性を際立たせています。

昨年、VS Codeは調査回答者の中で最も人気のあるGoエディターとしてVimをわずかに上回りました。今年は、調査回答者の3分の1以上(昨年の27%から増加)が好むエディターとなり、大きくリードを広げました。GoLandも大きく成長し、現在では2番目に好まれるエディターで22%となり、Vim(17%に減少)と順位が入れ替わりました。VS CodeとGoLandの人気が急上昇しているのは、Sublime TextとAtomの人気が低下しているためと考えられます。Vimもトップの選択肢としてランク付けした回答者の数が減少しましたが、2番目に人気のある選択肢としては14%で依然として最も人気があります。興味深いことに、回答者が選択したエディターに対する満足度に違いは見られませんでした。

また、回答者に、好みのエディターでのGoのサポートを最も改善するものは何かを尋ねました。上記の「最大の課題」の質問と同様に、参加者は複数の選択肢から選択するのではなく、独自の回答を書き込むことができました。回答に対するテーマ分析の結果、*デバッグサポートの改善*(例:「ライブデバッグ」、「統合デバッグ」、「さらに優れたデバッグ」)が最も一般的な要求であり、次に*コード補完の改善*(例:「オートコンプリートのパフォーマンスと品質」、「よりスマートなオートコンプリート」)が続きました。その他の要求には、GoのCLIツールチェーンとの統合の改善、モジュール/パッケージのサポートの改善、一般的なパフォーマンスの改善などがあります。

今年、Go開発者にとってどのデプロイメントアーキテクチャが最も重要かという質問も追加しました。当然のことながら、調査回答者は圧倒的にx86/x86-64をトップのデプロイメントプラットフォームと見なしています(回答者の76%が最も重要なデプロイメントアーキテクチャとして挙げており、84%がトップ3に挙げています)。しかし、2番目と3番目の選択肢のアーキテクチャのランキングは有益です。ARM64(45%)、WebAssembly(30%)、およびARM(22%)への関心が非常に高い一方で、他のプラットフォームへの関心は非常に低いです。

デプロイメントとサービス

2018年には、GoとGo以外の両方のデプロイメントにおいて、オンプレミスからクラウドホスティングへの移行という傾向が続いています。Goアプリケーションをオンプレミスサーバーにデプロイする調査回答者の割合は43%から32%に減少しており、これはGo以外のデプロイメントで報告された46%から36%の減少を反映しています。前年比で最も成長したクラウドサービスには、AWS Lambda(Goで4%から11%、Go以外で10%から15%)とGoogle Kubernetes Engine(Goで8%から12%、Go以外で5%から10%)があり、サーバーレスとコンテナがますます普及しているデプロイメントプラットフォームになりつつあることを示唆しています。しかし、このサービスの成長は、すでにクラウドサービスを採用している回答者によって牽引されているようです。少なくとも1つのクラウドサービスにデプロイする回答者の割合に大きな増加は見られなかったためです(55%から56%)。また、2016年以降、GCPへのGoデプロイメントも着実に増加しており、回答者の12%から19%に増加しています。

おそらくオンプレミスデプロイメントの減少と関連していると考えられますが、今年はクラウドストレージが調査回答者によって2番目に多く使用されるサービスとなり、32%から44%に増加しました。認証とフェデレーションのサービスも大幅に増加しました(26%から33%)。Goからアクセスする主要なサービスは、オープンソースのリレーショナルデータベースであり、回答者の61%から65%に増加しました。以下のチャートが示すように、サービスの使用量は全面的に増加しました。

Goコミュニティ

Goの質問に対する回答を見つけるための主要なコミュニティソースは、引き続きStack Overflow(回答者の23%が主要なソースとして挙げている)、GoのWebサイト(godoc.orgが18%、golang.orgが14%)、およびソースコードの読み取り(ソースコード全般が8%、GitHubが具体的に4%)です。順序は前年とほぼ同じです。Goのニュースの主要なソースは、Goブログ、Redditのr/golang、Twitter、Hacker Newsのままです。ただし、これらは今回の調査の主な配信方法でもあったため、この結果にはある程度のバイアスがかかっている可能性があります。以下の2つのチャートでは、回答者の5%未満が使用しているソースを「その他」カテゴリにまとめています。

今年、調査回答者の55%がGoコミュニティに貢献している、または貢献に興味があると回答しており、昨年の59%からわずかに減少しています。貢献のための2つの最も一般的な分野(標準ライブラリと公式Goツール)は、コアGoチームとの対話を必要とするため、この減少は、「Goプロジェクトのリーダーシップに質問やフィードバックを気軽に伝えられる」という意見に同意した参加者の割合の減少(30%から25%)と「Goのリーダーシップに自信を持っている」(54%から46%)という意見に同意した参加者の割合の減少に関連している可能性があります。

コミュニティの重要な側面は、すべての人、特に伝統的に代表されていない層の人々を歓迎することです。これをよりよく理解するために、代表されていないグループ全体の識別に関するオプションの質問をしました。2017年には、前年比で全面的に増加しました。2018年には、同様の割合の回答者(12%)が、代表されていないグループの一部であると認識しており、これは、代表されていないグループの一部ではないと認識している回答者の割合の大幅な減少と相まって発生しました。2017年には、代表されていないグループの一部であると認識している人1人に対して、代表されていないグループの一部ではないと認識している人が3.5人いました(比率3.5:1)。2018年には、その比率は3.08:1に改善しました。これは、Goコミュニティが少なくとも同じ割合の代表されていないメンバーを維持しており、さらに増加している可能性があることを示唆しています。

健全なコミュニティを維持することはGoプロジェクトにとって非常に重要です。そのため、過去3年間、開発者がGoコミュニティにどれくらい歓迎されていると感じているかを測定してきました。今年は、調査回答者のうち「Goコミュニティで歓迎されていると感じている」という意見に同意する人の割合が、66%から59%に減少しました。

この減少をより深く理解するために、歓迎されていないと感じていると回答した人を詳しく調べました。従来から代表的でないグループでは、2018年に歓迎されていないと感じていると回答した人が少なくなりました。これは、その分野でのアウトリーチ活動が効果的であったことを示唆しています。代わりに、Goの使用期間と歓迎されていると感じる度合いの間に線形関係があることがわかりました。Goを使い始めたばかりの開発者は、経験1~2年の開発者(62%)よりも歓迎されていないと感じている割合が大幅に低く(50%)、経験1~2年の開発者は、さらに経験豊富な開発者(73%)よりも歓迎されていないと感じていました。このデータの解釈は、「Goコミュニティをより歓迎されるものにするためにどのような変更が必要か」という質問への回答によって裏付けられています。回答者のコメントは、大きく4つのカテゴリに分類できます。

  • 特にGoの初心者に対するエリート主義的な認識を減らす(例:「拒絶的な態度を減らす」、「防御的な態度と傲慢さを減らす」)
  • リーダーシップレベルでの透明性を高める(例:「将来の方向性と計画に関する議論」、「トップダウンのリーダーシップを減らす」、「より民主的なものにする」)
  • 入門リソースを増やす(例:「貢献者向けのより明確な入門書」、「ベストプラクティスを学ぶための楽しい課題」)
  • より広い地域をカバーすることに焦点を当てた、より多くのイベントやミートアップを開催する(例:「より多くのミートアップとソーシャルイベント」、「より多くの都市でのイベント」)

このフィードバックは非常に役立ち、Go開発者としての体験を向上させるために焦点を当てるべき具体的な分野を示してくれています。ユーザーベースの大部分を占めるわけではありませんが、私たちはこれらのフィードバックを非常に真剣に受け止め、各分野の改善に取り組んでいます。

結論

2018年開発者調査の結果をご覧いただき、ありがとうございました。これらの結果は、2019年の計画に影響を与えており、今後数か月で、コミュニティが私たちに強調した特定の問題やニーズに対処するためのアイデアをいくつか共有する予定です。改めて、この調査にご協力いただいた皆様に感謝申し上げます。

次の記事:Go 2 に向けた次のステップ
前の記事:Go 1.12 でデプロイしたものをデバッグする
ブログインデックス