The Go Blog
Go 2018年アンケート結果
ありがとうございます
この記事では、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つのグループに分けました。
- 仕事の内外両方でGoを使用している人、
- 仕事でGoを使用しているが仕事以外では使用していない人、そして3)仕事の責任以外でGoのみを書いている人。回答者のほぼ半数(46%)が、仕事でもプライベートでもGoコードを書いており(2017年から10ポイント増加)、残りの回答者は、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(好み:専門知識の比率2.41:1)、Kotlin(1.95:1)、Go(1.02:1)の3つだけです。専門知識よりも高い好みは、その言語に対する関心があるものの直接的な経験が少ないことを示唆し、専門知識よりも低い好みは、熟練した使用に対する障壁があることを示唆します。比率が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の主な用途はAPI/RPCサービスの作成とCLIアプリケーションの開発でした。CLIの使用率は3年間63%で安定していますが、API/RPCの使用率は2016年の60%から2017年の65%、そして現在の73%に増加しています。これらのドメインはGoの核となる強みを発揮し、クラウドネイティブなソフトウェア開発の中心であるため、将来的にもGo開発者にとって主要なシナリオの2つであり続けると予想されます。HTMLを直接返すWebサービスを作成する回答者の割合は着実に減少しており、API/RPCの使用率が増加していることから、WebサービスにおいてAPI/RPCモデルへの移行がある程度示唆されます。もう一つの前年比トレンドは、自動化もGoにとって成長分野であることを示唆しており、現在38%の回答者がスクリプトや自動化タスクにGoを使用しています(2016年の31%から増加)。
開発者がGoを使用している文脈をよりよく理解するために、異なる業界でのGoの採用に関する質問を追加しました。比較的新しい言語であるため、アンケート回答者の半数以上が「インターネット/Webサービス」および「ソフトウェア」カテゴリの企業(つまりテクノロジー企業)で働いていることは、おそらく驚くことではないでしょう。3%を超える回答があったその他の業界は、「金融、銀行、保険」および「メディア、広告、出版、エンターテイメント」のみでした。(下のグラフでは、回答率が3%未満のすべてのカテゴリを「その他」カテゴリにまとめました。)テクノロジー企業以外の開発者ニーズをよりよく理解するために、Goの業界全体での採用状況を引き続き追跡していきます。
Goに対する態度
今年は、「友人や同僚にGoを薦める可能性はどのくらいありますか?」という質問を追加し、ネットプロモータースコアを算出しました。このスコアは、製品の「プロモーター」が「批判者」よりどれだけ多いかを測定しようとするもので、-100から100の範囲で評価されます。正の値は、ほとんどの人が製品の使用を推奨する可能性が高いことを示し、負の値は、ほとんどの人が使用を推奨しない可能性が高いことを示します。2018年のスコアは61(プロモーター68% - 批判者7%)であり、Goエコシステムに対するコミュニティの感情を時間の経過とともに測るためのベースラインとして機能します。
NPSに加えて、Goに対する開発者の満足度についていくつか質問しました。全体的に、アンケート回答者は前年と同様に高い満足度を示しました。大多数の回答者はGoに満足しており(89%)、次のプロジェクトではGoを使用したいと希望しており(85%)、Goがチームにうまく機能していると感じており(66%)、また、多くの回答者はGoが会社の成功に少なくともある程度不可欠であると感じています(44%)。これらの指標はすべて2017年に増加しましたが、今年はほとんど安定していました。(最初の質問の文言が2018年に「他人にGoの使用を推奨します」から「全体的にGoに満足しています」に変更されたため、これらの結果は直接比較できません。)
将来の開発でGoを好むという強い感情があるにもかかわらず、開発者がそうしない理由を理解したいと考えました。これは昨年からほとんど変わっていません。回答者の約半分が他の言語で書かれた既存のプロジェクトに取り組んでおり、3分の1が異なる言語の使用を好むチームやプロジェクトで働いています。Goをあまり使用しない最も一般的な理由としては、言語機能やライブラリの不足が挙げられます。また、Goを使用する際に開発者が直面する最大の課題についても尋ねました。ほとんどのアンケート質問とは異なり、回答者はこの質問に自由に回答を記述できました。機械学習を使用して結果を分析し、共通のテーマを特定し、各テーマを支持する回答の数を数えました。特定された上位3つの主要な課題は次のとおりです。
- パッケージ管理(例:「ベンダー管理の追従」、「依存関係/パケット[sic]管理/ベンダー管理が統一されていない」)
- より慣れ親しんだプログラミング言語との違い(例:「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%でした。デバッグのしやすさは、メモリ使用量やビルド速度とほぼ同じくらい重要と常に評価されていましたが、満足度は著しく低く、このパターンは回答者が構築しているソフトウェアの種類に関係なく当てはまりました。Goの最新の2つのリリース、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も力強く成長し、現在22%で2番目に好まれるエディターとなり、Vimと入れ替わりました(17%に減少)。VS CodeとGoLandの人気急上昇は、Sublime TextとAtomの犠牲になっているようです。Vimも、トップチョイスとしてランク付けする回答者の数が減少しましたが、14%で2番目に人気のあるエディターのままです。興味深いことに、回答者が選択したエディターに対する満足度のレベルに違いは見られませんでした。
また、回答者に、好みのエディターでの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ウェブサイト(godoc.orgが18%、golang.orgが14%)、ソースコードの閲覧(一般的なソースコードが8%、GitHubが4%)です。この順序は前年とほぼ一致しています。Goニュースの主要なソースは、引き続きGoブログ、Redditのr/golang、Twitter、Hacker Newsです。ただし、これらはこのアンケートの主要な配布方法でもあったため、この結果には何らかの偏りがある可能性があります。以下の2つのグラフでは、回答者の5%未満が使用するソースを「その他」カテゴリにグループ化しています。
今年、アンケート回答者の55%がGoコミュニティに貢献している、または貢献することに興味があると回答しました。これは昨年の59%からわずかに減少しています。最も一般的な貢献分野(標準ライブラリと公式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%)、経験数年の開発者(73%)よりも歓迎されていないと感じていました。このデータの解釈は、「Goコミュニティをより歓迎的なものにするにはどのような変化が必要ですか?」という質問への回答によって裏付けられています。回答者のコメントは、大きく4つのカテゴリに分類できます。
- 特にGoの新規参入者に対するエリート主義の認識を減らす(例:「もっと軽視しない」、「もっと防御的で傲慢でない」)
- リーダーシップレベルでの透明性を高める(例:「将来の方向性と計画に関する議論」、「トップダウンのリーダーシップを減らす」、「より民主的に」)
- 入門リソースを増やす(例:「貢献者向けに、より明確な入門資料」、「ベストプラクティスを学ぶ楽しい課題」)
- より多くのイベントやミートアップを、より広い地理的範囲をカバーすることに焦点を当てて開催する(例:「もっとミートアップや交流イベントを」、「より多くの都市でのイベントを」)
このフィードバックは非常に役立ち、Go開発者としての経験を向上させるために集中できる具体的な領域を提供してくれます。これはユーザーベースの大部分を占めるわけではありませんが、私たちはこのフィードバックを非常に真剣に受け止め、それぞれの領域の改善に取り組んでいます。
まとめ
2018年開発者アンケートの結果をご覧いただき、ありがとうございます。これらの結果は、2019年の計画に影響を与えており、今後数ヶ月の間に、コミュニティが私たちに指摘してくれた具体的な問題やニーズに対処するためのアイデアをいくつか共有する予定です。繰り返しになりますが、このアンケートにご協力いただいた皆様に感謝いたします!
次の記事: Go 2に向けた次のステップ
前の記事: Go 1.12でデプロイしたものをデバッグする
ブログインデックス