Slide 1

Slide 1 text

 Add-on を作って学ぶ Ruby LSP 2025.01.30 Shinjuku.rb #97 個人開発発表 LT Koji NAKAMURA (@kozy4324)

Slide 2

Slide 2 text

自己紹介 こーじ (Koji NAKAMURA) ● 𝕏: @kozy4324 ● GitHub:@kozy4324 ● Classi株式会社所属 ● Kashiwa.rb主催

Slide 3

Slide 3 text

前置き

Slide 4

Slide 4 text

https://regional.rubykaigi.org/tokyo12/

Slide 5

Slide 5 text

楽しかった! (当日スタッフ)

Slide 6

Slide 6 text

プロポーザルも 出していた

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

そらプロポーザル 通らんよ...

Slide 11

Slide 11 text

というわけで、

Slide 12

Slide 12 text

Ruby LSP の Add-on を 個人開発して来ました

Slide 13

Slide 13 text

ruby-lsp-rake

Slide 14

Slide 14 text

https://github.com/kozy4324/ruby-lsp-rake

Slide 15

Slide 15 text

Rake の DSL を いい感じにする君

Slide 16

Slide 16 text

その前に、Ruby LSP とは...

Slide 17

Slide 17 text

Ruby LSP ● Ruby 言語のための Language Server Protocol 実装の一つ ● https://shopify.github.io/ruby-lsp/ ● コード補完、構文エラー検出、ドキュメント参照、リファクタリング支援、etc… ● 開発体験の向上に寄与してくれる

Slide 18

Slide 18 text

みなさんに質問 🙋 普段の Ruby プログラミングで利用している Language Server は? ● Ruby LSP ● Solargraph ● Steep ● 上記以外の Language Server ● RubyMine のコード支援機能を使っている

Slide 19

Slide 19 text

ruby-lsp-rake で出来る事 ● 依存タスク部分にマウスオーバーでそのタ スク定義元リンクと desc を表示 (hover feature) ● 依存タスクで Command + click することで タスク定義元にジャンプ (Go-to-Definition) ● タスク定義直上の [▶ Run in Terminal ] ク リックでタスク実行 (Code Lens)

Slide 20

Slide 20 text

ruby-lsp-rake を作ったモチベーション ● Ruby LSP と仲良くなりたかった ● ドキュメント読んだら「Rake 用の Add-on 作れそうだな」って思った ○ https://shopify.github.io/ruby-lsp/add-ons.html ● まだ全体的に Ruby LSP の Add-on 事例が少なそうって思った ○ Add-on を作る側からのコントリビューションチャンスでは!?という思惑

Slide 21

Slide 21 text

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 件以上ある ○ コントリビューションチャンスがいっぱい!

Slide 22

Slide 22 text

Add-on 開発のススメ ● 「一つのことをうまくやる」でプロダクトとして成立する ○ Unix哲学ですね ● 小さく始められる ○ ruby-lsp-rake は 2024/11/29 に Initial commit 、2024/11/30 に v0.1.0 をリリース ● 小さくてもちゃんとフルサイクル開発になる ○ 次に実装する機能を考えて、 ○ 実装して、 ○ テストして、 ○ リリースして、 ○ 運用して、 ○ フィードバックもらって、 ○ また次に実装する機能を考える ○ プロダクト開発のサイクルを一人で 1周経験することはとてもいいことだと思う

Slide 23

Slide 23 text

Ruby LSP Add-on の作り方 ● ぶっちゃけまだよく分からん ● 基本 ruby-lsp-rails の実装をパクる ● テストの書き方など、何もドキュメント化されていないので仕方がない

Slide 24

Slide 24 text

まとめ

Slide 25

Slide 25 text

まとめ ● ちゃんと個人開発をしてからプロポーザルを書こう ● Add-on 開発、フルサイクル開発は楽しい ● Ruby LSP コントリビューションチャンスがあるのでやっていこう!

Slide 26

Slide 26 text

ありがとうございました!