Go言語のパッケージ情報を集約する中心的なリソースであるpkg.go.devは、これまで主にWebインターフェースを通じてコミュニティに貢献してきました。
しかし、ツール開発やIDE統合、自動化されたワークフローを構築する開発者にとって、プログラムから直接データにアクセスする手段が不可欠となっていました。
これまではWebスクレイピングなどの不安定な手法に頼らざるを得ない状況が続いていましたが、ついに待望の公式APIが公開されました。
2026年5月21日、Goチームはコミュニティからの長年のフィードバックに応え、公式のpkg.go.dev APIを正式に導入したことを発表しました。
このAPIの登場により、AI支援ツールなども、より高精度なコンテキストを持ってGoのエコシステムを解釈できるようになります。
pkg.go.dev APIの基本構造と設計思想
今回公開されたAPIは、安定性と効率的なキャッシュを重視して設計されており、ステートレスなGET専用のアーキテクチャを採用しています。
現在は/v1betaパスの下で提供されており、コミュニティのフィードバックを経て安定性が確認された後、正式なv1リリースへと移行する計画です。
開発者は、OpenAPI仕様書を通じて、マシン読み取り可能なAPIコントラクトを直接参照することも可能です。
「利便性よりも正確性」を優先した設計
このAPIにおける重要な設計原則の一つに、「利便性よりも正確性(precision over convenience)」という考え方があります。
Web版のpkg.go.devでは、曖昧なパッケージパスが入力された場合でも「最も長いモジュールパス」を優先して自動的に解決し、ユーザーに表示します。
しかし、APIではこのような自動解決による意図しない結果を避けるため、モジュールを明示的に指定することをクライアントに求めています。
もしパスが複数のモジュールにまたがるなど曖昧な場合は、APIはエラーを返し、候補のリストを提示することで正確な指定を促します。
主要なAPIエンドポイント
APIでは、パッケージ、モジュール、シンボル、さらには脆弱性情報まで取得できる多様なエンドポイントが提供されています。
現在利用可能なコアエンドポイントは、以下の通りです。
| エンドポイント | 説明 |
|---|---|
/v1beta/package/{path} | 指定したパスにあるパッケージの情報を取得します。 |
/v1beta/module/{path} | 指定したパスにあるモジュールの情報を取得します。 |
/v1beta/versions/{path} | モジュールの利用可能なバージョン一覧を取得します。 |
/v1beta/symbols/{path} | パッケージ内で宣言されているシンボル(型や関数など)のリストを取得します。 |
/v1beta/search?q={query} | クエリに基づいたパッケージの検索結果を返します。 |
/v1beta/vulns/{path} | モジュールやパッケージに関連する既知の脆弱性情報を取得します。 |
APIを利用したデータの取得方法
APIを利用して、特定のパッケージのメタデータを取得する例を見てみましょう。
以下のコマンドは、Goで広く使われている比較ライブラリであるgo-cmpの情報を、JSON形式で取得するものです。
# curlを使用してパッケージ情報を取得し、jqで整形して表示
curl https://pkg.go.dev/v1beta/package/github.com/google/go-cmp/cmp | jq .
{
"modulePath": "github.com/google/go-cmp",
"version": "v0.7.0",
"isLatest": true,
"isStandardLibrary": false,
"goos": "all",
"goarch": "all",
"path": "github.com/google/go-cmp/cmp",
"name": "cmp",
"synopsis": "Package cmp determines equality of values.",
"isRedistributable": true
}
また、versionクエリパラメータを使用することで、特定のセマンティックバージョンのデータを取得することも可能です。
ブランチ名(masterやmain)を指定した場合は、APIが自動的に擬似バージョン(pseudo-version)へ解決してくれます。
リファレンス実装「pkgsite-cli」の活用
APIの公開に合わせて、Goチームは公式の参照クライアント実装としてpkgsite-cliを提供しています。
このツールを使用することで、ターミナルから直接APIの機能を体験でき、独自のインテグレーションを構築する際の参考にできます。
インストールと基本的な使い方
go installコマンドを使用して、最新のツールを簡単に導入できます。
// pkgsite-cliのインストール
go install golang.org/x/pkgsite/cmd/internal/pkgsite-cli@latest
例えば、特定のパッケージをインポートしている他のパッケージを調べるには、以下のコマンドを実行します。
// 指定したパッケージに依存しているパッケージをリスト表示
pkgsite-cli package --imported-by github.com/google/go-cmp/cmp
github.com/google/go-cmp/cmp
Name: cmp
Module: github.com/google/go-cmp
Version: v0.7.0 (latest)
Synopsis: Package cmp determines equality of values.
Imported by:
cloud.google.com/go/internal/testutil
cuelang.org/go/internal/cuetxtar
...
このように、構造化されたデータを手軽に取得し、スクリプトや手動の調査に活用できるのが大きなメリットです。
将来の展望と互換性について
Goチームは、今後APIの機能をさらに拡張していく予定ですが、既存のインテグレーションが壊れないよう後方互換性の維持に努めることを明言しています。
ただし、リファレンス実装であるpkgsite-cliのコマンドラインインターフェースについては、現時点ではまだ不安定であるため注意が必要です。
コミュニティからのフィードバックに基づき、より洗練されたツールへと進化していくことが期待されます。
まとめ
pkg.go.devの公式API公開は、Goの開発エコシステムにおける大きな一歩となりました。
プログラムによる堅牢なアクセス手段が提供されたことで、ツール開発や自動化、AIによるコード解析の精度が飛躍的に向上するでしょう。
「正確性」を重視した設計は、複雑化するモダンなソフトウェア開発において、より信頼性の高い基盤を提供します。
開発者の皆さんも、この新しいAPIを自身のプロジェクトやワークフローに取り入れ、Goコミュニティのさらなる発展に貢献してみてはいかがでしょうか。
