2025年のrbsアップデートまとめ

2024年のrbsアップデートまとめ - スペクトラム 去年に引き続き記録しておきます。 RBS v3.9リリース マジックコメントresolve-type-names: falseの導入 RBSの型名は、基本的にはRubyと同じよう省略できます。 この省略された名前はいわば相対パスだとすると…

焙煎体験に参加した

以前の記事コーヒーにハマっている - スペクトラムでも書いたが、いまだにコーヒーはおもしろい。 SCAJ2025も行ったし、いろんなコーヒーショップに足を運んだり豆を買ったりしている。 そんななか、焙煎香に誘われて見つけたコーヒー屋さんというか焙煎所で…

2025年なにしたっけ

去年の抱負 去年の末、来年の抱負を書いた。 2024年なにしたっけ - スペクトラム もうちょっとブログを書く。 これを地味に覚えてはいて、せめて1ヶ月に1本くらいブログを書こうと思っていた。 が、7月に書き忘れてた。無念。 2025年 ブログに書いていないこ…

長崎旅行

10月に家族で長崎旅行に行ってきた。 家族が写っている写真はみてねにあげているが、家族が全く写っていない写真もチラチラ撮っていたので記録用に残しておく。 Day 1 9割家族を撮っていたのでDay 1は1枚しかなかった。。。 HND -> NGS 飛行機は毎回ギリギリ…

Software Design 2025年11月号に2ページ弱掲載されました。

gihyo.jp 連載「Ruby×静的型付け戦略」のコーナーにTypeProfの記事が掲載されており、末尾になぜか私のツールであるrubocop-on-rbsとRaaPについて唐突に掲載されている形です。 原稿最終調整時に私の祖母が亡くなりました。 時間的に調整が難しくなったので…

RBSファイルに書いてある型をRuby側に書いてくれるやつ

gemの開発などで、RBSファイルに型を書いていたがrbs-inlineに移行したい場合、一つ一つ書き写すことになる。 こういうことはある程度ありそうだなと思ってツールを作った。 github.com class Foo CONST = Object.new attr_reader :foo def bar end end に c…

型は人の祈りである

Software Design 2025年10月号に寄稿しました gihyo.jp Software Designの"Ruby×静的型付け戦略"という連載に4ページ寄稿させていただきました。 soutaroさんからの紹介でRBSの周りを取り巻く人々の記事ということで、会社プロダクトでの利用事例という体に…

RBSコミッターになった

これまで なぜかPRがmergeできるwrite権限を一昨年のクリスマスにもらっていた。 RBSリポジトリーのwrite権をRubyコミッター全員持っていた方がいいだろうという話題があがった時に、ついでにいただいた形だった。 この時点では、よくわからないけど貰えるも…

Vibe Coding時代に重要そうな基礎コーディング技術

Vibe Coding時代が気がついたら幕を上げてたのでとりあえず試してみた。 本記事では、基本的にAIエージェント用のチャット欄だけで全ての操作を行うことをVibe Codingと呼ぶことにする。 初めからプロダクトを作るのにもVibe Codingは適してそうだが、今回は…

コーヒーにハマっている

去年の2024年7月くらいからハンドドリップコーヒーにハマって、現在も続いているので現状を記録しておく。 ハンドドリップコーヒーとは 簡単に言うとコーヒーの粉にお湯を注いで抽出し、コーヒーを飲むという体験のこと。 店によってはフィルターコーヒーと…

型システムのしくみ / 遠藤侑介

型システムのしくみが発売されました。 本書の概要は著者の記事をご覧ください。 実は本書のレビューに参加していました。 今回は、発売前の本のレビューに参加したこと自体が初めての経験だったので、日記を書いておこうと思います。 献本もいただきました…

SteepにGitHub Actionsフォーマットを導入した

https://github.com/soutaro/steep/pull/1516 まあそれだけなんだけど rubocopには--format githubというオプションがある。 このオプションをつけると、指摘点が1行のシンプルなフォーマットのテキストで表示されると思う。 このフォーマットはGitHub Actio…

paranoia gem用の型を生成する

一言で言うと orthoses-paranoiaを作った。 背景 以下のようなARコードがあったとして、with_deletedの型が分からないので後のコードが全てuntypedになってしまう問題があった。 User.with_deleted.comments.where(...) # ↑ここはUser型 # ↑ここはUser::Acti…

2024年のrbsアップデートまとめ

ruby 3.4リリース Ruby 3.4が出て2月ほどが経ちましたね。 私は去年のRuby 3.3リリースに合わせたRBSの記事を書かせていただきました。 新機能ラッシュ! RBS最新情報をキャッチアップ | gihyo.jp 今年はこの企画自体がなかったので個人のブログで簡単に書い…

swiftgen的なものをRubyで書いてみたがイマイチだったので供養

