@kyanny's blog

My thoughts, my life. Views/opinions are my own.

gocode は三種類ある

gocode は、 Go 言語のプログラミング支援ツール。主にコード補完のためにエディタと連携して使われた。

歴史的経緯があり、 gocode には主要な fork が三つ存在する。

  1. https://github.com/nsf/gocode
  2. https://github.com/mdempsky/gocode
  3. 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 を送った。