ぶていのログでぶログ

思い出したが吉日

rfコマンドのこれまでとこれから

[!NOTE] この記事はrfコマンド Advent Calendar 2025の25日目の記事です。 昨日はrfコマンドv1.33.0をリリースしたという記事でした。 rfコマンド Advent Calendarでは、私(buty4649)がOSSで開発しているrfコマンドの解説や推しポイント、便利な使い方を紹介していきます。

rfコマンドのこれまで

まず、rfコマンドのこれまでを振り返る。 rfコマンドのリポジトリに最初にコミットしたのは2023年4月8日 00:01:02 JST。なので、今日でだいたい1年半。実はリポジトリを作る前にCRublでPoCを作っていたりしたので、rfコマンドの"誕生"はもう少し前だけど、それがいつか覚えてないのでファーストコミットを誕生日にして良さそう。

2025年のコミット数は75件。今年の1Qは育児休暇していたが、この時には息子の手間もあんまりかからなくなっていて自由時間が増えていたが、そもそもrfコマンドを使う機会がなく、バージョンアップしたい動機が生まれなかった…。やはり、常日頃使ってないと改良点が出ないのでドッグフーディングは大切。

今年のバージョンアップは9回。うち3回はクリティカルなバグフィックスやリリースフロー失敗によるもの。 v1.24.0 → v1.25.0 → v1.26.0 → v1.27.0 → v1.28.0 → v1.28.1 → v1.29.0 → v1.30.0 → v1.31.0 → v1.32.0 → v1.32.1 → v1.32.2 → v1.33.0 rfコマンドでは機能追加やバグ修正したらなるべく早くバージョンアップするという方針で運用している。そのためバージョンアップの粒度がバラバラだが、すぐに手元で最新版が使える方がドッグフーティングできるし、テンションもあがる。 今年の後半からリリースフローにtagprを組み込んだのだが、バージョンアップの心理的障壁が下がってとても良い。詳しくは来年ブログにしようと思っている。

1月にはTokyo Ruby Kaigi 12にも登壇した。rfコマンドの開発で得られたmrubyに関する知見を共有させていただいた。定期的にこのネタで発表しているのだが、そこからまたさらに改善されたので、機会があればまた発表したい。

肝心のmrubyのことを書くのを忘れていた。rfコマンドではmrubyを常にmasterブランチのバージョンで使う方針にしているので、どのバージョンかはどのバージョンに変えたというのを書きづらい。スナップショットされたバージョンの方が品質管理上良いのだろうが、masterブランチを使うことで良いこともある。それは、いち早くmrubyはフィードバックできることである。 rfコマンドでは開発時に発生したmrubyのバグをフィードバックしている。今年は8件のissueを立てて、その中でmruboのバグとしてfixされたのは5件。mrubyで~変な~プロダクトを作ってなければ、発見されないようなバグだと思うのでつくづくrfコマンドを作っていてよかったと思っている。

rfコマンドのこれから

2026年ではさらにrfコマンドを便利にするべくいろいろやっていきたい。 まず、アドカレで発覚したv1.33.0で修正しきれていないバグを修正したい。本当は昨日で全部直したかったのだけど、CI環境だけで起こるtestエラーがわからず…つらい…。 次にビルド環境の見直しをやりたい。今はビルドするためのツール全部入りDockerを使っているのだけど、これはこれで便利なのだけどやはり少々重い。また、ビルドに使っているzigのアップデートが疎かになっている要因にもなっているので、脱Dockerしたい。ついでに、リリースフローにもさらに手を入れてあれやこれしたい(脳内では出来ているけど実現できるかわからない)。 そして、継続的なアップデートもしていきたい。すでに追加したい機能はいくつかあるのでそれを実装していくのが当面の目標である。また、正規表現の処理の高速化に味をしめたので、それ以外の部分の高速化もしていきたい。早すぎる最適化にはもうならないだろうし、高速化できるポイントはわかっているのでやっていきたい。

rfコマンドアドカレの振り返り

突発的に思いつきでアドカレをやってみたが、完遂できてよかった。ネタが思いついていた前半はささっと書いて日中に公開出来ていたが、後半はネタ出しと記事を書くのが遅くなって夜中に公開になってしまったのは少し反省点。 改めてrfコマンドについて色々書いたが、気になる部分や実装当時に気がつかなかったバグを見つけるきっかけになってよかった。リリースノートしか書いてなかったが、定期的にこういう使い方集を出すのはいいかもしれないっと思ったのだった。