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
Toshikazu Ohashi
January 31, 2019
Programming
5
2.1k
Go Language Server 使うべし
Go(Un)Conference(Goあんこ)LT大会 5kg
Toshikazu Ohashi
January 31, 2019
Tweet
Share
More Decks by Toshikazu Ohashi
See All by Toshikazu Ohashi
無自覚にメンバーの心理的安全性を奪っていた経験から得た学び
lighttiger2505
159
210k
黒画面が最高のしごと道具である3つの理由
lighttiger2505
0
2.1k
Golangで作るSQL Language Server(sqls)
lighttiger2505
1
900
Connect with many developers from the small plugin
lighttiger2505
0
400
作ってわかる現代のVimのAutoComplete ~そしてVimConf2019へ~
lighttiger2505
3
1.7k
自社サービスのDjangoを 1.3から1.11(LTS)に アップグレードするまでの道のり
lighttiger2505
6
3.6k
LSPがもたらしたVimプラグインの変化に思いを馳せる
lighttiger2505
2
1.4k
ターミナルアプリケーションとしてのVim
lighttiger2505
0
570
Goで作るインタラクティブなCLIコマンドとそのデザイン
lighttiger2505
0
870
Other Decks in Programming
See All in Programming
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
260
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
1
310
リバースエンジニアリング新時代へ! GhidraとClaude DesktopをMCPで繋ぐ/findy202507
tkmru
3
1k
AI コーディングエージェントの時代へ:JetBrains が描く開発の未来
masaruhr
1
210
CDK引数設計道場100本ノック
badmintoncryer
2
490
20250708_JAWS_opscdk
takuyay0ne
2
130
PHPカンファレンス関西2025 基調講演
sugimotokei
4
320
Modern Angular with Signals and Signal Store:New Rules for Your Architecture @enterJS Advanced Angular Day 2025
manfredsteyer
PRO
0
270
Porting a visionOS App to Android XR
akkeylab
0
760
ふつうの技術スタックでアート作品を作ってみる
akira888
1
1.3k
React は次の10年を生き残れるか:3つのトレンドから考える
oukayuka
33
11k
Rails Frontend Evolution: It Was a Setup All Along
skryukov
0
280
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
We Have a Design System, Now What?
morganepeng
53
7.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
How STYLIGHT went responsive
nonsquared
100
5.6k
The Language of Interfaces
destraynor
158
25k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Building Adaptive Systems
keathley
43
2.7k
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 ͏͠