コンテンツに移動
Google Cloud

Go 1.18 と Google Cloud: Go が Google Cloud で利用可能に

2022年4月11日
Google Cloud Japan Team

※この投稿は米国時間 2022 年 3 月 22 日に、Google Cloud blog に投稿されたものの抄訳です。

Go チームは 3 月 15 日、Go プログラミング言語の最新リリースである Go 1.18 の一般提供開始を発表しました。10 年以上にわたる設計の集大成とも言えるこのリリースでは、デベロッパーからの要望にお応えし、ジェネリクス、ファジング、モジュール ワークスペースの各機能が提供されます。今回のリリースにより、Go は、サードパーティ サポートを必要とせずにファジング テストをコア ツールチェーンに統合する最初の主要言語になり、安全なアプリケーションを開発する優良言語としての位置付けをさらに確固たるものとします。

2007 年に Google で作成された Go は、デベロッパーが高速で信頼性が高く安全なソフトウェアをビルドできるように設計されています。従来の言語とは異なり、Go は最新のマルチコア コンピューティングの世界を想定して開発されました。Go は当初、クラウド アプリケーション、サービス、インフラストラクチャを開発するための最新の言語として登場しました。今日、Go は Google の一部の主力プロダクトの原動力となり、事業拡大を目指す多くのお客様の間で利用されています。Go はさまざまな規模の組織によって高く評価されており、Go を使用するデベロッパー(いわゆる「ゴーファー」)のコミュニティは、ユーザー数が世界中で 200 万人を超えるグローバル ネットワークへと成長しています。

Go の機能をクラウドで活用

公開リポジトリを見ると、Kubernetes や Istio を含む CNCF プロジェクトの 75% 以上が Go で記述され、世界中のデベロッパーの 10% が Go をプログラミング言語として使用しています(2021 年 5 月現在)。Google は、クラウドネイティブの主要なオープンソース プロジェクトを実行するための高性能インフラストラクチャを提供しています。Google の最新クラウド インフラストラクチャは、Kubernetes を核にして構成されており、Istio と Knative を強力にサポートすることで Google の一部の先進的サービスの基礎を形成しています。このようなサービスとして、Google Kubernetes Engine(GKE)、Anthos によるマネージド アプリケーション プラットフォーム、Cloud Functions、Cloud Run などがあります。Google は、Google 検索を支えるインデックス登録プラットフォームから、10 億人以上の Chrome ユーザーを支えるサーバーサイド最適化Google Cloud の基盤インフラストラクチャに至るまで、幅広い用途に Go を使用しています。

リリースのハイライト

今回新しくリリースされた Go 1.18 では、Go 史上最大の変更点となるジェネリクスが追加されています。Go デベロッパーからは、ジェネリクスをはじめとした重要な機能が Go に欠落しているという意見が寄せられていました。新規と既存のどちらの Go デベロッパーであっても、Go 1.18 を使用することで、ジェネリクスがもたらす生産性、パフォーマンス、維持管理性のメリットを享受できます。新しい種類のライブラリやプロジェクトのビルドなど、ジェネリクスを使用した開発の成果は短いベータ期間にすでに表れており、このように創造的な開発活動は今後時間が経つにつれてさらに拡大するものと思われます。

今回の Go リリースでは、ファジングもネイティブでサポートされています。ファジングは、ソフトウェアに任意のデータをスローして未知のエラーを明らかにする脆弱性テストの一種であり、企業での開発における一般的なテスト手法として普及しています。Go は、サードパーティ統合を必要とせずにファジング サポートを提供する初の主要言語です。デベロッパーは、追加コストを最小限に抑えて安全なソフトウェアのビルドに着手できます。Go の革新的なファジング アプローチは、現行のコードのセキュリティを確保するだけでなく、コードと依存関係の発展に合わせて継続的な保護も提供できます。ソフトウェアに対する攻撃がますます増えて複雑になるにつれ、脆弱性の検出は、企業での開発ライフサイクルの非常に重要な一部になると考えられます。Go のファジング機能により、そのような脆弱性をライフサイクルの早い段階で見つけることができます。

Go を使用して安全にビルド

Google は、オープンソース ソフトウェアのセキュリティを高めるための支援を行っています。オープンソース ソフトウェアは、オンラインの世界のさまざまな場面で仲介役的な役割を果たします。Google は、オープンソース セキュリティの現状についての意識の向上に加え、組織のソフトウェア サプライ チェーン保護の支援にも取り組んでいます。Go は、リスクを最小限に抑えつつ、安全なアプリケーションを作成するように設計されています。Go で記述したアプリケーションは、ローカルの依存関係なしで単一のバイナリにコンパイルされます。アプリケーションが標準ライブラリのみを使用してビルドされたり、十分に検査された少数の Go 依存関係のみを使用してビルドされたりすることは珍しくありません。Go の依存関係管理では、改ざん証明透明性ログとともに、依存関係が期待どおりのものであることを確認するための組み込みツールを使用します。Go に元から備わっている暗号化は、Google の主要コンポーネントを含むインターネットの大部分で使用されています。Go は、懸念材料となるローカル依存関係を持たない distroless コンテナもサポートしています。Google Cloud プロダクト(CI / CD 用の Cloud Build やコンテナ管理用の Artifact Registry など)は、Go の脆弱性データベースに直接アクセスでき、セキュリティの脅威に関する警告を即座に提供できます。

Google Fellow のインフラストラクチャ担当バイス プレジデントである Eric Brewer は、次のように述べています。「Google は、世界中で利用されているオンライン インフラストラクチャとアプリケーションの保護を支援することに取り組んでいます。この目標を達成するためには、オープンソースの依存関係チェーンのセキュリティを理解して検証できることが重要です。Go の 1.18 リリースは、デベロッパーが安全なアプリケーションをビルドし、脆弱性が発見されたときにリスクを理解して、サイバーセキュリティ攻撃の影響を軽減できるようにするための重要なステップです。」

Go にとって重要なマイルストーンである今回のリリースにより、世界中のデベロッパーは、あらゆるインフラストラクチャでの実行に対応した、より高性能で安全なアプリケーションをビルドできるようになります。このリリースと Go の使用を開始する方法の詳細については、こちらをご覧ください


- Google Cloud オープンソース マーケティングおよびコミュニティ担当責任者 Alexandra Bush
- Go 言語およびエコシステム担当戦略およびプロダクト リード Steve Francia
投稿先