6月12日、Go Teamが「A new pkg.go.dev API for Go」と題した記事を公開した。Goパッケージのメタデータに正式なAPI経由でアクセスできるようになったことが発表された。
pkg.go.devは、Goパッケージのドキュメントや検索のための中心的なハブとして機能してきたが、これまでプログラマティックなアクセス手段は提供されていなかった。ツールやIDE連携、自動化ワークフローを構築する開発者たちは、一貫性がなく壊れやすいスクレイピング手法に頼らざるを得なかった。構造化されたAPIアクセスは、pkg.go.devに最も多く寄せられていた機能要望の一つだった。
他言語に追いつく基盤整備
この動きは、Goエコシステムにおけるツーリングの成熟を象徴している。npm、PyPI、crates.ioなど主要言語エコシステムがすでにAPIを提供している中、Goも同様のインフラを整備したことになる。
特にAI支援開発ツールの台頭により、パッケージメタデータへの構造化されたアクセスは必須要件となっている。GoogleはこれをAI支援型コーディングの基盤としても位置づけており、大規模言語モデルやエージェントがGoエコシステムについてより高い精度で推論するために必要なコンテキストを提供するとしている。GitHub CopilotやCursorなどのAIコーディングアシスタントが、Goパッケージの正確な情報を参照できるようになることで、より信頼性の高いコード生成が期待できる。
提供されるエンドポイント
APIは安定性と効率的なキャッシングのため、ステートレスなGETのみのアーキテクチャを採用している。現在はすべてのエンドポイントがv1betaパスでホストされており、コミュニティからのフィードバックと安定性の確認を経て、正式なv1リリースへ移行する予定だ。
完全なAPIリファレンスはpkg.go.dev/apiで、機械可読なAPI仕様はOpenAPI形式で直接公開されている。
パッケージ情報を取得する例:
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,
"path": "github.com/google/go-cmp/cmp",
"name": "cmp",
"synopsis": "Package cmp determines equality of values.",
"isRedistributable": true
}
このように、モジュール情報、バージョン、ライセンス情報などが構造化されたJSON形式で取得できる。
主なエンドポイントは以下の通り:
| エンドポイント | 説明 |
|---|---|
| /v1beta/package/{path} | パッケージ情報 |
| /v1beta/module/{path} | モジュール情報 |
| /v1beta/versions/{path} | モジュールのバージョン一覧 |
| /v1beta/symbols/{path} | パッケージが宣言するシンボル一覧 |
| /v1beta/vulns/{path} | モジュール/パッケージの脆弱性情報 |
| /v1beta/imported-by/{path} | 指定パッケージをインポートしているパッケージ |
| /v1beta/search?q={query} | 検索結果 |
| /v1beta/packages/{path} | モジュール内の全パッケージ情報 |
特に注目すべきは、脆弱性情報(/v1beta/vulns)やシンボル情報(/v1beta/symbols)もエンドポイントとして提供されている点だ。これにより、セキュリティスキャンツールやIDE補完機能の構築が容易になる。
想定される利用シーン
記事では、このAPIが以下のユースケースに対応するとしている:
- 検索と発見:Goモジュールエコシステム全体にわたる高速かつ効率的な検索
- AI開発の推進:LLMやエージェントがGoパッケージについて決定論的に推論するために必要なデータを提供
- セキュリティ監査:脆弱性エンドポイントを活用した自動スキャンツールの構築
- IDE統合:パッケージ情報やシンボル一覧を活用したコード補完機能の強化
- 依存関係分析:
imported-byエンドポイントを使った影響範囲の把握
また、APIの使い方を示すため、Googleはリファレンス実装としてpkgsite-cliというCLIツールを提供している。これにより、パッケージ検索やシンボル確認をシェルから直接実行できる。なお、APIの進化に伴い、このCLIのインターフェースや動作は変更される可能性がある。
Googleは/v1betaエンドポイントの安定性を優先しつつ、オープンソースコミュニティがこれらのリソースを使って実世界の問題を解決する方法を知りたいとしている。フィードバックはGo issue trackerで受け付けている。pkgsiteのソースコードはGitHubで公開されている。
詳細はA new pkg.go.dev API for Goを参照していただきたい。