vscodeでgoの設定をしてlspを動かしてみた
vscodeでgolangの開発環境を構築にあたってgocodeではなくlsp*1を使う設定をやってみて動いてみたのでまとめます
なぜvscodeを使わないのかというのは以下の記事を見たのと、lspすごいという個人的な期待感です
インストール
とりあえずvscodeにvscode-goをインストールします
インストール自体は他の拡張と同じように"go"とかで絞り込むと表示されると思いますので、それをインストールします。
設定
インストールしたら設定は自分の環境だと以下の感じ*2
(setting.jsonからじゃないと設定できないっぽい項目があるのでjsonを編集しました)
"go.gopath": "/home/yuzu/develop", "go.goroot": "/home/yuzu/.goenv/versions/1.11.4", "go.useLanguageServer": true, "go.languageServerExperimentalFeatures": { "format": false, "autoComplete": true, "rename": true, "goToDefinition": true, "hover": true, "signatureHelp": true, "goToTypeDefinition": true, "goToImplementation": true, "documentSymbols": true, "workspaceSymbols": true, "findReferences": true }
設定をしたらctrl + shift + p
等でコマンドパレットを開き「go: Install/Update Tools」を実行し、go-langserver
にチェックを入れてOKを押すとgo-langserverがインストールされます
実行されることを確認する
"autoComplete": true
を設定したので補完されることを確認します。自分は以下のようなコードを書いて、fmt.
をタイプした時にPrintln
が候補として表示されるかで確認できると思います*3
package main import ( "fmt" ) func main() { fmt.Println("Happy Aura") }
ghq + peco on fishデビューしました
ghq使ってないとか人生損してるということを年末年始に某ブログで言われていたので入れてたの思い出して、入れてみたら思ったより便利だったのでgoの調査するにあたって全部goのディレクトリ構成に移した。
何ができるようになったのか
ghqとpecoを組みあわせると何ができるようになるのかとかは別のブログでもあるので、雑に言うとghqで管理しているリポジトリをpecoで絞り込んでそのディレクトリにビュンと移動できる
導入に当たって苦労したこと
ghqはgoのリポジトリ管理のディレクトリ構造でgithubからいい感じにプロジェクトをcloneしてくれる
そもそもプロジェクトを全部~/develop
にプロジェクト名でディレクトリ作るっていうgoの階層が浅くなっただけみたいな雑な管理をしていたので特に苦労しなかった。
結局~/develop
をGOPATH
に設定して、$GOPATH/src/local
に元々あったローカルにだけあるコード群をmvした
唯一ちょっと躓いた点としてはghqとpecoを組み合わせて使用する関数の定義がよくわからなかった。最終的に以下の感じで設定した。
function repo_peco ghq list | peco | read select_dir if [ $select_dir ] cd (ghq root)/$select_dir else echo "Not selected project" end end
導入後
ショートカットキーをbindしたのでショートカットを押せばpecoが起動して、選んだプロジェクトにcd
できる
割と便利だけどghq list
で出てくるのはghq root
以下のgitで管理されているものなので、ghqでインストールしていない自分で作ったプロジェクトが出てこないのだとgit init
を実行し忘れてるのだと思う
導入難しくないし、割と便利だったのでみんなが記事書いてるわけですね
LastPassからBitwardenに移行した
パスワードマネージャー移行
LastPassの無料プラン使ってたけど「携帯電話で生成されたパスワード」っていうよくわからないものが意図せず同期されていたり、ブラウザから開いた場合にパスワードのコピーが面倒だったり、ちょっと動作がもっさりしてる感があったので移行先を探しすことにしました。 いくつか悩んだけどBitwardenというアプリに移行しました。
そもそも何を求めてるのか
ざっくり以下の感じ
なぜBitwardenに?
クライアントがMac,Win,Linuxで用意されてるようで、求めてたものがFreeプランでもちゃんと実装されていた。
公式でサポートしているブラウザがよくあるもの以外のBraveなどもサポートしていたのも気になった。
技術的な話をするとOSSで作られていてCLIで操作することもできるし、サーバーのホストをDockerを利用して自分で立てることが可能な所が面白いと感じた。
諸事情で触れないC#で作られているけど、クライアントはnode.jsだし許容した。
候補だったもの
決定したBitwarden以外にもbuttercupというものを見ていた
javascriptでできていて、いろんなデバイスで使用することができる。 Dropbox等を使用することによりデバイス間で同期することが可能。逆にいうと公式がクラウド用意してないので自前で用意しないといけないのでほんのちょっとハードルがある。
Dropboxのアカウントが使ってないから削除するぞって言われるくらい使ってなくてLastPass使い始める前に作成したものなのでパスワードもわからないし、再度アカウント取得するの面倒だなって気持ちから今回は採用を見送った。
セキュリティ考えるのなら全部自分でやったほうがいいとは思うのでアリだと思う。オフラインでの動作確認したらRead-onlyで見ることはできた。
最後に
使い始めたばかりでまだ駄目な所はっきりわかってないけど、UIもなかなか綺麗なのでしばらくBitwarden使ってみようと思います。
もし気に入らない部分が目立ち始めたら、1passwordに課金するかと思ってるのでtwitterで1password使い始めてたら察してください。