Rubyの型チェックについて調べたことまとめ

created_at:
updated_at:

目次

ひとまず読んだ記事3つ紹介

  1. Rubyの型解析ライブラリSorbetを導入しました

Sorbetとは何か?から導入までを軽く紹介してくれる入門記事

  1. Rubyの型チェッカーSorbetを導入して良かったこと・悪かったこと

上の記事を書かれた人が半年後に書いてくださった記事

  1. Ruby の型チェッカーの比較

SorbetというRubyファイルに直接型を付与して記述できるRBI形式を採用しているツールと、Steepというrubyファイルとは別に型用のファイルを用意するRBS形式の2つを比較した内容をまとめている記事

GPTより

  1. Sorbet:
    1. 決済代行サービスを運営しているStripe社が公開
    2. Sorbetは、静的型チェッカーとしての機能を提供するRuby向けのツールです。Sorbetは、Rubyのコードベースに直接型アノテーションを追加(RBI形式)し、型の一貫性をチェックすることで、実行時のエラーを減らし、コードの信頼性を向上させます。
  2. Steep: Steepは、Sorbetに触発された型チェッカーで、Rubyの型アノテーションをサポートしています。Steepは、Rubyのコードに静的型チェックを導入し、安全性や信頼性を高めるのに役立ちます。rubyファイルと型ファイルは別で管理(RBS形式)
  3. TypeProf: TypeProfは、Rubyのコードを解析して、メソッドの返り値や引数の型を推論するツールです。TypeProfは、型アノテーションが不足している場合や不明確な場合に、コード内の型情報を推測するのに役立ちます。rubyファイルと型ファイルは別で管理
  4. RDL (Ruby Declarative Language): RDLは、メソッドの引数や返り値に型を指定することができるRubyのアノテーション言語です。RDLを使用すると、型情報をコードに埋め込んで静的型チェックを行うことができます。

思ったこと

自分が所属する会社では導入していないため、実際どんなものかなと思って調べてみて、いいなと思った部分もあれば、実際に自分が所属する会社のサービスに導入するかどうかを検討するほど自分はまだサービス全体を見渡せていない(サービスが大きいこともあり)なという気付きも得た。

いいなと思った点としては、実際現状コードコメントで型アノテーションのような記述をしてくださっている方もおり、個人的に記述されていたほうがコードが読みやすいなと感じる部分もあって、だったらちゃんと型チェックもしてくれるツールを入れたほうが一石二鳥感が良さそうだなと思った。

また、Sorbetは型を書いてもいいし書かなくてもいいようなので、「自分は書きたくない」という人にとっても優しそうだなと思った。

ただ、型がないほうが読みやすいという意見も一定数はあるとは思うため、こういうツールを大きめのサービスに導入する際にどういう手順で取り組んでいけばよいのか?ということも思った。

まあ、色んな人に意見を聞いてそれをまとめる役割みたいなのを担う形にはなるんだろうな。

Buy Me A Coffee