gocode は、 Go 言語のプログラミング支援ツール。主にコード補完のためにエディタと連携して使われた。
歴史的経緯があり、 gocode には主要な fork が三つ存在する。
- https://github.com/nsf/gocode
- https://github.com/mdempsky/gocode
- https://github.com/stamblerre/gocode
初代である nsf/gocode は非常に普及したようで、今でも gocode と連携するツールのドキュメントには
$ go get -u github.com/nsf/gocode
という手順が載っていたりする。
しかし、 mattn さんのブログ記事 で詳しく解説されているように、 nsf/gocode は開発を停止した。
その後、 mdempsky/gocode という fork を経て、 Go Modules をサポートした stamblerre/gocode が登場した。現在はこの stamblerre/gocode が、最も「使える」 gocode の実装であるといえそうだ。
注意点として、 mdempsky/gocode にせよ stamblerre/gocode にせよ、開発は活発ではなく、メンテナンスモードであると宣言している。 Go 言語のコード補完は Language Server Protocol (LSP) を用いた gopls へと移行が進んでおり、今後は gocode ではなく gopls の利用が推奨される。
とはいえ、全ての開発支援ツールが gopls に移行済みというわけではない。いまだ gocode に依存しているツールも存在する(go-eldoc など)。そのようなツールのために gocode をインストールする必要がある場合は、 stamblerre/gocode を選ぶのが良さそうだ。
…という経緯を、 go-eldoc が動かない理由を調べる過程で知り、 go-eldoc に Pull Request を送った。