Linux愛好者のGophersを悩ませているものは何だろう?Go開発者はジェネリック言語とデバッグの簡易化を望んでいる

Table of Contents

Linux愛好者のGophersを悩ませているものは何だろう?Go開発者はジェネリック言語とデバッグの簡易化を望んでいる

Go チームの最新の開発者調査によると、ほとんどの「Gophers」は言語を気に入っているものの、貧弱なデバッグ ツールと汎用サポートの欠如が改善すべき最大の問題点であると指摘しています。

2019年11月と12月に実施されたこの調査には、2018年のほぼ2倍となる約11,000人の回答者が集まった。

Goは2007年にGoogleによって開発され、2009年に公開オープンソースプロジェクトとなりました。プロジェクトは2012年に1.0リリースに到達しました。FAQドキュメントによると、Goは「Googleで作業していた既存の言語や環境への不満から生まれた」静的型付けのコンパイル言語であり、モダンで使いやすい言語を目指しています。競合言語としては、RustやSwift、そして古い言語であるCやC++などが挙げられます。Kubernetesは、Google発祥であることから当然のことながら、Dockerと同様に大部分がGoで書かれています。

本日のレポートで調査対象となった開発者は、概ねGo言語に満足しており、89%が次のプロジェクトでGo言語を使いたいと回答し、86%がチームでうまく機能していると回答しました。とはいえ、Stack Overflowによると、Go言語の利用率は2018年の7.1%から2019年には8.2%へと緩やかな伸びにとどまっており、Rustと同様に、Go言語の普及が頭打ちになっているかどうかは疑問です。

この調査では、注目すべき点がいくつか浮かび上がってきました。典型的なGopherは、Windows(20%)ではなく、Linux(66%)やMac(53%)で開発を行っています。これは、多くの開発者調査と比較して、Linuxが圧倒的に多いことを示しています。Goプログラマーが手がけるアプリケーションの種類としては、APIまたはRPC(リモートプロシージャコール)サービス(71%)、CLI(コマンドライン)プログラム(62%)、ライブラリとフレームワーク(48%)、HTMLを返すWebサービス(47%)が上位にランクインしています。また、Webアプリケーション(66%)、データベース(45%)、ネットワークプログラミング(42%)、システムプログラミング(37%)といった、いずれもLinuxが得意とする分野に取り組んでいます。それでも、WindowsよりもMacが好まれる傾向は、Gopher文化の表れと言えるでしょう。

IDEの好みとしては、Visual Studio Code(41%、昨年よりわずかに増加)、JetBrains GoLandまたはIntelliJ(34%、昨年の24%から大幅に増加)、Vim(14%、19%から減少)が挙げられます。強力な無料IDEが広く普及していることを考えると、JetBrainsの成功は注目に値します。同社は、自社の共通技術をベースに構築された様々なクロスプラットフォームIDEを提供しており、GoogleのAndroid Studio(無料)を通じてJetBrainsをご存知の方も多いでしょう。

Go言語を使っている人たちを悩ませている問題がいくつかあります。一つはよく知られていることです。この言語はジェネリックをサポートしていません。Go言語をもっと使いたいと考えている人のうち、79%がジェネリックの欠如を普及の妨げとして挙げており、これは他のどの問題よりも大きな割合を占めています。1月にGoogleのRobert Griesemer氏は、今後の改善について「Go言語の主な目標は、パッケージとバージョンの管理、エラー処理のサポート強化、そしてジェネリックです」と述べました。さらに、「ジェネリックに関しては進歩を遂げています(詳細は今年後半に発表します)」と付け加えているので、今後の動向に注目してください。

もう一つの問題はデバッグです。「回答者の大多数(88%)がデバッグにテキストログに依存していると回答しており、自由記述の回答から、代替ツールを効果的に使用するのが困難であることが示唆されています」とレポートは述べています。ただし、割合の合計は100%にはならず、53%はDelveなどのデバッガーを使用していますが、それでもテキストログへの依存度が高いことが示されています。

モジュールの操作はジェネリックに次いで不満の大きい領域だが、現在では 89 パーセントが Go モジュールを採用しており、これは「開発者にとって大きな変化」と評されている。

Go開発者によると、Microsoft Azureはライバルよりも評価が低い

Go開発者によると、Microsoft Azureはライバルよりも評価が低い

導入に関しては、パブリッククラウドへの明確な好みが見られます。オンプレミスサービスへの導入は44%、AWSは42%、GCPは24%、Digital Oceanは8%、Microsoft Azureは7%です。これらの数字を合計すると、やはり100%を超えています。GCPはここでも市場シェアを上回っており、これはおそらくGoの起源を反映しているのでしょう。一方、Azureは大きく下回っています。しかし、Microsoftにとって懸念されるのは、Azureの利用率が低いだけでなく、ユーザーの満足度が低いことです。AWSユーザーの80%、GCPユーザーの78%が肯定的な評価を下していますが、Azureの顧客ではわずか57%です。なぜでしょうか?自由記述の回答を調査した結果、「主な要因は、サーバーレス導入における最新バージョンのGoのサポートなど、このプラットフォームではGoが一流のサポートを受けられないという認識」にあるようです。

全体的に見て、Goのスコアカードは悪くなく、主要な問題点はすべて積極的に改善されている。しかし、Googleの新しいオペレーティングシステムであるFuchsiaプロジェクトのプログラミング言語に関する注記には、あまり良い点ではない記述がある。「Fuchsiaプラットフォームソースツリーは、Goを使用した実装においてネガティブな経験がありました。FuchsiaプロジェクトがGoで構築したシステムコンポーネントは、C++やRustで構築した同等のコンポーネント(または代替品)よりも多くのメモリとカーネルリソースを消費しました」とチームは述べている。これは、Fuchsiaの開発に携わる人々がGoに広く精通しているにもかかわらずである。つまり、GoはAPIやWebサービスの開発には優れているかもしれないが、ガベージコレクションのような開発者向け機能の代償として、低レベルではそれほど優れていないということだ。®

Discover More