Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
個人開発発表 LT - Shinjuku.rb #97
Search
Koji NAKAMURA
January 29, 2025
Technology
910
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
個人開発発表 LT - Shinjuku.rb #97
Koji NAKAMURA
January 29, 2025
More Decks by Koji NAKAMURA
See All by Koji NAKAMURA
lldbを使ってCRubyの中を覗く
kozy4324
0
21
Lightning近況報告
kozy4324
0
300
龍昌餃子で理解するWebサーバーの並行処理モデル - 東葛.dev #9
kozy4324
1
350
Rubyで作る論理回路シミュレータの設計の話 - Kashiwa.rb #12
kozy4324
1
620
Rubyで作る論理回路シミュレータ - Shinjuku.rb #99
kozy4324
0
130
Steep導入したいRTA - Kashiwa.rb #11
kozy4324
0
240
これまで細々と作成したGemの紹介をします - Kashiwa.rb #9
kozy4324
0
320
東京Ruby会議12のお手伝いしてきた話
kozy4324
0
140
Ruby界隈を中心に2024をふりかえる - Kashiwa.rb #6
kozy4324
0
250
Other Decks in Technology
See All in Technology
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
610
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
670
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
640
Minecraft JavaのMODをSwiftで作る
1mash0
0
120
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
110
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
260
20260912_スクフェス三河
kgnkhkr
0
330
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
2026_devsumi_ozono.pdf
o3
3
450
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
200
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
1
240
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
1
280
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
410
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
500
Thoughts on Productivity
jonyablonski
76
5.4k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
680
Navigating Weather and Climate Data
rabernat
0
510
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
My Coaching Mixtape
mlcsv
0
310
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
690
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
820
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
780
What's in a price? How to price your products and services
michaelherold
247
13k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Transcript
Add-on を作って学ぶ Ruby LSP 2025.01.30 Shinjuku.rb #97 個人開発発表 LT Koji
NAKAMURA (@kozy4324)
自己紹介 こーじ (Koji NAKAMURA) • 𝕏: @kozy4324 • GitHub:@kozy4324 •
Classi株式会社所属 • Kashiwa.rb主催
前置き
https://regional.rubykaigi.org/tokyo12/
楽しかった! (当日スタッフ)
プロポーザルも 出していた
None
None
None
そらプロポーザル 通らんよ...
というわけで、
Ruby LSP の Add-on を 個人開発して来ました
ruby-lsp-rake
https://github.com/kozy4324/ruby-lsp-rake
Rake の DSL を いい感じにする君
その前に、Ruby LSP とは...
Ruby LSP • Ruby 言語のための Language Server Protocol 実装の一つ •
https://shopify.github.io/ruby-lsp/ • コード補完、構文エラー検出、ドキュメント参照、リファクタリング支援、etc… • 開発体験の向上に寄与してくれる
みなさんに質問 🙋 普段の Ruby プログラミングで利用している Language Server は? • Ruby
LSP • Solargraph • Steep • 上記以外の Language Server • RubyMine のコード支援機能を使っている
ruby-lsp-rake で出来る事 • 依存タスク部分にマウスオーバーでそのタ スク定義元リンクと desc を表示 (hover feature) •
依存タスクで Command + click することで タスク定義元にジャンプ (Go-to-Definition) • タスク定義直上の [▶ Run in Terminal ] ク リックでタスク実行 (Code Lens)
ruby-lsp-rake を作ったモチベーション • Ruby LSP と仲良くなりたかった • ドキュメント読んだら「Rake 用の Add-on
作れそうだな」って思った ◦ https://shopify.github.io/ruby-lsp/add-ons.html • まだ全体的に Ruby LSP の Add-on 事例が少なそうって思った ◦ Add-on を作る側からのコントリビューションチャンスでは!?という思惑
ruby-lsp-rake を作り出して分かったこと • Ruby LSP における Add-on の位置付け ◦ フレームワークやライブラリごとにある
DSL を解決するための仕組み ◦ Rails の DSL を解決してくれるのは ruby-lsp-rails ◦ ruby-lsp-rspec というやつもある • Ruby LSP はパフォーマンスを最優先にしている ◦ Add-on ドキュメントに「Performance over features.」とあり、開発者体験を損なわないこと ◦ Ruby 言語の Language Server 実装は古くからは Solargraph があるが、大規模なコードベースに おいてはパフォーマンス的な課題があるとかないとか。 Ruby LSP は大規模なコードベースにおいて も快適に使えるようにという意図が見える • Add-on の機構も含めて、Ruby LSP は絶賛開発中 ◦ > The Ruby LSP add-on system is currently experimental and subject to changes in the API ◦ Ruby LSP の Issues もいつ見ても常に 100 件以上ある ◦ コントリビューションチャンスがいっぱい!
Add-on 開発のススメ • 「一つのことをうまくやる」でプロダクトとして成立する ◦ Unix哲学ですね • 小さく始められる ◦ ruby-lsp-rake
は 2024/11/29 に Initial commit 、2024/11/30 に v0.1.0 をリリース • 小さくてもちゃんとフルサイクル開発になる ◦ 次に実装する機能を考えて、 ◦ 実装して、 ◦ テストして、 ◦ リリースして、 ◦ 運用して、 ◦ フィードバックもらって、 ◦ また次に実装する機能を考える ◦ プロダクト開発のサイクルを一人で 1周経験することはとてもいいことだと思う
Ruby LSP Add-on の作り方 • ぶっちゃけまだよく分からん • 基本 ruby-lsp-rails の実装をパクる
• テストの書き方など、何もドキュメント化されていないので仕方がない
まとめ
まとめ • ちゃんと個人開発をしてからプロポーザルを書こう • Add-on 開発、フルサイクル開発は楽しい • Ruby LSP コントリビューションチャンスがあるのでやっていこう!
ありがとうございました!