Goブログ
Go 12年の歴史
本日、Goオープンソースリリース12周年を祝います。今年はイベントの多い年でしたし、来年も楽しみなことがたくさんあります。
ブログで最も目に見える変更点は、go.devでの新しいホームです。これは、すべてのGoウェブサイトを単一の、一貫性のあるサイトに統合する取り組みの一環です。その統合のもう一つの部分は、godoc.orgをpkg.go.devに置き換えることでした。
2月には、Go 1.16リリースでmacOS ARM64サポートが追加され、ファイルシステムインターフェースと埋め込みファイルが追加され、モジュールがデフォルトで有効化されました。いつものように、様々な改善と最適化も含まれていました。
8月には、Go 1.17リリースでWindows ARM64サポートが追加され、TLS暗号スイートの決定が容易になり、より安全になりました。大規模プロジェクトでモジュールをさらに効率的にするためにモジュールグラフの削減が導入され、新しく、より読みやすいビルド制約構文が追加されました。内部的には、Go 1.17はx86-64上のGo関数のレジスタベースの呼び出し規約に切り替わり、CPUバウンドアプリケーションのパフォーマンスを5~15%向上させました。
今年度は、多くの新しいチュートリアル、Goでのデータベースに関するガイド、モジュールの開発に関するガイド、Goモジュールリファレンスを公開しました。「GoとGinを使ったRESTful APIの開発」という新しいチュートリアルは、Google Cloud Shellを使ったインタラクティブな形式でも利用できます。
IDE側では、VS Code Goでgoplsをデフォルトで有効化し、gopls
とVS Code Goの両方に数えきれないほどの改善を提供しました。これには、Delveを基盤とした強力なデバッグエクスペリエンスも含まれます。
また、Goファジングベータ版をリリースし、Goへのジェネリックスの追加を正式に提案しました。これらはどちらも、Go 1.18で提供される予定です。
「バーチャルファースト」への対応を続け、Goチームは2回目の年次Google Open Source LiveでのGo Dayを開催しました。講演はYouTubeで視聴できます。
-
Ian Lance Taylorによる「Goでのジェネリックスの使用」では、ジェネリックスとその効果的な使用方法を紹介しています。
-
Steve Franciaによる「最新のエンタープライズアプリケーション」では、Goがエンタープライズモダナイゼーションにおいてどのような役割を果たしているかを示しています。
-
Suzy Muellerによる「Goエディタを使ったより良いプロジェクトの構築」では、VS Code Goの統合ツールがコードのナビゲーション、テストのデバッグなどにどのように役立つのかを示しています。
-
American ExpressのDistinguished EngineerであるBenjamin Caneによる「概念実証から本番環境へ」では、American Expressが決済と報酬プラットフォームにGoを使用するようになった経緯について説明しています。
将来展望
Goの13年目に向けて、非常に多くの期待を抱いています。来月、GopherCon 2021で2つの講演を行い、Goコミュニティ全体から多くの才能あるスピーカーが登場します。無料で登録して、カレンダーに印を付けましょう!
-
この新機能の設計と実装を主導したRobert GriesemerとIan Lance Taylorによる「Goジェネリックスの使用方法と理由」。
12月8日午前11時(米国東部時間). -
Suzy Muellerによる「デバッグアダプタープロトコル(DAP)を使用したGoコードのデバッグ」では、Delveを使用したVS Code Goの高度なデバッグ機能の使用方法を示します。
12月9日午後3時20分(米国東部時間).
2月には、Go 1.18リリースで新しいレジスタベースの呼び出し規約がx86以外のアーキテクチャに拡張され、劇的なパフォーマンスの向上がもたらされます。新しいGoファジングサポートが含まれ、ジェネリックスのサポートを含む最初のリリースとなります。
ジェネリックスは2022年の重点事項の一つです。Go 1.18での最初のリリースは始まりに過ぎません。ジェネリックスを使用し、何が機能し、何が機能しないかを学習する時間が必要です。これにより、ベストプラクティスを作成し、標準ライブラリやその他のライブラリに追加する必要があるものを決定できます。Go 1.19(2022年8月予定)以降のリリースでは、ジェネリックスの設計と実装をさらに洗練し、全体的なGoエクスペリエンスにさらに統合していく予定です。
2022年のもう一つの重点事項は、サプライチェーンのセキュリティです。依存関係の問題については長年議論されています。Goモジュールの設計により再現可能で、検証可能で、検証済みのビルドが可能になりますが、まだやるべきことはたくさんあります。Go 1.18以降、go
コマンドはビルド構成に関するより多くの情報をバイナリに埋め込み、再現性を容易にし、Goバイナリに対してSBOMを生成する必要があるプロジェクトを支援します。また、Go脆弱性データベースと、プログラムの依存関係の脆弱性を報告するための関連ツールも開発を始めました。この作業における目標の1つは、この種のツールの信号対雑音比を大幅に向上させることです。プログラムが脆弱な関数を使用していない場合は、それを報告したくありません。2022年を通して、これをスタンドアロンツールとして提供するだけでなく、gopls
やVS Code Go、pkg.go.devなどの既存のツールに追加する予定です。Goのサプライチェーンセキュリティ体制の他の側面を改善するためにも、さらに多くの作業が必要です。詳細にご期待ください。
全体として、2022年はGoにとってイベントの多い年になると予想しており、これまで通り、タイムリーなリリースと改善を継続していきます。
ありがとうございました!
Goは、GoogleのGoチームだけでは成り立ちません。Goの成功に貢献していただき、この冒険にご参加いただきありがとうございます。皆様の安全を祈念し、今後ともよろしくお願いいたします。