「Go」を使用する開発者、4人に1人はすでに「ジェネリクス」も利用

Liam Tung (Special to ZDNET.com) 翻訳校正: 編集部

2022-09-13 13:40

 Googleのオープンソースプログラミング言語である「Go」を使用している開発者の約4分の1は、すでに「ジェネリクス」を使い始めていることが分かった。また、開発者がサプライチェーンのセキュリティについて心配しており、セキュリティを確保するためのツールも十分に使用されていないことも明らかになった。

PCの画面を見ながら話し合っている人物
Getty Images/Nitat Termmee

 3月にリリースされたバージョン1.18でGoにジェネリクスが導入された。ジェネリクスは当時、「Goに対して最もリクエストが多かった」と言われた機能であったため、急速に使われるようになっていることも不思議ではない。Goを使用している開発者を対象として6月に実施された調査によれば、5752人の回答者のうち4分の1以上がすでにジェネリクスを使用していた。開発業界を対象とした調査会社Redmonkが発表した1月のランキングによれば、Goは16番目に人気のあるプログラミング言語だ。

 ジェネリクス(型パラメーターのサポート)の導入は、Goの型安全性を高め、生産性とパフォーマンスを向上させるものだ。調査の回答者の約86%はGo 1.18でジェネリクスが導入されたことを知っており、26%はすでに使ったことがあった。14%は、本番環境やリリース済みのコードでジェネリクスを使用していた。一方、回答者の54%は現時点ではジェネリクスを必要としていないと述べており、12%はジェネリクスを使用しているが、本番環境やリリース済みのコードでは使用していないと回答していた。

 理由があってジェネリクスを使用していない人もいた。このうちジェネリクスに改善が必要だと考えていることを理由とする回答者が30%と最も多く、次いで26%は1.8よりも前のリリースを使用しているか、Go 1.18 パッケージが提供されていない Linux ディストリビューションを使用している、またはlinterがジェネリクスをサポートしていないことを理由として挙げている。

 その一方で、10%はジェネリクスを使うことでコードの重複が少なくなったと述べている。

 GoのUXリサーチャーであるTodd Kulesza氏は、Goを使用している開発者が最も懸念している脆弱性は、依存関係の問題だったと指摘した。ファズテストのようなツールをGoのコードに使用していた開発者は、わずか12%だった。また、65%の開発者が静的解析ツールを使用していた一方で、脆弱性を発見するために静的解析ツール使用していたのは35%にとどまった。

 調査によれば、回答者の84%がCI/CD時にセキュリティツールを使用していたが、この時点で問題が分かっても遅すぎる場合が多いことも明らかになった。これは、依存先に脆弱性が存在するのであれば、ビルドする前に分かっていなければ対処が面倒になるためだという。

 Goチームは米国時間9月6日に新しい脆弱性管理ツールと、Goのパッケージメンテナーのデータに基づくGoの脆弱性データベースを公開した。Go 1.18は、標準のツールチェインにファズテストが導入された最初のバージョンでもある。Goのファズテストは、Googleのオープンソースファジングツールである「OSS-Fuzz」でサポートされている。

 この調査では、開発者が直面しているいくつかの問題も浮き彫りになった。

 開発者の57%は、サードパーティライブラリーのセキュリティ評価が難しいと回答していた。Kulesza氏は、GitHubの「Dependabot」や、Goチームの「govulncheck」がこの問題の解決に役立つと述べている。実際、回答者が依存先に存在する脆弱性について知るのに使われた手段としては、Dependabotが多かった。

この記事は海外Red Ventures発の記事を朝日インタラクティブが日本向けに編集したものです。

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ZDNET Japan クイックポール

マイナンバーカードの利用状況を教えてください

NEWSLETTERS

エンタープライズコンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]