TypeProfのcoc.nvim extensionを作っている

はじめに

RubyKaigi 2025に参加した際に聴いた「Writing Ruby Scripts with TypeProf」を聴いて、使っているcoc.nvim向けにTypeProfが利用できるextensionが欲しくなったので作っているという話です

つまりKaigiEffectです

rubykaigi.org

 

経緯

デモを見て欲しくなったので作っている以上のことはないですね

他に理由があるとしたら、普段使っているcoc-solargraphでメソッドの引数が足りない場合などに警告を出してくれない(本当は設定でどうにかなる?)ことが微妙に不満で

デモやスライドを見る限りだとそういった場合でも警告が出力されていそうだったのが欲しくなった要因の一つですね

 

あとLSP周りの知識は全くなかったのでそのあたりの勉強もかねてやってみたいと思ったのもあるかもしれません

 

作っているもの

github.com

 

基本的にはGemfileにTypeProfが追加されていることを想定した作りになっています

 

実装にあたっては以下のcoc.nvimの雛型を使っており、そのおかげでTypeProfとの設定周りに注力できたので良い感じでしたね

github.com

 

定義ジャンプとか参照先の表示、一括リネームなどは一通り動くようになってます

 

Post by @S_H_@gamelinks007.net
View on Mastodon

gamelinks007.net

 

あとメソッドの返り値などを元に型情報が表示されたりとかも

 

Post by @S_H_@gamelinks007.net
View on Mastodon

gamelinks007.net

 

 

実際に使ってみて

coc-solargraphと組み合わせて試してみていますが、意外といい感じですね

 

たとえば以下のようにクラス内で定義されていないメソッドが書かれているとエラーが表示されたり

 

 

こんな感じで型エラーが表示されていたり

 

 

メソッドの引数が多い場合などもエラーが出ており助かってますね

 

ただ、coc-solargraphに型の情報の表示が取られているのか以下のような引数や返り値をベースに型の情報が表示されないことがあるので、そこだけ何かしら考えないとなぁとなってます

 

 

今後

とりあえず、動くものはできたので仕事とかOSS業とかで使いつつ、バグとか遭遇しないか試していきたいですね