並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 75件

新着順 人気順

RBSの検索結果1 - 40 件 / 75件

  • aws-sdk-ruby配下すべてのgemにRBSが含まれた状態でリリースされました - スペクトラム

    みなさまに、RBSに関する重要なニュースを発表できることを嬉しく思います。 私の目標の一つにはRBSを当たり前の世界にするというものがあります。 この目標に対して大きなインパクトを残せたことに大変興奮しています。*1 aws-sdk-ruby配下すべてのgemにRBSが含まれた状態でリリースされました こちらは公式blogからのアナウンスです。 aws.amazon.com aws-sdk-rubyはrubygemsでの累計ダウンロードランキング2位に乗るほどの人気gemです。(aws-sdk-core) aws-sdk-rubyは現状370以上のgemのあつまりです。 このすべてのgemにRBSが含まれた状態でリリースされました。 そうです。すべてです。 rbs v3.4.0以上でご利用いただけます。 steep + vscodeの例。etagがStringであることがわかる え、なにが

      aws-sdk-ruby配下すべてのgemにRBSが含まれた状態でリリースされました - スペクトラム
    • Ruby 3の静的解析機能のRBS、TypeProf、Steep、Sorbetの関係についてのノート - クックパッド開発者ブログ

      こんにちは、フルタイムRubyコミッタとして働いてる遠藤(@mametter)です。 Ruby 3 は「静的型解析」を備えることが目標の 1 つになっています。遠藤が開発してる TypeProf は Ruby 3 の静的型解析エコシステムの中の 1 ツールです。しかし Ruby 3 の静的解析というと、RBS、TypeProf、Steep、Sorbet などいろいろなツール名が出てきてよくわからない、という声を何回か聞いたので、かんたんにまとめておきます。 3 行まとめ RBS:Ruby の型情報を扱う言語。Ruby 3 にバンドルされる。 TypeProf:型注釈のない Ruby コードを型解析するツール。Ruby 3 にバンドルされる。 Steep/Sorbet:Ruby で静的型付けのプログラミングができるツール。 詳しくはそれぞれ以下で解説します。 RBS とは RBS は、Rub

        Ruby 3の静的解析機能のRBS、TypeProf、Steep、Sorbetの関係についてのノート - クックパッド開発者ブログ
      • RBS基礎文法最速マスター - pockestrap

        RBSはRuby 3に組み込まれた、Rubyの型情報を記述する言語です。 この記事ではRBSの文法を駆け足で紹介します。 細かい話は飛ばしますが、この記事を読めば大体のケースでRBSを読み書きできるようになると思います。 事前準備 インストール まずは文法の前に、rbs gemをインストールしましょう。 Ruby 3を使っている場合、rbs gemはRuby 3に同梱されているため何もしなくても使えます。 Ruby 3未満を使っている場合でも、gem install rbsすれば使うことができます。 この記事では、rbs gem v1.0.0を対象に構文を紹介します。 $ gem install rbs Successfully installed rbs-1.0.0 1 gem installed $ rbs --version rbs 1.0.0 動作確認 書いたRBSは、rbsコマン

          RBS基礎文法最速マスター - pockestrap
        • いかにして動的型付けのRubyに静的な型検査を持ち込むか? SteepとRBSが目指すもの - Findy Engineer Lab

          Rubyをはじめとする「動的型付け」のプログラミング言語は、ソースコード中に型に関する記述が陽に出てこないことが特徴で、プログラムの実行前に(静的に)型検査をすることはありません。しかし、このようなプログラミング言語においても、大規模な開発における品質の向上や開発体験の改善、実行の高速化のために、静的な解析を活用しようという試みは多くなされてきました。この記事では、動的型付けの言語のための型検査の歴史を簡単に振り返って、現在私が開発しているRuby向けの型検査器Steepとその基盤となっている型記述言語RBSについて説明し、今後の展望を議論します。 著者:松本宗太郎さん(@soutaro) Rubyコミッター。大学院でRubyプログラムの型検査の研究に取り組み、修了後はスタートアップでWebアプリケーションの開発に従事。2017年から型検査ツールSteepの開発を始め、2019年からはRu

            いかにして動的型付けのRubyに静的な型検査を持ち込むか? SteepとRBSが目指すもの - Findy Engineer Lab
          • RailsアプリをRBS + Steepで型チェックするまでの手順 - アジャイルSEの憂鬱

            rails new してから steep check が通るまでにやってみた作業をまとめておく。 GitHub コードはGitHubで公開しているので、詳細な手順を知りたい方は参照してください。 github.com 手順 gemを入れる steepとrbs_railsをGemfileに追加する。 # Gemfile group :development do gem 'rbs_rails', require: false gem 'steep', require: false end bundle install を実行する。 $ bundle install rbs_rails のREADMEの手順に従って lib/tasks/rbs.rake を作成する。 # lib/tasks/rbs.rake require 'rbs_rails/rake_task' RbsRails::Rak

              RailsアプリをRBS + Steepで型チェックするまでの手順 - アジャイルSEの憂鬱
            • Ruby3.1 静的解析の導入で開発体験を向上させる (RBS, TypeProf)|Offers Tech Blog

              まえがき こんにちは、Offers を運営している株式会社 overflow CTO の 大谷旅人 です。 小ネタです。 弊社では Ruby/Rails をバックエンドの開発言語として採用しており、その柔軟性は開発の大きな助けとなっている面がありつつも、コードベース全体の規模増加や保守効率を考えて環境自体の見直しや、段階的な新環境への移行も行っています。 その中で、今回は Ruby での開発体験を向上させるために行っていた、静的型解析の導入に関してのお話です。 型安全性な環境(TypeScript,Rust,etc..)から Ruby に戻ってくるとやはりあっちは機構が勝手にチェックしてくれていいぞいいぞと思うわけで、 C#が dynamic 型で静的型言語なのに動的型付していたり, Python が type hints で型検査してたりを見ると、どうにかこうにか導入したいと日々思ってい

                Ruby3.1 静的解析の導入で開発体験を向上させる (RBS, TypeProf)|Offers Tech Blog
              • RBS Railsを使ってRailsアプリケーションにSteepを導入する - pockestrap

                RBS Railsを使ってRailsアプリケーションにSteepを導入するまでの解説します。 ただしこの「導入できる」というのは、解析が完走するという意味です。 型エラーを全てつぶすことや、Steepを実際の開発フローに乗っけることは私もまだできていないため、この記事ではサポートしません。 登場人物 RailsアプリケーションにSteepを導入するには、複数のプロジェクトが関連してきます。 まずはそれらをざっと紹介します。 steep gem Rubyの静的型検査器です。 rbs_rails gem RailsでRBSを使う上で必要な型定義を提供・生成するgemです。 データベースのスキーマ定義からモデルの型生成、及びroutesの定義からパスヘルパーの型生成をします。 それ以外のコードの型生成は担当範囲外です。 rbs gem ビルトインのライブラリ、及びスタンダードライブラリの型定義を

                  RBS Railsを使ってRailsアプリケーションにSteepを導入する - pockestrap
                • KibelaにRBS / Steepを導入しようと考えています | bitjourney Kibela

                  KibelaにRBS / Steep、つまり型を導入しようと考えています。ただ、後半に書きますが導入はしばらく後になると思います。2月に入ってからかなあ。 (社内向けドキュメントですが、別に隠すこともないので外部共有しています) 目次 導入する目的 導入する方針 導入する方法 導入すると何が変わるのか、どう対応する必要があるのか 導入のスケジュール 導入する目的 Kibelaの開発体験をより向上させるためです。また、 @masataka-kuwabara がRBS, RBS Rails, Steepなどの都合の良い実験台としてkibelaを使うためでもあります。 導入する方針 RBSはまだ発展途上です。そのため、Kibelaのようなある程度育ったRailsアプリケーションで型エラーをゼロに保って開発するのは、現状ではとても難しいと予想しています。 これは現状のコードベースをすべて型エラーゼ

                  • Rubyで型チェック!動かして理解するRBS入門 〜サンプルコードでわかる!Ruby 3.0の主な新機能と変更点 Part 1〜 - Qiita

                    はじめに Ruby 3.0ではRubyのコードに型定義情報を提供するRBSという仕組みが導入されます。 この記事では簡単なサンプルプログラムを通して、RBSとその周辺ツールの使い方や役割を説明します。 なお、説明する内容はあくまで初歩的な内容です。予めご了承ください。 動作確認時の実行環境 本記事の執筆時点ではまだRuby 3.0は正式にリリースされていません。 正式リリース時、または今後のバージョンアップによってこの記事の内容と実際の挙動が異なる可能性もあります。 本記事の執筆時に使用した実行環境は以下のとおりです。 Ruby 3.0.0dev (2020-11-13T16:46:08Z master 7826210541) [x86_64-darwin19] rbs 0.17.0 typeprof 0.4.2 steep 0.36.0 ただし、型チェックに関わる機能はgemとして提供さ

                      Rubyで型チェック!動かして理解するRBS入門 〜サンプルコードでわかる!Ruby 3.0の主な新機能と変更点 Part 1〜 - Qiita
                    • Rails + RBS & Steepを試してみて困ったところとか感想とか - Qiita

                      Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                        Rails + RBS & Steepを試してみて困ったところとか感想とか - Qiita
                      • RBSをプロダクトに導入するまで - READYFOR Tech Blog

                        春ですね。先程、子供の保育園での最終登園を終え、万感の思いです。 システム基盤部の栗原(ksss)です。 この度、開発しているプロダクトのコードにRubyの型チェック機能を導入しました。 私が導入までに工夫したことを紹介したいと思います。これを読んでいる皆様のプロダクトにおけるRBS導入の参考になれば幸いです。 プロダクトとエコシステムをWin-Winに 社内の開発者にRubyの型に興味を持ってもらい、使ってもらうことができれば、フィードバックを得ることができます。 このフィードバックから開発体制を改善し、ひいてはツールの不具合修正や機能改善を提案することによって、Rubyエコシステム全体に貢献できます。 そうすれば、さらに開発体制が良くなる好循環が生まれると目論んでいます。 つまり最初の興味が大事なのです。 より興味を持ってもらうことを目的に、社内でRBSハンズオンを開催しました。 RB

                          RBSをプロダクトに導入するまで - READYFOR Tech Blog
                        • ISUCON13 で rbs-inline 使ってみた - カレーの恩返し

                          ISUCON で型がパチパチっとハマった開発ができるとかなり開発体験変わってくるのでは?と思い、 ISUCON の過去問に型をつけていくのをやってみています。 モチベーションに対してもう少し詳しい記事はこちら euglena1215.hatenablog.jp まずは、初期実装の状態から挙動を変えずに型だけをつけてみることに取り組みます。 また、アプリケーションに対応する型は rbs ファイルは直接触らずに rbs-inline のみを使って生成することにしました。おそらく ISUCON 本番でも別ファイルをいじっている余裕はないと思うためです。 ISUCON13 で rbs-inline を使って steep check が通るところまで行けたので、やっていく中で感じたことやこうだったらもっと便利なのにと思ったことをまとめてみます。ちょっとしたスクリプトに対して使ってみた記事はたまに見か

                            ISUCON13 で rbs-inline 使ってみた - カレーの恩返し
                          • "RBS generation framework using Rack architecture"の予習記事 - READYFOR Tech Blog

                            システム基盤部の栗原です。 RubyKaigi2022楽しみですね。READYFORからは、私栗原から発表させていただくことになりました。 https://rubykaigi.org/2022/presentations/_ksss_.html 今回は皆様によりトークを楽しんでいただく為に、予習となる要素を集めました。 何を話すのか orthosesというライブラリーを作ったので使って下さい!というお願いをします。 orthosesは簡単に言うと、RBSの自動生成ツールです。 github.com 抱えている課題感 私は型を使った開発で得られる体験に魅せられています。コードを書いたその瞬間にバグに気づいて修正したり、複雑なロジックでもどの変数でどのオブジェクトが得られるのかエディタで確認しながら開発できるの最高だと思いませんか? Rubyでもそれ、できるんです!!! しかしながら、開発体験

                              "RBS generation framework using Rack architecture"の予習記事 - READYFOR Tech Blog
                            • 前編:YARD から rbs-inline に移行しました - Timee Product Team Blog

                              タイミーでバックエンドのテックリードをしている新谷(@euglena1215)です。 タイミーのバックエンドはモノリスの Rails を中心に構成されています。そのモノリスな Rails に書かれていた YARD を rbs-inline に一通り移行した事例を紹介します。 前編では、rbs-inline の紹介と rbs-inline への移行理由について触れ、後編では実際の移行の流れや詰まったポイント、今後の展望について触れる予定です。 rbs-inline とは RBS 活用推進の背景 移行理由 1. YARD(sord) よりも rbs-inline の方が表現力が高い 2. YARD は書いていたが yardoc は使っていなかった 3. rbs-inline が今後言語標準の機能になっていく rbs-inline とは まずは rbs-inline について簡単に紹介します。

                                前編:YARD から rbs-inline に移行しました - Timee Product Team Blog
                              • RBSからTypeScriptに変換するGem (rbs2ts) を作ってる - memo_md

                                Ruby3.0 からは、型定義を処理するための rbs gem が同梱されていて、これは外部の *.rbs ファイルに記述した内容に従って、Rubyコードの型チェックを可能にしてくれる。 github.com 最近、この RBS の型定義を TypeScript の型定義に変換できないかな〜と思い、 rbs2ts という gem を実験的に作ってる。 結構荒削りなので、細々した部分での挙動は正直怪しいが、ある程度それっぽく動くようになったので公開してある。 rubygems.org github.com Gemのいまのところの挙動 いまのところ次のような変換ができる Alias RBS type TypeofInteger = Integer type TypeofFloat = Float type TypeofNumeric = Numeric type TypeofString =

                                  RBSからTypeScriptに変換するGem (rbs2ts) を作ってる - memo_md
                                • RubyKaigi 2025 レポート: 早速「RBS::Trace」でRailsプロジェクトの型情報を自動生成してみた! - Findy Tech Blog

                                  こんにちは、Findy Freelanceの開発をしているエンジニアの@2boです。 先日、愛媛県で開催されたRubyKaigi 2025に参加してきました。ファインディのブースにお立ち寄りいただいた方、Rubyクイズに答えてくださった方、Drinkupに参加していただいた方、運営やSpeakerの皆様、ありがとうございました! おかげさまでとても楽しく過ごすことができ、興味深いセッションもたくさんありました。 本記事では、その中の1つである@sinsoku_listyさんの「Automatically generating types by running tests」で発表されていた「RBS::Trace」を早速、Findy FreelanceのRailsプロジェクトで試してみた結果と所感を紹介します。 RBS::Traceとは 実行手順 1. Gemfileへの追加 2. RSpec

                                    RubyKaigi 2025 レポート: 早速「RBS::Trace」でRailsプロジェクトの型情報を自動生成してみた! - Findy Tech Blog
                                  • YARDタグからRBSを生成する - スペクトラム

                                    YARD YARDはドキュメンテーションツールです。 Rubyのコメントに # @param [String] a # @return [void] def foo(a) end みたいな記述を見たことがありませんか? この@paramがYARDのタグ名、[String]がタグのもつ型情報です。aは引数の名前ですね。 YARDではこの型情報を元にリンクを貼ったwebページを生成したりできます。 rubydoc.infoがまさにYARDによって生成されていますね。 RBS RBSはRuby公式の型を記述する書式、およびツールの名前です。 こんなかんじです。 def foo: (String a) -> void YARD to RBS では # @param [String] a # @return [void] def foo(a) end とかかれたソースコードを読み込んで def fo

                                      YARDタグからRBSを生成する - スペクトラム
                                    • RBS::Inline を導入してみました (1) | Webシステム開発/教育ソリューションのタイムインターメディア

                                      RubyKaigi 2024 の Embedding it into Ruby code というトークで RBS::Inline が発表されてから、4ヶ月が経ちました。 その間にいくつかの導入事例、利用記事を見かけてきましたが、タイミーさんの 前編:YARD から rbs-inline に移行しました という記事を読んで、重い腰を上げて RBS::Inline を導入することにしました。 この記事では、RBS::Inline を導入するにあたってハマったところや工夫が必要だった箇所について紹介します。 通常の導入や文法についての説明は省きますので、そのあたりは 公式の Syntax guideやタイミーさんの記事を見てください。 どの構文を選ぶのか RBS::Inline ではコメント形式で型情報を記述します。 attr_* アクセサの型や定数の型、メソッドの型など、さまざまなものに型コメ

                                        RBS::Inline を導入してみました (1) | Webシステム開発/教育ソリューションのタイムインターメディア
                                      • RBS and Rails, Present and Future

                                        At Ginza Rails #43 https://ginza-rails.connpass.com/event/242685/

                                          RBS and Rails, Present and Future
                                        • Types in Ruby 3, RBS, and Sorbet · Sorbet

                                          Yesterday Square posted an article to their blog introducing RBS (Ruby Signature), a type syntax format for Ruby 3. We’d like to take a second to speak to how RBS relates to Sorbet. The short version: Sorbet will happily incorporate RBS as a way to specify type annotations, in addition to the existing syntax Sorbet supports. Stripe still has a very strong commitment to Sorbet’s continued progress

                                            Types in Ruby 3, RBS, and Sorbet · Sorbet
                                          • RubyからRBSを生成する各方法の特徴 - pockestrap

                                            この記事はRuby 3.0 Advent Calendar 18日目の記事です。 qiita.com 昨日の記事は id:Pocke さんで「ruby/rbsに取り込まれた私のパッチ」でした。 pocke.hatenablog.com この記事ではRuby 3で導入される型定義ファイルであるRBSファイルを自動生成する方法について説明します。 既存のRubyコードに対するRBSを1から書いていくのは大変です。 そのためRBSを生成するプログラムがいくつか開発されており、Ruby 3にもTypeProf、rbs prototype rb、rbs prototype runtimeの3つが同梱されます。 ところがこれら3つの特徴を解説した情報は現時点ではあまりありません。私がrbs prototypeを主に開発していることもあり、今回それぞれの特徴を記事にまとめることにしました。 前提 前提知

                                              RubyからRBSを生成する各方法の特徴 - pockestrap
                                            • RBS に最近追加された構文 - Money Forward Developers Blog

                                              こんにちは。id:Pocke です。今年は3回ぐらいサンライズ瀬戸・出雲に乗っている気がします。 この記事では RBS に最近追加された構文を紹介します。 RBS は活発に開発をされており、ここ最近も多くの機能が追加されてきました。 一方でそれらの新機能は十分に知られていません。せっかくの新機能が知られず使われていないのはもったいないですね。 この記事ではそれらの新機能から、特に構文の変更に注目して紹介します。 比較的最近となる v2.0.0 以降の構文の変更を CHANGELOG からリストアップしました。 それら構文の変更の中から、主要なものを見ていきましょう。 github.com v2.0.0 (2021-12-24) https://github.com/ruby/rbs/blob/v3.2.1/CHANGELOG.md#200-2021-12-24 Bounded Generi

                                                RBS に最近追加された構文 - Money Forward Developers Blog
                                              • 新機能ラッシュ! RBS最新情報をキャッチアップ | gihyo.jp

                                                RubyではRBSという言語で型を記述できます。Ruby 3.2から3.3では、RBSは2.8から3.4にバージョンアップしました。 RBSではこの1年でさまざまな機能追加やバグ修正が活発に行われ、520個のファイルに変更が加えられ、56,464行の追加と、26,172行の削除が行われました! 私、栗原はその内の95個のファイルに変更を加え、7474行の追加と2341行の削除に関わりました。 この記事では、この一年RBS界隈を追い続けてきた私から、RBSのアップデートを中心にRubyの型の世界の変化をまとめて紹介します。Rubyで仕事をしている方、RBSに興味はあるけど最新情報は追えていなかった方の力になれれば幸いです。 RBSとは Ruby 3.0からRubyに標準添付されている型システムの総称であり、ライブラリ名でもあります。RBSファイルは、Rubyファイルとは別のファイル・別の言語

                                                  新機能ラッシュ! RBS最新情報をキャッチアップ | gihyo.jp
                                                • Parsing RBS

                                                  RubyKaigi 2023

                                                    Parsing RBS
                                                  • Let’s collect type info during Ruby running and automatically generate an RBS file! (ja) | ドクセル

                                                    Let’s collect type info during Ruby running and automatically generate an RBS file! (ja) スライド概要 RubyKaigi 2022: https://rubykaigi.org/2022/presentations/pink_bangbi.html#day3 gem: https://github.com/osyo-manga/gem-rbs-dynamic en: https://www.docswell.com/s/pink_bangbi/5DX89K-2022-09-10-102005 現在 Ruby では開発体験を上げるための取り組みとして型情報を定義する RBS の導入や Ruby のコードを静的解析して型情報を取り出す TypeProf の開発が行われています。 そこで、わたしは Type

                                                      Let’s collect type info during Ruby running and automatically generate an RBS file! (ja) | ドクセル
                                                    • 自作gemでモンキーパッチrbsを利用する - くりにっき

                                                      コンテキスト 構成 手順 モンキーパッチrbsを使うメリット 最後に 2024/12/05 20:27追記 コンテキスト 僕が直近2〜3年以内に新しく作ったgemでは全てrbsとsteepを導入してガッツリ型を書いています。 しかし自分のgemのrbsは書けても、自分のgemが依存しているrubyの標準ライブラリのメソッドや依存している別のgemの方で型定義がなかったり足りていなかったりして steep check が通らなくて困ることがよくあります。 こういう時には https://github.com/ruby/gem_rbs_collection や https://github.com/ruby/rbs にパッチを送ればいいんですが、とはいえ本家に取り込まれるまで自分のgemの開発が止まるのはつらいのでfork版を使うことが多いでしょう。 しかし足りない型定義が多かった時にfork

                                                        自作gemでモンキーパッチrbsを利用する - くりにっき
                                                      • RBS CollectionをRailsアプリで試してみよう

                                                        Leaner 開発チームの黒曜(@kokuyouwind)です。 先週行われたRubyKaigi Takeout 2021に参加しました。今回も興味深いセッションが多かったですが、なかでもThe newsletter of RBS updatesでは型システムの進化が感じられて面白い内容でした。 発表内で紹介されていた rbs collection を使って既存 Rails アプリケーションへの型検査導入を試してみたので、本記事で手順などをまとめて紹介します。 なお今回の Rubykaigi には自分の他にころちゃん(@corocn)も参加していました。 ころちゃんは debug.gem の話を記事にまとめているので、そちらもぜひご覧ください。 rbs collection について (この節は The newsletter of RBS updates の発表内容からの抜粋・要約です)

                                                          RBS CollectionをRailsアプリで試してみよう
                                                        • RubyKaigi 2022 で動的に RBS を生成してみた話をする - Secret Garden(Instrumental)

                                                          前日の宣伝になってしまうんですが明日の RubyKaigi 2022 で動的に RBS を生成してみた話をします。 Let's collect type info during Ruby running and automaticall - RubyKaigi 2022 内容としては上に書いてある通りなんですが Ruby の実行中に型情報を収集して RBS を生成してみたって内容の話になります。 やったことに対する先出しをすると以下のように Ruby を実行しつつ RBS を出力するような gem をつくりました(つくっています)。 # sample.rb class FizzBuzz def initialize(value) @value = value end def value; @value end def apply value % 15 == 0 ? "FizzBuzz" :

                                                            RubyKaigi 2022 で動的に RBS を生成してみた話をする - Secret Garden(Instrumental)
                                                          • RubyKaigi 2024 - Let's use LLMs from Ruby 〜 Refine RBS types using LLM 〜 (Day1) - Techouse Developers Blog

                                                            Let's use LLMs from Ruby 〜 Refine RBS types using LLM 〜 こんにちは、クラウドハウス労務でバックエンドエンジニアをしているtitti-008です。 本記事では、1日目の@kokuyouwindさんによるセッション、Let's use LLMs from Ruby 〜 Refine RBS types using LLM 〜について紹介させていただきます。 セッション概要 @kokuyouwindさんは、LLM(大規模言語モデル)を使ってRBS(型構造)を推測するRBS Gooseというプロジェクトを作成しました。まだ実用段階には至っていないとのことですが、そのアイディアと実験結果について紹介されました。 それでは、セッションの内容を見ていきましょう。 LLMとはなにか LLMとは、Large Language Modelsの略称で、20

                                                              RubyKaigi 2024 - Let's use LLMs from Ruby 〜 Refine RBS types using LLM 〜 (Day1) - Techouse Developers Blog
                                                            • RBSとSteepで始める型のあるRails開発とその運用

                                                              GDG Super.init(version=6) - From Where to Wear : 모바일 개발자가 워치에서 발견한 인사이트

                                                                RBSとSteepで始める型のあるRails開発とその運用
                                                              • 作って学ぶRuby3 静的型解析・RBS入門

                                                                Ruby 3 の静的型解析について 私が業務で Ruby を書いていた時期は数年前で最近の Ruby についてキャットアップが遅れていました。 最近は Go・TypeScript など型を書くことがほとんどなので Ruby 3 系で導入された型解析について気になっていました。 Ruby って型が無いよねと肩身が狭い生活をしているので(型だけに)、Ruby でも出来らあっ!というところを見せたいと考え書いてみることにしました。 作るもの HackerNews API を利用して HackerNews の API Client を作ります。要件は以下です。 gem として実装する これはなんやかんやで私が gem を書いたことがないので勉強の一環です。特に gem で書く必要はありません rake タスクを実行すると Hacker News のトップページに相当する情報(タイトル, point

                                                                  作って学ぶRuby3 静的型解析・RBS入門
                                                                • Announcing RBS support for AWS SDK for Ruby V3 | Amazon Web Services

                                                                  AWS Developer Tools Blog Announcing RBS support for AWS SDK for Ruby V3 RBS is a language to describe the structure of Ruby programs. We are happy to announce that AWS SDK for Ruby V3 now supports RBS type signatures! RBS support is released in aws-sdk-core version 3.191.0 and in every service gem (such as aws-sdk-s3) that depends on this version of core. RBS signatures are currently code generate

                                                                    Announcing RBS support for AWS SDK for Ruby V3 | Amazon Web Services
                                                                  • GitHub - soutaro/rbs-inline: Inline RBS type declaration

                                                                    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                      GitHub - soutaro/rbs-inline: Inline RBS type declaration
                                                                    • 配属1ヶ月のインターンが勝手にRBS::Inlineを導入して怒られた - Techouse Developers Blog

                                                                      この記事は、Techouse Advent Calendar 2024 7日目です。 昨日は daiki_fujioka さんによる OIDCの仕組みを完全理解して、SaaSプロダクトに2FA機能を実装しました でした。 7日目は、澤井(aaaa777) が担当します。 今年8月から株式会社Techouseにてインターンで働いている澤井(aaaa777)です。 みなさんはRBS::Inlineをご存知でしょうか。 RBS(Rubyに型システムを導入するインターフェース言語)をコメントから生成出来るようにしたものです。 先日参加したRubykaigi 2024 follow upというイベントでRBS::Inlineを知り、これはいいものだと早速私は会社のPRに勝手にRBS::Inlineを混ぜました。 そうしたらレビューでこんなコメントが・・・ はい、当然ですね。 レビュアーの方には、RB

                                                                        配属1ヶ月のインターンが勝手にRBS::Inlineを導入して怒られた - Techouse Developers Blog
                                                                      • RBSをテストコードにする - スペクトラム

                                                                        DALL-Eより: Imagine a scene where the abstract concepts of Ruby programming and property-based testing blend harmoniously. Picture a large, glowing ruby crystal まいどお馴染み、作ってみたシリーズです。 今回は、RaaP(ラープ)というツールを作りました。RBS as a PropertyでRaaPです。 github.com RaaPはテスティングツールの一種で、RBSをそのままテストコードにみたてて実行してくれるツールです。 次のようなRBSがあったとして class Foo end class Bar def initialize: (foo: Foo) -> void def f2s: (Float) -> String end

                                                                          RBSをテストコードにする - スペクトラム
                                                                        • RuboCop on RBS - スペクトラム

                                                                          rubocopをRBSファイルにも効かせたい - スペクトラム で作ってたものが大体できてきて、rbs v3.5もリリースされたので公開できるようになりました。 これでRuboCopをRBSファイルにも使用できるようになりました。 github.com 例えば class Foo def foo: () -> void end というRBSをレビューする時「インデント入れてね」と指摘したくなりますよね。Rubyファイルならrubocopでできるのに、RBSファイルではrubocopで指摘できないという問題がありました。あるんです。きっと。というわけで、できるようにしました。 とりあえず初期バージョンでは20以上のルールを用意しています。 autocorrect(自動修正)にも対応しているので、いつものようにrubocop -aしてあげれば class Foo def foo: () ->

                                                                            RuboCop on RBS - スペクトラム
                                                                          • 後編:YARD から rbs-inline に移行しました - Timee Product Team Blog

                                                                            タイミーでバックエンドのテックリードをしている新谷(@euglena1215)です。 この記事は先日公開した「前編:YARD から rbs-inline に移行しました」の後編となっています。前編では rbs-inline の紹介、移行の目的などをまとめています。前編を読んでいない方はぜひ読んでみてください。 tech.timee.co.jp 後編では実際の移行の流れや詰まったポイント、今後の展望について紹介します。 移行の流れ 1. 型をやっていくことを表明する 2. rbs-inline のセットアップを行う 3. YARD から rbs-inline への移行を進める 4. 後片付け sord gem の削除 rbs subtract をやめる 今後の展望 型検査を通す リアルタイムな実装へのフィードバック まとめ 移行の流れ YARD が日常的に書かれている状況から YARD がほ

                                                                              後編:YARD から rbs-inline に移行しました - Timee Product Team Blog
                                                                            • Ruby typing 2024: RBS, Steep, RBS Collections, subjective feelings — brandur.org

                                                                              Ruby typing 2024: RBS, Steep, RBS Collections, subjective feelings I was writing a new Ruby gem recently, and being a strong proponent of a type checking step, I wanted to do right by the ecosystem so that anyone using it would get the full benefit of type checking against my gem’s API in their own projects, so I dug into the current state of the art to find out how that’d be done. I used Sorbet f

                                                                                Ruby typing 2024: RBS, Steep, RBS Collections, subjective feelings — brandur.org
                                                                              • 今日からneovimでRubyの型(RBS)を書き始める方法 + 実際に書いてみた感想 - joker1007’s diary

                                                                                しばらくRubyをあんま触ってない日々が続いてたんですが、オフラインでRubyKaigiに参加したKaigiEffectということでやる気が甦ってきたので、型を真面目に書くための準備を整えようと色々とやってました。 RubyKaigiでモダンなRubyの開発体験のデモをいくつか見たんですが、大体VSCodeだったのが生粋のVimmerである自分としては残念だったので、neovimでも色々やれるぞという環境を整えておきたかったのも一つです。 という訳で色々環境が整ったのでまとめていきます。 ちなみに、今回の題材はrbsとSteepによる型検査です。sorbetとかもありますが、自分としてはrbsの書式の方が圧倒的に好きなのでこちらでやっていきたいと思います。 (sorbetはRubyコードに直接書けるという大きなメリットはあるんだけど……) Steepを動かす まず対象のプロジェクトにSte

                                                                                  今日からneovimでRubyの型(RBS)を書き始める方法 + 実際に書いてみた感想 - joker1007’s diary
                                                                                • rbsのtree-sitterパーサを書いて、neovimのシンタックスハイライトに利用する - joker1007’s diary

                                                                                  皆さん型書いてますか?私はそもそもRubyを書いていません! とはいえ、最近Kaigi on RailsやRubyWorldとカンファレンスが続いていたので、ちょっとやる気を出してrbsを書くためのエコシステムに貢献しようと思い、rbs用のtree-sitterパーサを書いてみました。パーサ流行ってますからね。 github.com READMEにしたがってnvim-treesitterでパーサをインストールし、このリポジトリをneovimプラグインとしてインストールすれば、rbsのシンタックスハイライトがイカした感じになります。 しかし、しかしながらですね、これ半年ぐらい前に調べた時には誰も書いてなかったんですが、8割ぐらい書いた所で、既に別のtree-sitter-rbsがあることに気付いたんですよね……。 github.com まあ、せっかく作ったんで完全に同じ車輪の再発明だろうが、

                                                                                    rbsのtree-sitterパーサを書いて、neovimのシンタックスハイライトに利用する - joker1007’s diary