Upgrade to Pro — share decks privately, control downloads, hide ads and more …

個人開発発表 LT - Shinjuku.rb #97

個人開発発表 LT - Shinjuku.rb #97

Koji NAKAMURA

January 29, 2025
Tweet

More Decks by Koji NAKAMURA

Other Decks in Technology

Transcript

  1. Ruby LSP • Ruby 言語のための Language Server Protocol 実装の一つ •

    https://shopify.github.io/ruby-lsp/ • コード補完、構文エラー検出、ドキュメント参照、リファクタリング支援、etc… • 開発体験の向上に寄与してくれる
  2. みなさんに質問 🙋 普段の Ruby プログラミングで利用している Language Server は? • Ruby

    LSP • Solargraph • Steep • 上記以外の Language Server • RubyMine のコード支援機能を使っている
  3. ruby-lsp-rake で出来る事 • 依存タスク部分にマウスオーバーでそのタ スク定義元リンクと desc を表示 (hover feature) •

    依存タスクで Command + click することで タスク定義元にジャンプ (Go-to-Definition) • タスク定義直上の [▶ Run in Terminal ] ク リックでタスク実行 (Code Lens)
  4. ruby-lsp-rake を作ったモチベーション • Ruby LSP と仲良くなりたかった • ドキュメント読んだら「Rake 用の Add-on

    作れそうだな」って思った ◦ https://shopify.github.io/ruby-lsp/add-ons.html • まだ全体的に Ruby LSP の Add-on 事例が少なそうって思った ◦ Add-on を作る側からのコントリビューションチャンスでは!?という思惑
  5. 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 件以上ある ◦ コントリビューションチャンスがいっぱい!
  6. Add-on 開発のススメ • 「一つのことをうまくやる」でプロダクトとして成立する ◦ Unix哲学ですね • 小さく始められる ◦ ruby-lsp-rake

    は 2024/11/29 に Initial commit 、2024/11/30 に v0.1.0 をリリース • 小さくてもちゃんとフルサイクル開発になる ◦ 次に実装する機能を考えて、 ◦ 実装して、 ◦ テストして、 ◦ リリースして、 ◦ 運用して、 ◦ フィードバックもらって、 ◦ また次に実装する機能を考える ◦ プロダクト開発のサイクルを一人で 1周経験することはとてもいいことだと思う
  7. Ruby LSP Add-on の作り方 • ぶっちゃけまだよく分からん • 基本 ruby-lsp-rails の実装をパクる

    • テストの書き方など、何もドキュメント化されていないので仕方がない