Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Go Language Server 使うべし
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Toshikazu Ohashi
January 31, 2019
Programming
2.2k
5
Share
Go Language Server 使うべし
Go(Un)Conference(Goあんこ)LT大会 5kg
Toshikazu Ohashi
January 31, 2019
More Decks by Toshikazu Ohashi
See All by Toshikazu Ohashi
無自覚にメンバーの心理的安全性を奪っていた経験から得た学び
lighttiger2505
161
220k
黒画面が最高のしごと道具である3つの理由
lighttiger2505
0
2.3k
Golangで作るSQL Language Server(sqls)
lighttiger2505
1
1k
Connect with many developers from the small plugin
lighttiger2505
0
460
作ってわかる現代のVimのAutoComplete ~そしてVimConf2019へ~
lighttiger2505
3
1.8k
自社サービスのDjangoを 1.3から1.11(LTS)に アップグレードするまでの道のり
lighttiger2505
6
3.8k
LSPがもたらしたVimプラグインの変化に思いを馳せる
lighttiger2505
2
1.6k
ターミナルアプリケーションとしてのVim
lighttiger2505
0
640
Goで作るインタラクティブなCLIコマンドとそのデザイン
lighttiger2505
0
1k
Other Decks in Programming
See All in Programming
サーバーレスで作る、動画データ管理基盤
oyasumipants
0
320
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
11
3.1k
関係性から理解する"同一性"の型用語たち
pvcresin
2
620
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
430
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
430
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
Agentic UI beyond Chats Architecture Patterns & Open Standards @ngMunich 05/2026
manfredsteyer
PRO
0
190
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
130
次世代リンターで探る、tsgo 時代における型認識カスタムルールの現実解
ytakahashii
3
1.3k
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
270
誰も頼んでない機能を出荷した話
zekutax
0
150
Oxcを導入して開発体験が向上した話
yug1224
4
260
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
74k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
The agentic SEO stack - context over prompts
schlessera
0
790
How STYLIGHT went responsive
nonsquared
100
6.1k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
220
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.1k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
210
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
Designing for Timeless Needs
cassininazir
1
240
GraphQLとの向き合い方2022年版
quramy
50
15k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
How to Think Like a Performance Engineer
csswizardry
28
2.6k
Transcript
(P -BOHVBHF 4FSWFS ͏͠ (P 6O $POGFSFODFʢ(P͋Μ͜ʣ-5େձLH !MJHIUUJHFS
-BOHVBHF4FSWFS 1SPUPDPM ͳʹʁͳͥ
-BOHVBHF4FSWFS ݴޠ։ൃπʔϧΛ౷߹ͨ͠αʔό w ࣗಈิ w ఆٛδϟϯϓ w ࢀরݕࡧFUD -BOHVBHF4FSWFS1SPUPDPM -41
-BOHVBHF4FSWFSͱΫϥΠΞϯτؒͰ༻͢Δϓϩτίϧ w .JDSPTPGU͕༷ࡦఆ 74$PEFͷͨΊʁ w +40/31$ϕʔε -BOHVBHF4FSWFSͱͳʹ͔
͜Ε·ͰΤσΟλຖʹݴޠπʔϧΛར༻͢ΔϓϥάΠϯ͕ඞཁͩͬͨ w 74$PEFͷ1ZUIPOϓϥάΠϯ w "UPNͷ1ZUIPOϓϥάΠϯ w 7JNͷ1ZUIPOϓϥάΠϯ w 4VCMJNF5FYU &NBDT
4PVSDFHSBQIFUD ݴޠίϛϡχςΟͷ։ൃϦιʔεΛ-BOHVBHF 4FSWFSʹूதͯ͠ߴ࣭ͳݴޠ։ൃπʔϧΛ࡞Δ Ϣʔβ-41ΛαϙʔτΫϥΠΞϯτΛಋೖͯ͠ ͙͢ʹߴ࣭ͳݴޠͷαϙʔτΛڗडͰ͖Δ ͋ͱͰৄ͘͠͠·͢ -BOHVBHF4FSWFSͳͥඞཁ͔
(Pͷ-BOHVBHF4FSWFS
ݱঢ়ɺൃల͕ظ͞Ε͍ͯΔ(Pͷ-BOHVBHF4FSWFSҎԼͷͭ HPQMT w (Pެࣜͷ-BOVHBHF4FSWFS CJOHP w TPVSDFHSBQIHPMBOHTFSWFSΠϯεύΠϠͷ αʔυύʔςΟ-BOHVBHF4FSWFS
.FUIPE ػೳ (P5PPMT textDocument/completion ࣗಈิ gocode* textDocument/definition ఆٛδϟϯϓ godef* textDocument/formatting
ϑΥʔϚοτ gofmt textDocument/hover ώϯτදࣔ gogetdoc* textDocument/implementation ܧঝؔ impl textDocument/rename ໊લมߋ gorename* textDocument/references γϯϘϧࢀরݕࡧ guru textDocument/documentSymbol υΩϡϝϯτγϯϘϧݕࡧ guru workspace/symbol ϫʔΫεϖʔεγϯϘϧݕࡧ guru -41ͱ(Pݴޠ։ൃπʔϧ * αʔυύʔςΟπʔϧ
.FUIPE HPQMT CJOHP textDocument/completion ◦ ◦ textDocument/definition ◦ ◦ textDocument/formatting
◦ ◦ textDocument/hover ◦ ◦ textDocument/implementation - ◦ textDocument/rename - ◦ textDocument/references - ◦ textDocument/documentSymbol - ◦ workspace/symbol - ◦ HPQMTͱCJOHPͷൺֱ 2019/01/28࣌Ͱ֤ServerͷCapabilitiesΛऔಘͨ݁͠Ռ
ͳ͍ͥ· -BOHVBHF4FSWFSͳͷ͔
ಡΜͰ͍ͩ͘͞ (P"EWFOU$BMFOEBS ʰHPDPEFΊ·͢ ͦͯ͠-BOHVBHF4FSWFS ʱ IUUQTNBUUOLBPSJZBOFUTPGUXBSFMBOHHPIUN
ͬͯΘ͔ͬͨ -BOHVBHF4FSWFSͷԸܙ
͔͜͜Β ͘Β͍7JNͷ 8BSOJOH
-BOHVBHF4FSWFSಋೖ #FGPSF"GUFS
#FGPSF"GUFS
KFEJ HPDPEF BVUPQFQ qBLF JTPSU ZBSQ CMBDL HPEFG JNQM JNQM
HVSV HPMJOU 7JN ϦϯλʔϑΥʔϚολ ϓϥάΠϯ "-& ࣗಈิ EFPQMFUF (PݴޠπʔϧϓϥάΠϯ WJNHP 1ZUIPOݴޠπʔϧϓϥάΠϯ KFEJWJN 1ZUIPOิ EFPQMFUFKFEJ (Pิ EFPQMFUFHP
KFEJ HPDPEF BVUPQFQ qBLF JTPSU ZBSQ CMBDL HPEFG JNQM JNQM
HVSV HPMJOU ϦϯλʔϑΥʔϚολ ϓϥάΠϯ "-& ࣗಈิ EFPQMFUF (PݴޠπʔϧϓϥάΠϯ WJNHP 1ZUIPOݴޠπʔϧϓϥάΠϯ KFEJWJN 1ZUIPOิ EFPQMFUFKFEJ (Pิ EFPQMFUFHP 7JN ΤσΟλ
KFEJ HPDPEF BVUPQFQ qBLF JTPSU ZBSQ CMBDL HPEFG JNQM JNQM
HVSV HPMJOU 7JN ϦϯλʔϑΥʔϚολ ϓϥάΠϯ "-& ࣗಈิ EFPQMFUF (PݴޠπʔϧϓϥάΠϯ WJNHP 1ZUIPOݴޠπʔϧϓϥάΠϯ KFEJWJN 1ZUIPOิ EFPQMFUFKFEJ (Pิ EFPQMFUFHP ΤσΟλϓϥάΠϯ
7JN ϦϯλʔϑΥʔϚολ ϓϥάΠϯ "-& ࣗಈิ EFPQMFUF (PݴޠπʔϧϓϥάΠϯ WJNHP 1ZUIPOݴޠπʔϧϓϥάΠϯ KFEJWJN
1ZUIPOิ EFPQMFUFKFEJ (Pิ EFPQMFUFHP KFEJ HPDPEF BVUPQFQ qBLF JTPSU ZBSQ CMBDL HPEFG JNQM HVSV HPMJOU ݴޠ։ൃπʔϧ
#FGPSF"GUFS
ࣗಈิ (deoplete) LSPิ (deoplete- vim-lsp) QZMT HPQMTCJOHP Language Server Client
(vim-lsp) 7JN -41
ࣗಈิ (deoplete) LSPิ (deoplete- vim-lsp) QZMT HPQMTCJOHP 7JN Language Server
Client (vim-lsp) -41 -BOHVBHF4FSWFS$MJFOU
ࣗಈิ (deoplete) LSPิ (deoplete- vim-lsp) 7JN Language Server Client (vim-lsp)
QZMT HPQMTCJOHP -41 -BOHVBHF4FSWFS
ͲΜͳਓʹͲΜͳԸܙ͕ ͋Δ͔ ໝ
-41ίϛϡχςΟͷ։ൃϦιʔεΛΑΓޮతʹ ӡ༻͢ΔͨΊͷϑϨʔϜϫʔΫ ͍ΖΜͳཱͷਓʹԸܙ͕͋Δ w ΤσΟλϓϥάΠϯ։ൃऀ w ݴޠπʔϧ։ൃऀ w ΤσΟλϢʔβ
ΤσΟλϓϥάΠϯ։ൃऀ
#FGPSF"GUFS
KFEJ HPDPEF BVUPQFQ qBLF JTPSU ZBSQ CMBDL HPEFG JNQM JNQM
HVSV HPMJOU ϦϯλʔϑΥʔϚολ ϓϥάΠϯ "-& ࣗಈิ EFPQMFUF (PݴޠπʔϧϓϥάΠϯ WJNHP 1ZUIPOݴޠπʔϧϓϥάΠϯ KFEJWJN 1ZUIPOิ EFPQMFUFKFEJ (Pิ EFPQMFUFHP 7JN ຊདྷΓ͍ͨ͜ͱ ड͚औͬͨ݁ՌΛͲ͏දࣔ͢ΕΑΓ Ϣʔβ͕ศརʹͳΔ͔
KFEJ HPDPEF BVUPQFQ qBLF JTPSU ZBSQ CMBDL HPEFG JNQM JNQM
HVSV HPMJOU ϦϯλʔϑΥʔϚολ ϓϥάΠϯ "-& ࣗಈิ EFPQMFUF (PݴޠπʔϧϓϥάΠϯ WJNHP 1ZUIPOݴޠπʔϧϓϥάΠϯ KFEJWJN 1ZUIPOิ EFPQMFUFKFEJ (Pิ EFPQMFUFHP ํ͕ͳ͘Δ͜ͱ ݴޠ։ൃπʔϧ͝ͱʹ࣮͕ඞཁ w ݺͼग़͠ํ๏ Φϓγϣϯͷҧ͍ w ݁Ռͷύʔε ग़ྗϑΥʔϚοτҧ͍ πʔϧ͕ҧ͍͑ํҧ͏
#FGPSF"GUFS
ࣗಈิ (deoplete) LSPิ (deoplete- vim-lsp) QZMT HPQMTCJOHP 7JN Language Server
Client (vim-lsp) -41 ͪ͜ΒʹूதͰ͖Δ มΘͬͨ͜ͱ -41Ͱ༷͕౷Ұ͞Ε͍ͯΔ͔Β -BOHVBHF4FSWFSΛม͑ͯݸผରԠඞཁφγ
Ϧιʔεͷूத (PݴޠπʔϧϓϥάΠϯ WJNHP 1ZUIPOݴޠπʔϧϓϥάΠϯ KFEJWJN Language Server Client (vim-lsp) 7JNTDSJQU
(P 7JNTDSJQU 1ZUIPO
(PݴޠπʔϧϓϥάΠϯ WJNHP 1ZUIPOݴޠπʔϧϓϥάΠϯ KFEJWJN Language Server Client (vim-lsp) 7JNTDSJQU0OMZ Ϧιʔεͷूத
ݴޠπʔϧ։ൃऀ
#FGPSF"GUFS
7JN ϦϯλʔϑΥʔϚολ ϓϥάΠϯ "-& ࣗಈิ EFPQMFUF (PݴޠπʔϧϓϥάΠϯ WJNHP 1ZUIPOݴޠπʔϧϓϥάΠϯ KFEJWJN
1ZUIPOิ EFPQMFUFKFEJ (Pิ EFPQMFUFHP KFEJ HPDPEF BVUPQFQ qBLF JTPSU ZBSQ CMBDL HPEFG JNQM JNQM HVSV HPMJOU ຊདྷΓ͍ͨ͜ͱ ਖ਼֬ͰߴͳϨεϙϯεͨΊʹ ΧϦΧϦͷνϡʔχϯά
7JN ϦϯλʔϑΥʔϚολ ϓϥάΠϯ "-& ࣗಈิ EFPQMFUF (PݴޠπʔϧϓϥάΠϯ WJNHP 1ZUIPOݴޠπʔϧϓϥάΠϯ KFEJWJN
1ZUIPOิ EFPQMFUFKFEJ (Pิ EFPQMFUFHP KFEJ HPDPEF BVUPQFQ qBLF JTPSU ZBSQ CMBDL HPEFG JNQM JNQM HVSV HPMJOU ํ͕ͳ͘Δ͜ͱ ΤσΟλຖͷݸผରԠ w ΤσΟλ͕ड͚औΓՄೳͳग़ྗ w ड͚औΓқ͍ܗࣜͷύʔε
#FGPSF"GUFS
ࣗಈิ (deoplete) LSPิ (deoplete- vim-lsp) 7JN Language Server Client (vim-lsp)
QZMT HPQMTCJOHP -41 ΤσΟλຖͷࠩΛؾʹ͢Δඞཁͳ͍ ͦͯ͠-41ʹੑೳʹد༩͢Δ ϢʔςΟϦςΟతͳ.FUIPEଘࡏ͠ɺ ੑೳ্ʹΑΓྗΛׂ͚Δ มΘͬͨ͜ͱ
ΤσΟλϢʔβ
#FGPSF"GUFS
7JN ຊདྷΓ͍ͨ͜ͱ ίʔυΛॻ͘͜ͱ WJNSDؚ·ͳ͍ $PEF
KFEJ HPDPEF BVUPQFQ qBLF JTPSU ZBSQ CMBDL HPEFG JNQM JNQM
HVSV HPMJOU ϦϯλʔϑΥʔϚολ ϓϥάΠϯ "-& ࣗಈิ EFPQMFUF (PݴޠπʔϧϓϥάΠϯ WJNHP 1ZUIPOݴޠπʔϧϓϥάΠϯ KFEJWJN 1ZUIPOิ EFPQMFUFKFEJ (Pิ EFPQMFUFHP ํ͕ͳ͘Δ͜ͱ ָ͍͠ ݴޠϓϥάΠϯຖͷઃఆ w දࣔಈ࡞Φϓγϣϯ w ίϚϯυͷΩʔόΠϯυ
7JN ϦϯλʔϑΥʔϚολ ϓϥάΠϯ "-& ࣗಈิ EFPQMFUF (PݴޠπʔϧϓϥάΠϯ WJNHP 1ZUIPOݴޠπʔϧϓϥάΠϯ KFEJWJN
1ZUIPOิ EFPQMFUFKFEJ (Pิ EFPQMFUFHP KFEJ HPDPEF BVUPQFQ qBLF JTPSU ZBSQ CMBDL HPEFG JNQM JNQM HVSV HPMJOU ํ͕ͳ͘Δ͜ͱ ָ͍͠ ݸผͷίϚϯυͷΠϯετʔϧ w Ϧϯλʔ w ϑΥʔϚολʔ w ࣗಈิ w ͦͷଞ੩తղੳ
#FGPSF"GUFS
ࣗಈิ (deoplete) LSPิ (deoplete- vim-lsp) QZMT HPQMTCJOHP 7JN Language Server
Client (vim-lsp) -41 มΘͬͨ͜ͱ ͲͷݴޠͰ-BOHVBHF4FSWFS$MJFOUͰର ԠͰ͖Δ w ΠϯετʔϧηοτΞοϓͷলྗԽ w ݴޠຖͷݸผઃఆͷ౷Ұ
ࣗಈิ (deoplete) LSPิ (deoplete- vim-lsp) 7JN Language Server Client (vim-lsp)
QZMT HPQMTCJOHP -41 มΘͬͨ͜ͱ ݴޠ։ൃπʔϧͷ౷߹ w ΠϯετʔϧηοτΞοϓͷলྗԽ ݴޠίϛϡχςΟ։ൃϦιʔεूதʹΑΔ ੑೳ্ w ߴ࣭ͳݴޠ։ൃػೳͷڗड
7JN ॻ͚Δʜίʔυ͕ॻ͚Δͧ $PEF มΘͬͨ͜ͱ
એ
ࣗಈิ (deoplete) LSPิ (deoplete- vim-lsp) QZMT HPQMTCJOHP Language Server Client
(vim-lsp) 7JN -41
ࣗಈิ (deoplete) QZMT HPQMTCJOHP Language Server Client (vim-lsp) 7JN -41
LSPิ (deoplete- vim-lsp)
None
·ͱΊ
(P -BOHVBHF 4FSWFS ͏͠