タグ

rbsに関するiga_kのブックマーク (21)

  • 不要な処理が実行速度を速くする謎を追う - Money Forward Developers Blog

    こんにちは。 id:Pocke です。マネーフォワードでは Rails を用いた Web アプリケーションの開発と、RBS という Ruby の静的型システムの開発を行っています。 最近 RBS の開発をする中で、「不要な処理を削除すると実行速度が遅くなる」という不思議な現象に遭遇しました。この記事ではその現象を解説しようと思います。 なおこの記事は Ruby の知識を前提としないように執筆されており、Ruby の知識が必要となるところには注釈を加えて補足しています。 普段 Ruby を書かない方にも読んでいただければ幸いです。 問題を引き起こした変更 今回の問題は、RBS のメモリ使用量の削減を行っている中で遭遇しました。まずはどんな変更を行おうとしていたかを解説します。 変更の動機 最近私は RBS のメモリ使用量の削減に取り組んでいます。1 その取り組みの中で、RBS のパーサーが作

    不要な処理が実行速度を速くする謎を追う - Money Forward Developers Blog
    iga_k
    iga_k 2024/09/26
    調査して解決までいくのすご〜い!
  • いかにして動的型付けのRubyに静的な型検査を持ち込むか? SteepとRBSが目指すもの - Findy Engineer Lab

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

    いかにして動的型付けのRubyに静的な型検査を持ち込むか? SteepとRBSが目指すもの - Findy Engineer Lab
    iga_k
    iga_k 2024/06/18
    soutaroさん!
  • raapがrbsで使われ始めた - スペクトラム

    RBSをテストコードにするツールraapがrbsリポジトリで使われ始めた。 Introduce RaaP for testing of signature by ksss · Pull Request #1810 · ruby/rbs · GitHub rbsのCIでraapを走らせている。 現状はSet classでしか使っていないが、これから範囲を広げていきたい。 経緯 raapを作っていたら、「これはRBS::UnitTestを自動化するツールだな」と思い始めてきた。 テストコードを手で書くより、自動で100パターン実行してくれた方が、管理するものが減って、人間の思い込みを排除した確認ができ、早く、変更にも強い。 もともとrbsリポジトリに置かれた記述されたRBSファイルに対するテスト("RBSの記述は正しいか"を確認するコード)は結構カバレッジが低い部分もあり、これを埋めたかった。

    raapがrbsで使われ始めた - スペクトラム
    iga_k
    iga_k 2024/06/01
  • 新機能ラッシュ! 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
    iga_k
    iga_k 2024/01/26
  • rbs collectionの基本と構成要素 - Money Forward Developers Blog

    こんにちは。 id:Pocke です。マネーフォワードでは、クラウド会計Plus の開発と、今回お話する RBS のメンテナンスを行っています。 最近、福井県は若狭にある年縞博物館に行って楽しんできました。1 さてこの記事では rbs collection の基と構成要素を解説します。 この記事を読むことで rbs collection がどのようなもので何をしているのかが理解できるようになるでしょう。 この記事では記事執筆時点での最新の、rbs v3.2.1 を対象としています。 rbs collection の基的な使い方 rbs collection の基的な使い方は簡単です。 設定ファイルの生成 まず、rbs collection initコマンドで設定ファイルを生成します。この生成は rbs collection を使い始める初回にのみ行います。 $ rbs collect

    rbs collectionの基本と構成要素 - Money Forward Developers Blog
    iga_k
    iga_k 2023/09/15
    pockeさんのRBS解説
  • 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
  • 数クリックでSteepを試せる環境を作った - pockestrap

    こんにちは。pockeです。今回は、GitHub Codespacesを利用して数クリックでSteepを試せる環境を作ったので紹介します。 使い方 pocke/steep-codespacesにアクセスする。 このリポジトリをGitHub Codespacesで開く。 Steepが有効となったVS Codeが起動する。 と言った感じでSteepを試せます。次のようにVS Codeが起動し、型エラーの表示や補完がされます。 型エラーの表示 メソッドの補完 なおGitHub CodeSpacesの無料枠を超える場合、課金が発生するのでご注意ください。 何故作ったか RBSやSteepを手軽に試せる環境を作りたかったためです。 それらを手元の環境にインストールして試すのは、Steepに慣れない人にとっては色々調べることがあり、ハードルが高いです。 またSteepに慣れた人にとっても、環境構築をせ

    数クリックでSteepを試せる環境を作った - pockestrap
  • Railsプロジェクトへの「頑張らない型導入」のすすめ - メドピア開発者ブログ

    こんにちは。サーバーサイドエンジニアの三村(@t_mimura)です。 主に保険薬局と患者さまを繋ぐ「かかりつけ薬局」化支援アプリ kakariのサーバーサイド開発(Ruby on Rails)を担当しています。 突然ですが! この度kakariプロジェクトは「型導入」をしました! kakariのRailsリポジトリに型導入PRがマージされた様子 皆さんのプロジェクトは「型導入」していますか? 「型導入」しているRailsプロジェクトはまだ少ないのではないでしょうか なぜ型導入しないのか 型を導入すると何かしらが便利になることは分かっているのに何故やらないのでしょうか(煽り気味) 「型の恩恵」と「型を自分たちで書くコスト」の2点を比較していませんか? RubyKaigi 2023開催前の私がまさしくそう考えていました。 当にその2点を比較するべきなのかをここで再考してみましょう。 「型導

    Railsプロジェクトへの「頑張らない型導入」のすすめ - メドピア開発者ブログ
  • テストを実行してRubyの型情報を集めるやつを作った - スペクトラム

    イントロダクション 「テストを走らせて型情報を収集すればいいんじゃない?」そのアイデア自体は話題に上がることが多かったかと思われますが、観測範囲では前例がないように見えます。そこで、実際に作ってこそ見える世界があると思い動くものを実装してみました。 Orthoses::Trace github.com orthosesはRBSを生成するための機能を作るフレームワークで、この機能の一つとしてOrthoses::Traceというミドルウェアを実装しました。 例 例題として、rack-testというgemのRBSを生成したいとします。 その場合の生成コードをOrthoses::Traceを使って以下のように準備します。 https://github.com/ksss/orthoses/blob/db80d506c5fb02dadaa0ae303e0761ba0a543f6f/examples/r

    テストを実行してRubyの型情報を集めるやつを作った - スペクトラム
    iga_k
    iga_k 2023/04/02
    ksss先生の新作!
  • Adding Type Signatures into Ruby Docs

    Since Ruby's beginnings, its documentation has been maintained by people who help and support the language. Before the core team releases a new version …

    Adding Type Signatures into Ruby Docs
    iga_k
    iga_k 2023/04/01
    RBSからRuby documentへ型情報を反映させて良い感じのドキュメントが作れるかの提案
  • 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) | ドクセル
    iga_k
    iga_k 2023/04/01
    osyoさんの実行時に型情報を集めるライブラリ。RBSファイルを手作りする方法。
  • Railsチュートリアルのsample_appに型を導入

    ふーが といいます。普段は Ruby on Rails を利用したアプリケーション開発をしているプログラマです。 この記事は Rails アプリケーションへの型導入を試してもらうことを目的とした記事です。主に Ruby on Rails チュートリアル (以下「Rails チュートリアル」と呼称)で学ばれた方向けに「静的型とはなにか」「Ruby での型の扱い」「Rails アプリケーションへの型導入方法」を知っていただくきっかけになればうれしく思います。 この記事では実際に手を動かしながら Rails アプリケーションに型を導入する手順を体験できます。題材として Rails チュートリアルの sample_app を使用させていただいています。 前提 型を導入するにあたり前提となる部分を簡単にご紹介します。「型」と聞いてイメージがつく方はこの段落は飛ばしていただいてかまいません。 型とは何

    Railsチュートリアルのsample_appに型を導入
    iga_k
    iga_k 2023/03/17
    RBS導入時に便利なVSCode拡張
  • rubygem開発でSteepを使って型を書く時の現状のオススメ設定 (2023年3月版) - joker1007’s diary

    Rails(というかActiveRecord)に型を付けるのは大変だが、Railsが絡まないrubygemにはそんなに苦労なく型が書けるので、これからgemを書く時には型を書きたいという人向けに今のところオススメの設定を紹介します。 というか自分が忘れるのでまとめておきます。 現状とはsteep-1.3.1, rbs-2.8.4を指します。 rbsは既に3系が出ていますが、一般利用者が型検査に利用する場合はsteepを使うはずで、steepはまだrbsの3系に対応していません。また、rbs-3.0で多少変わっているところもあるので、割と寿命が短い話かもしれません。 設定例 とりあえず結論から。Steepfileとrbs_collection.yamlを修正します。 Steepfile: D = Steep::Diagnostic target :lib do signature "sig"

    rubygem開発でSteepを使って型を書く時の現状のオススメ設定 (2023年3月版) - joker1007’s diary
    iga_k
    iga_k 2023/03/15
    jokerさん流GemでのRBSの書き方
  • 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
    iga_k
    iga_k 2023/01/09
    高橋会長の記事
  • 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の関係についてのノート - クックパッド開発者ブログ
  • 今日から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 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
    iga_k
    iga_k 2022/09/01
    栗原さん!
  • RBS and Rails, Present and Future

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

    RBS and Rails, Present and Future
    iga_k
    iga_k 2022/04/01
    pockeさんの銀座Rails RBS資料
  • RBSをプロダクトに導入するまで - READYFOR Tech Blog

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

    RBSをプロダクトに導入するまで - READYFOR Tech Blog
    iga_k
    iga_k 2022/04/01
    栗原さん、良い仕事をされている!
  • そろそろRailsプロジェクトに型を導入したい人向けの資料

    すべての説明はイチRubyユーザーの個人的で期間も限定的な観測範囲に基づきます。 「Rubyには型がない」 ある日、同僚とプログラミング言語に関する雑談をしていたときに言われた一言です。 私はその日までRubyの型機能は使っていませんでした。忙しい毎日を送り、キャッチアップを疎かにしていたのです。後日このことは猛烈に反省することになります。 「Rubyには……型があるッ……!」 火がついた私はパターンマッチの時と同様にRubyの型についてキャッチアップすることにしました。そして最高の体験が待っていました。 導入した後の世界 ぶっちゃけRubyの型を導入するとどうなるのでしょうか? メチャクチャ簡単に説明すると、エディタでバグがひと目で分かるようになります。 vscodeでの画面です。なにやら赤線がついています。 === bar === barの部分にカーソルを合わせてみましょう。 「Pos

    そろそろRailsプロジェクトに型を導入したい人向けの資料
    iga_k
    iga_k 2021/08/26
    ksss先生の新作だ! ksssさんらしい詳細な調査と説明がめっちゃよい。