SwiftGenを使うと、翻訳ファイル等の入力からテンプレートを通して型付きのコードが得られるというツールがある。 この考えを応用して、 I18n.t('foo.bar.baz') を L10n.foo.bar.baz と書けたら、 重複定義があったらRubyでエラーになるはずなので気付ける …

RuboCop on RBS on gem_rbs_collection

gem_rbs_collectionでもrubocop-on-rbsを使っていただけることになり、導入したので紹介します。 gem_rbs_collectionへPR送る方へ RBSを修正してPRを送るとCIから指摘を受けることがあります。 GitHub上でRBSに対してRuboCopが指摘を出している例 rubocop-on…

2024年なにしたっけ

1月 aws-sdkのrbsサポートがリリースされた。 ksss9.hatenablog.com あれからちょこっとPR送ったりレビューを頼まれたりしている。 2月 raapを作り始めた。今もrbsリポジトリのテストに一部組み込まれている。つまりruby/rubyのbundled_gemのテストで毎回走…

RuboCop on RBS on rbs

rbsリポジトリでrubocop-on-rbsが導入された。 Introduce rubocop-on-rbs by ksss · Pull Request #1899 · ruby/rbs · GitHub RuboCopはすでにrbsリポジトリで使われていて、rubyファイルに対しての指摘はすでに行われていた。この変更によってRBSファイルに…

RuboCop on RBS

rubocopをRBSファイルにも効かせたい - スペクトラム で作ってたものが大体できてきて、rbs v3.5もリリースされたので公開できるようになりました。 これでRuboCopをRBSファイルにも使用できるようになりました。 github.com 例えば class Foo def foo: () -…

raapがrbsで使われ始めた

RBSをテストコードにするツールraapがrbsリポジトリで使われ始めた。 Introduce RaaP for testing of signature by ksss · Pull Request #1810 · ruby/rbs · GitHub rbsのCIでraapを走らせている。 現状はSet classでしか使っていないが、これから範囲を広げ…

rubocopをRBSファイルにも効かせたい

背景 RBSも利用が増えてくると、細かい"こうしたほうがいい"が出てくることがあると予想される。 例えば、 インデント initializeの返り値はvoidを使う untyped?ではなくuntypedを使う メソッド引数にvoidを使わない などなど。 こうしたことを指摘するツー…

ブロック引数と返り値は似ている

RaaPを開発していて、ブロック引数の扱いについて解像度が上がったのでメモとして書いておく。 これまでの考え方 Array#mapを例に見てみる。 [1, 2, 3].map do |i| i.to_s end これまではこう考えていた。 メソッドの最終的な返り値のためには、iはぶっちゃ…

RubyKaigiで発表しないけどスライド書いた

speakerdeck.com RBSをテストコードにする - スペクトラム で紹介したRaaPがいい感じに育ってきた。 RubyKaigiごっことして紹介スライドを作った。とくにしゃべる予定はない。 Coverage 大きなアップデートとしては、Coverage機能を追加し、デフォルトで有効…

RBSのIntersection(&)について

自分向けのまとめです。 Intersection(&) RBSにはIntersection型があります。Object & _Each[Integer]のように&で繋げている型のことです。 その前にUnion(|)とは String | Symbolのように、|で繋いだ型をUnion型と言います。こちらは理解は簡単です。 「Str…

RBSがテストになるとおもしろいんじゃないか日記6

前回までのあらすじ RBSがテストになるとおもしろいんじゃないか日記1 - スペクトラム RBSがテストになるとおもしろいんじゃないか日記2 - スペクトラム RBSがテストになるとおもしろいんじゃないか日記3 - スペクトラム RBSがテストになるとおもしろいんじ…

RBSがテストになるとおもしろいんじゃないか日記5

前回までのあらすじ RBSがテストになるとおもしろいんじゃないか日記1 - スペクトラム RBSがテストになるとおもしろいんじゃないか日記2 - スペクトラム RBSがテストになるとおもしろいんじゃないか日記3 - スペクトラム RBSがテストになるとおもしろいんじ…

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がテストになるとおもしろいんじゃないか日記4

前回までのあらすじ RBSがテストになるとおもしろいんじゃないか日記1 - スペクトラム RBSがテストになるとおもしろいんじゃないか日記2 - スペクトラム RBSがテストになるとおもしろいんじゃないか日記3 - スペクトラム 間が開いた 結構間が開いてしまった…

RBSがテストになるとおもしろいんじゃないか日記3

前回までのあらすじ RBSがテストになるとおもしろいんじゃないか日記1 - スペクトラム RBSがテストになるとおもしろいんじゃないか日記2 - スペクトラム メソッド型 前回までで、1つの型について生成できる道筋をつけた。 今回の目標は(Integer) -> Integer…

RBSがテストになるとおもしろいんじゃないか日記2

前回 RBSがテストになるとおもしろいんじゃないか日記1 - スペクトラム 前回で型からランダムな値を作ってテストに使うと言うアイデアについて考えた。 では型からランダムな値を作るというパーツについて考えていこう。 型からインスタンスを作る作戦 例え…