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
個人開発発表 LT - Shinjuku.rb #97
Search
Koji NAKAMURA
January 29, 2025
Technology
550
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
Lightning近況報告
kozy4324
0
230
龍昌餃子で理解するWebサーバーの並行処理モデル - 東葛.dev #9
kozy4324
1
310
Rubyで作る論理回路シミュレータの設計の話 - Kashiwa.rb #12
kozy4324
1
600
Rubyで作る論理回路シミュレータ - Shinjuku.rb #99
kozy4324
0
120
Steep導入したいRTA - Kashiwa.rb #11
kozy4324
0
220
これまで細々と作成したGemの紹介をします - Kashiwa.rb #9
kozy4324
0
300
東京Ruby会議12のお手伝いしてきた話
kozy4324
0
140
Ruby界隈を中心に2024をふりかえる - Kashiwa.rb #6
kozy4324
0
240
「今までで一番学びになった瞬間」発表 LT - Shinjuku.rb #96
kozy4324
0
440
Other Decks in Technology
See All in Technology
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
200
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
150
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
310
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.2k
MySQL & MySQL HeatWave Report - June 2026
freshdaz
0
230
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
10
1.7k
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
260
徹底討論!ECS vs EKS!
daitak
3
1.8k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
「軸足」は 固定しなくていい - 熱量と強みで描く、しなやかなキャリアの形
kakehashi
PRO
1
290
Multi-Agent並列開発を 安全に回すための技術 / Technology for Safely Multi-Agent Parallel Development
tooppoo
0
230
認証認可だけじゃない! ID管理の構成要素と ライフサイクルを意識しよう
ritou
1
370
Featured
See All Featured
Writing Fast Ruby
sferik
630
63k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
450
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
160
Are puppies a ranking factor?
jonoalderson
1
3.7k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
590
Building Applications with DynamoDB
mza
96
7.1k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
WENDY [Excerpt]
tessaabrams
11
38k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
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 コントリビューションチャンスがあるのでやっていこう!
ありがとうございました!