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
Language Server Protocol の歴史について (a.k.a. 考古学者にな...
Search
Chen
August 17, 2024
Programming
1
37
Language Server Protocol の歴史について (a.k.a. 考古学者になる方法)
Chen
August 17, 2024
Tweet
Share
More Decks by Chen
See All by Chen
Scala におけるコンパイラエラーとの付き合い方
chencmd
2
770
Other Decks in Programming
See All in Programming
macOS でできる リアルタイム動画像処理
biacco42
4
1.6k
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
1
230
Android 15 でアクションバー表示時にステータスバーが白くなってしまう問題
tonionagauzzi
0
140
讓數據說話:用 Python、Prometheus 和 Grafana 講故事
eddie
0
350
VR HMDとしてのVision Pro+ゲーム開発について
yasei_no_otoko
0
100
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
530
GitHub Actionsのキャッシュと手を挙げることの大切さとそれに必要なこと
satoshi256kbyte
5
390
Vue SFCのtemplateでTypeScriptの型を活用しよう
tsukkee
3
1.5k
PLoP 2024: The evolution of the microservice architecture pattern language
cer
PRO
0
1.6k
破壊せよ!データ破壊駆動で考えるドメインモデリング / data-destroy-driven
minodriven
16
4k
Snowflake x dbtで作るセキュアでアジャイルなデータ基盤
tsoshiro
2
420
Streams APIとTCPフロー制御 / Web Streams API and TCP flow control
tasshi
1
290
Featured
See All Featured
Building an army of robots
kneath
302
42k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
3
370
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Agile that works and the tools we love
rasmusluckow
327
21k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Unsuck your backbone
ammeep
668
57k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
107
49k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
32
1.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Transcript
Language Server Protocol の歴史について by Chen (@Chen__TS) VRC-LT #17 /
2024-08-17
君だれ? 通称: ちぇん Twitter: @Chen__TS GitHub: @ChenCMD お仕事: バックエンドエンジニア 都内のとある会社でハイトラフィ
ックを捌く SaaS を作っています LSP の開発は全く関係ない
そもそも Language Server Protocol って? エディタに搭載する言語拡張を共通化するためのプロトコル 従来はエディタ毎にプログラミング言語に対応するための拡張が作られて いた 言語によっては、言語サーバとして言語サポート機能のみを別プロセ スとして切り出していた
LSP の登場により言語サーバの通信仕様が各エディタで共通化され、エデ ィタの言語サポート拡張は LSP に従うだけで各エディタで動作するよう になった 頭文字を取って LSP と呼ばれている 3/21
LSP の歴史 2016 年 6 月に Microsoft が発表 TypeScript や
C# の言語サーバを参考に作られた Microsoft 社員が LSP のために C# の言語サーバに仕込みをしていた Open-Tools API という 2000 年以前に一部 IDE で使われていたプラグイン 規格も関係がある可能性がある しかし、Open-Tools API に関する情報が少なく、断言出来る証拠は見 つけることが出来なかった 4/21
ところで 5/21
これを調べるのめっちゃ大変だったんですよ 6/21
Language Server Protocol の歴史 について by Chen (@Chen__TS) 考古学 VRC-LT
#17 / 2024-08-17 7/21
遡ること約 1 週間前... VRC-LT を 1 週間後に控え、そろそろ発表準備するか~となっていた LSP についてもう少し色々な人に知ってほしいなと思い、そういう方向性 の発表をしようと思っていたが、具体的にどうするかは決まっていなかっ
た 友人が 「LSP は OmniSharp と言う C# を Vim で書けるようにするためのプ ラグインがベースとなっている」 と言ってたことを思い出し、それについ ても念の為調べてみようと思い立った 折角発表するならそれも真偽を確かめるか~となり、調査を始めた 8/21
C# ⾔語サーバ (OmniSharp) TypeScript ⾔語サーバ (TSServer) ⾔語サーバ API ⾔語サーバ API
Language Server Protocol Visual Studio Code API に乗っかる VS Code に統合 統合の経験から LSP を開発 Protocol History の確認 LSP を制定する Microsoft が用意する Protocol History というページ 大体こんな感じ 「OmniSharp」 というキーワードは出 てきたが、ベースになっているという 情報は特に記載がなかった 9/21
さてどうしよう 話をどこかで聞いたと言ってた友人に直接聞いてみた 友人 「どこで見聞きしたか覚えてないなぁ」 友人 「じゃあ考古学、しよっか...」 面白そうな匂いを嗅ぎつけて友人が集まってきた 友人がどこかで聞いた話や Protocol History
を元に、3 グループほど に分かれて 5 人掛かりで LSP の源流を辿る考古学をすることに 情報の集約用に CodiMD と言うリアルタイムに誰でも更新出来るノー トツールを利用した 10/21
ちぇんの動向 LSP の発表を取り上げた記事を見つけた その記事はもう消えていたが、Web Archive 上に残っていた ただ、新たな情報を得ることは出来なかった LSP 仕様が記載されるリポジトリの Commit
を漁り、最初は LSP が 「Open-Tools Protocol」 と呼称されていたことがわかった Open-Tools について調べてみると 「Open-Tools API」 がヒットする Open-Tools API は 2000 年以前から存在する複数の IDE で使われてい たプラグイン API 11/21
ちぇんの動向 - その 2 リポジトリ名は 2 ヶ月程度ですぐに改名されていた 時系列にするとこんな感じ 2015 年
2016 年 microsoft/OpenTools-Protocol 誕⽣ server-language-protocol に名称変更 19?? 年 Open-Tools API 誕⽣ 09/04 11/12 Open-Tools API が LSP の真の源流の可能性がある しかし、断言できるほどの証拠は見つけることが出来ず 12/21
別ルートで探してくれた友人の成果 VS Code の正確な発表日 ・ リリース日を調べてくれた ニュース記事などから見つけたらしい LSP が発表されるより前に記載された、VS Code
から言語サーバを利用す る方法に関するドキュメントを見つけてくれた これも Web Archive 上に残っていたらしい VS Code が OSS になった直後は C# と TypeScript のみしかフルサポートが 行われていなかったという情報を見つけてくれた これもニュース記事から情報を得たらしい 13/21
更に別で探してくれた友人達の成果 元々 OmniSharp について話していた友人が、OmniSharp や TypeScript の 関連から手がかりを探してくれた その Language
Server Protocol は OmniSharp という Vim のプラ グインがベースになってます。なので実は Vim 発祥なのです。 https://t.co/nRiE0MFndD — mattn (@mattn_jp)December 18, 2019 ただ、実際に OmniSharp のコードまでは読めていないため、どこま で仕様を似せているのかは不明 14/21
別で探してくれた友人達のさらなる成果 omnisharp-vim リポジトリの 1800 件超の Commit ログから手がかりを探 してくれた LSP に関連した有用な情報はあまり見つからなかった
念の為 Initial Commit や独自の言語サーバを切り出し始めた Commit のログをメモに記してくれた OmniSharp の言語サーバ切り出しをめっちゃ頑張って行っていた Microsoft 社員が居ること、その社員がある時期を境に Commit が激 減していることわかった 15/21
得られた情報の整理と推測 出揃った情報を時系列順に整理し、推測を纏めた 不要に思える情報でも纏めたことで、新たな発見に繋がった OmniSharp から言語サーバの切り出しを頑張っていた Microsoft 社員の活 動が激減した時期が、VS Code がリリースされた時期と一致していること
がわかった 実際にオンラインメモツール上に記載された時系列の一部 16/21
有識者への質問 調査過程で見つけた LSP の歴史についてツイートしていた方に LSP の源 流についての質問を飛ばした 5 年近く前のツイートに突然のリプ失礼するのですが、ちょっと LSP
の源流について調べてましてこのツイートにたどり着いた のですが、それに関する文献とかって何か合ったりしますか ね....?— ちぇっちぇ (@Chen__TS) August 8, 2024 返答には新しい情報こそ無かったが、調査結果の補強として役立った 更には、纏めた推測についても見ていただき 「時系列こそ調べたこと は無いが、概ねそんな感じだった気がする」 と言っていただいた 17/21
いざ発表準備 さて調べた結果を発表にするぞ、となったが面 白くするのが意外と難しい 怪しいことが好きそうな悪いオタク 「考古学の過程そのものを発表したら?」 18/21
まとめ インターネット上と言えど古い情報は思っている以上に失われている それらの情報を調べて纏める考古学という行為は、自分の知見、ひいては 他の人の知見をも広げ、情報を残すことに繋がる 考古学において人海戦術は非常に有効 複数にやる際はオンラインメモツールなどを活用するのがオススメ すでに消えた情報でも Web Archive に残っていることもある
単体では不要に思える情報でも、集約して整理することで新たな発見があ ることもある 19/21
これで皆さんも考古学手法がわかりましたね? 20/21
Language Server Protocol の歴史 について by Chen (@Chen__TS) Special thanks:
LT 準備: @Kory__3, @cobalt1024 考古学: @yanorei32, @lemoncmd, @ryotkak, @KOBA789, @mattn_jp 考古学者になる方法 VRC-LT #17 / 2024-08-17 21/21